* Package:    media-gfx/img2pdf-0.4.1-r1
 * Repository: gentoo
 * Maintainer: sir.suriv@gmail.com proxy-maint@gentoo.org
 * Upstream:   josch@mister-muffin.de https://gitlab.mister-muffin.de/josch/img2pdf/issues
 * USE:        abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python3_8 python_targets_python3_9 test userland_GNU
 * FEATURES:   network-sandbox preserve-libs sandbox test userpriv usersandbox


@@@@@ PLEASE PAY ATTENTION HERE!!! @@@@@
This information may help you to understand if this is a duplicate or if this bug exists after you pushed a fix;
This ebuild was merged at the following commit:
https://github.com/gentoo/gentoo/commit/0a8af8295615e0835cad01ec26f93f950c0dfd04  (Sun Aug 22 12:22:43 UTC 2021)
@@@@@ END @@@@@



@@@@@ PLEASE PAY ATTENTION HERE!!! @@@@@
This ebuild was merged (directly or as a dependency) because of the following commit:
https://github.com/gentoo/gentoo/commit/0a8af8295615e0835cad01ec26f93f950c0dfd04
@@@@@ END @@@@@



##################
# emerge --info: #
##################
Portage 3.0.22 (python 3.9.6-final-0, default/linux/amd64/17.1, gcc-11.2.0, glibc-2.33-r7, 4.19.174-gentoo x86_64)
=================================================================
System uname: Linux-4.19.174-gentoo-x86_64-Intel-R-_Xeon-R-_CPU_E5-2650_v4_@_2.20GHz-with-glibc2.33
KiB Mem:   264046488 total, 100762340 free
KiB Swap:          0 total,         0 free
sh bash 5.1_p8
ld GNU ld (Gentoo 2.37_p1 p0) 2.37
app-shells/bash:          5.1_p8::gentoo
dev-lang/perl:            5.34.0-r2::gentoo
dev-lang/python:          2.7.18_p11::gentoo, 3.8.11::gentoo, 3.9.6_p1::gentoo, 3.10.0_rc1_p1::gentoo
dev-lang/rust:            1.54.0::gentoo
dev-util/cmake:           3.21.1::gentoo
sys-apps/baselayout:      2.7-r3::gentoo
sys-apps/openrc:          0.43.5::gentoo
sys-apps/sandbox:         2.24::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.71-r1::gentoo
sys-devel/automake:       1.16.4::gentoo
sys-devel/binutils:       2.37_p1::gentoo
sys-devel/gcc:            11.2.0::gentoo
sys-devel/gcc-config:     2.4::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.13::gentoo (virtual/os-headers)
sys-libs/glibc:           2.33-r7::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-jobs: 1
    sync-rsync-extra-opts: 
    sync-rsync-verify-max-age: 24

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* LGPL-3+"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches"
DISTDIR="/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/distdir"
EMERGE_DEFAULT_OPTS="--with-bdeps=y -1 -k -b"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms sign split-log strict test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe -march=x86-64 -frecord-gcc-switches"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0"
MAKEOPTS="-j24"
PKGDIR="/root/.packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="acl amd64 bzip2 cli crypt dri elogind fortran gdbm iconv ipv6 jumbo-build libglvnd libtirpc multilib native-symlinks ncurses nls nptl openmp pam pcre readline seccomp split-usr ssl tcpd test unicode xattr zlib" ABI_X86="64" ELIBC="glibc" KERNEL="linux" PYTHON_TARGETS="python3_8 python3_9" USERLAND="GNU"
Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RUSTFLAGS





##############################
# emerge history (qlop -mv): #
##############################
2021-08-22T14:25:24 >>> dev-cpp/eigen-3.3.9
2021-08-22T14:25:25 >>> media-libs/libjpeg-turbo-2.1.1
2021-08-22T14:25:25 >>> dev-python/olefile-0.46-r1
2021-08-22T14:25:26 >>> dev-python/lxml-4.6.3-r1
2021-08-22T14:25:27 >>> dev-lang/nasm-2.15.05
2021-08-22T14:25:29 >>> dev-python/setuptools_scm_git_archive-1.1
2021-08-22T14:25:28 >>> dev-python/cython-0.29.24
2021-08-22T14:25:36 >>> dev-python/pybind11-2.7.1
2021-08-22T14:25:58 >>> virtual/jpeg-100
2021-08-22T14:26:14 >>> app-text/qpdf-10.3.2
2021-08-22T14:26:15 >>> dev-python/pillow-8.3.1
2021-08-22T14:26:25 >>> dev-python/pikepdf-2.16.1
2021-08-22T14:26:31 >>> media-gfx/img2pdf-0.4.1-r1
2021-08-22T14:27:02 >>> app-text/poppler-data-0.4.10
2021-08-22T14:27:05 >>> app-arch/cpio-2.12-r1
2021-08-22T14:27:07 >>> media-libs/lcms-2.12
2021-08-22T14:27:04 >>> media-fonts/baekmuk-fonts-2.2-r2
2021-08-22T14:27:08 >>> dev-lang/swig-4.0.2
2021-08-22T14:27:09 >>> virtual/fortran-0
2021-08-22T14:27:10 >>> media-libs/tiff-4.3.0
2021-08-22T14:27:11 >>> media-libs/jbig2dec-0.19
2021-08-22T14:27:06 >>> dev-lang/mujs-1.1.3
2021-08-22T14:27:12 >>> dev-libs/libtommath-1.2.0
2021-08-22T14:27:13 >>> app-text/libpaper-1.1.28
2021-08-22T14:27:14 >>> net-dns/libidn-1.38-r1
2021-08-22T14:27:15 >>> media-fonts/arphicfonts-0.2.20080216.1-r2
2021-08-22T14:27:17 >>> media-libs/netpbm-10.86.22
2021-08-22T14:27:18 >>> dev-python/py-1.10.0
2021-08-22T14:27:16 >>> media-libs/libuninameslist-20200413-r2
2021-08-22T14:27:19 >>> dev-python/iniconfig-1.1.1
2021-08-22T14:27:20 >>> dev-python/more-itertools-8.8.0
2021-08-22T14:27:21 >>> dev-python/pyparsing-2.4.7-r1
2021-08-22T14:27:22 >>> dev-python/typing-extensions-3.10.0.0
2021-08-22T14:27:23 >>> dev-python/zipp-3.5.0
2021-08-22T14:27:24 >>> dev-python/execnet-1.9.0
2021-08-22T14:27:26 >>> dev-python/ply-3.11-r1
2021-08-22T14:27:27 >>> media-libs/exiftool-12.26
2021-08-22T14:27:25 >>> dev-python/psutil-5.7.3
2021-08-22T14:27:30 >>> app-arch/rpm2targz-2021.03.16
2021-08-22T14:27:31 >>> dev-python/namespace-zope-1-r1
2021-08-22T14:27:29 >>> dev-libs/gumbo-0.10.1
2021-08-22T14:28:05 >>> sci-libs/lapack-3.10.0
2021-08-22T14:28:14 >>> media-libs/openjpeg-2.4.0
2021-08-22T14:28:32 >>> dev-libs/libtomcrypt-1.18.2-r2
2021-08-22T14:28:54 >>> dev-python/pytest-forked-1.3.0-r1
2021-08-22T14:28:57 >>> media-gfx/fontforge-20201107
2021-08-22T14:29:09 >>> dev-python/packaging-21.0
2021-08-22T14:29:18 >>> dev-python/importlib_metadata-4.6.4
2021-08-22T14:29:27 >>> dev-python/pycparser-2.20-r1
2021-08-22T14:29:37 >>> media-fonts/urw-fonts-2.4.9
2021-08-22T14:29:41 >>> dev-python/zope-interface-5.4.0
2021-08-22T14:29:54 >>> virtual/lapack-3.8
2021-08-22T14:29:56 >>> virtual/blas-3.8
2021-08-22T14:29:55 >>> virtual/cblas-3.8
2021-08-22T14:29:59 >>> media-gfx/imagemagick-7.1.0.4
2021-08-22T14:30:24 >>> dev-python/pluggy-0.13.1-r1
2021-08-22T14:30:34 >>> dev-python/pdfrw-0.4_p1
2021-08-22T14:30:35 >>> dev-python/cffi-1.14.6
2021-08-22T14:30:47 >>> dev-python/attrs-21.2.0
2021-08-22T14:30:44 >>> app-text/ghostscript-gpl-9.54.0
2021-08-22T14:30:02 >>> app-text/poppler-21.08.0
2021-08-22T14:30:00 >>> app-text/mupdf-1.18.0-r4
2021-08-22T14:30:59 >>> sci-libs/arpack-3.8.0
2021-08-22T14:31:02 >>> dev-python/numpy-1.21.2
2021-08-22T14:31:28 >>> virtual/python-cffi-1
2021-08-22T14:31:32 >>> dev-python/pytest-6.2.4-r1
2021-08-22T14:31:57 >>> dev-python/scipy-1.6.3
2021-08-22T14:32:05 >>> dev-python/pycryptodome-3.10.1
2021-08-22T14:32:09 >>> dev-python/pytest-xdist-2.3.0




#######################################
# installed packages (qlist -ICvUSS): #
#######################################
acct-group/input-0-r1:0
acct-group/kvm-0-r1:0
acct-group/man-0-r1:0
acct-group/messagebus-0-r1:0
acct-group/polkitd-0-r1:0
acct-group/portage-0:0
acct-group/render-0-r1:0
acct-group/sshd-0-r1:0
acct-user/man-1-r1:0
acct-user/messagebus-0-r1:0
acct-user/polkitd-0-r1:0
acct-user/portage-0:0
acct-user/sshd-0-r1:0
app-admin/eselect-1.4.17:0 -doc -emacs -vim-syntax
app-admin/perl-cleaner-2.30:0
app-arch/bzip2-1.0.8-r1:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 split-usr -static -static-libs
app-arch/cpio-2.12-r1:0 nls
app-arch/gzip-1.10:0 -pic -static
app-arch/libarchive-3.5.1-r1:0/13 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 acl -blake2 bzip2 e2fsprogs -expat iconv -lz4 lzma -lzo -nettle -static-libs xattr zlib -zstd
app-arch/rpm2targz-2021.03.16:0
app-arch/tar-1.34:0 acl -minimal nls -selinux xattr
app-arch/unzip-6.0_p26:0 bzip2 -natspec unicode
app-arch/xz-utils-5.2.5-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 extra-filters nls split-usr -static-libs
app-arch/zstd-1.5.0:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -lz4 -static-libs threads
app-crypt/gnupg-2.2.29:0 bzip2 -doc -ldap nls readline -selinux smartcard ssl -tofu -tools -usb -user-socket -wks-server
app-crypt/gpgme-1.16.0:1/11 -common-lisp cxx -python -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -qt5 -static-libs
app-crypt/libb2-0.98.1-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -native-cflags openmp -static-libs
app-crypt/libmd-1.0.3-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32
app-crypt/openpgp-keys-gentoo-release-20200704:0 -test
app-crypt/pinentry-1.1.1-r1:0 -caps -efl -emacs -gnome-keyring -gtk ncurses -qt5
app-crypt/rhash-1.4.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug nls ssl -static-libs
app-editors/nano-5.8-r2:0 -debug -justify -magic -minimal ncurses nls spell split-usr -static unicode
app-eselect/eselect-fontconfig-1.1-r1:0
app-eselect/eselect-iptables-20200508:0
app-eselect/eselect-lib-bin-symlink-0.1.1-r1:0
app-eselect/eselect-pinentry-0.7.2:0
app-eselect/eselect-rust-20210703:0
app-i18n/man-pages-ja-20180315-r1:0
app-i18n/man-pages-l10n-4.10.0:0 l10n_de l10n_es l10n_fr l10n_it l10n_nl l10n_pl l10n_pt-BR l10n_ro
app-i18n/man-pages-ru-5.03.2390.2390.20191017-r1:0
app-i18n/man-pages-zh_CN-1.6.3.2:0
app-misc/c_rehash-1.7-r1:0
app-misc/ca-certificates-20210119.3.66:0 -cacert
app-misc/editor-wrapper-4-r1:0
app-misc/mime-types-9:0
app-misc/pax-utils-1.3.3:0 -caps -debug -python -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 seccomp
app-misc/tmux-3.2a:0 -debug -selinux -utempter -vim-syntax
app-portage/eix-0.35.2:0 -debug -doc nls -sqlite
app-portage/elt-patches-20201205:0
app-portage/gemato-16.2:0 gpg python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test -tools
app-portage/gentoolkit-0.5.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
app-portage/portage-utils-0.92:0 nls openmp qmanifest qtegrity -static
app-shells/bash-5.1_p8:0 -afs -bashlogger -examples -mem-scramble net nls -plugins readline
app-shells/push-3.4:0
app-shells/quoter-4.2:0
app-text/ansifilter-2.18:0 -qt5
app-text/build-docbook-catalog-1.21:0
app-text/docbook-xml-dtd-4.5-r2:4.5
app-text/docbook-xml-dtd-4.4-r3:4.4
app-text/docbook-xml-dtd-4.2-r3:4.2
app-text/docbook-xml-dtd-4.1.2-r7:4.1.2
app-text/docbook-xsl-stylesheets-1.79.1-r2:0 -ruby
app-text/ghostscript-gpl-9.54.0:0/9.54 -cups -dbus -gtk jpeg2k l10n_de -l10n_ja l10n_ko l10n_zh-CN l10n_zh-TW -static-libs unicode -X
app-text/libpaper-1.1.28:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32
app-text/manpager-1:0
app-text/mupdf-1.18.0-r4:0/1.18.0 javascript -opengl ssl -X
app-text/opensp-1.5.2-r6:0 -doc nls -static-libs -test
app-text/po4a-0.63-r1:0 -test
app-text/poppler-21.08.0:0/112 -boost cairo -cjk -curl cxx -debug -doc introspection jpeg jpeg2k lcms -nss png -qt5 tiff utils
app-text/poppler-data-0.4.10:0
app-text/qpdf-10.3.2:0/28 -doc -examples ssl -test
app-text/sgml-common-0.6.3-r7:0
app-text/xmlto-0.0.28-r6:0 -latex -text
dev-cpp/eigen-3.3.9:3 -cpu_flags_arm_neon -cpu_flags_ppc_altivec -cpu_flags_ppc_vsx -cuda -debug -doc openmp -test
dev-db/sqlite-3.35.5:3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -doc -icu readline -secure-delete -static-libs -tcl -test -tools
dev-lang/mujs-1.1.3:0/1.1.3
dev-lang/nasm-2.15.05:0 -doc
dev-lang/perl-5.34.0-r2:0/5.34 -berkdb -debug -doc gdbm -ithreads -minimal
dev-lang/python-3.10.0_rc1_p1:3.10 -bluetooth -build -examples gdbm -hardened ipv6 ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml
dev-lang/python-3.9.6_p1:3.9 -bluetooth -build -examples gdbm -hardened ipv6 ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml
dev-lang/python-3.8.11:3.8 -bluetooth -build -examples gdbm -hardened ipv6 ncurses readline sqlite ssl -test -tk -verify-sig -wininst xml
dev-lang/python-2.7.18_p11:2.7 -berkdb -bluetooth -build -examples gdbm -hardened ipv6 ncurses readline sqlite ssl threads -tk -verify-sig wide-unicode -wininst xml
dev-lang/python-exec-2.4.8:2 native-symlinks python_targets_pypy3 python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-lang/python-exec-conf-2.4.6:2 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
dev-lang/rust-1.54.0:stable/1.54 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -clippy cpu_flags_x86_sse2 -debug -doc -llvm_targets_AArch64 -llvm_targets_AMDGPU -llvm_targets_ARM -llvm_targets_AVR -llvm_targets_BPF -llvm_targets_Hexagon -llvm_targets_Lanai -llvm_targets_Mips -llvm_targets_MSP430 -llvm_targets_NVPTX -llvm_targets_PowerPC -llvm_targets_RISCV -llvm_targets_Sparc -llvm_targets_SystemZ -llvm_targets_WebAssembly llvm_targets_X86 -llvm_targets_XCore -miri -nightly -parallel-compiler -rls rustfmt -system-bootstrap -system-llvm -test -verify-sig -wasm
dev-lang/spidermonkey-78.13.0:78 -clang -cpu_flags_arm_neon -debug jit -lto -test
dev-lang/swig-4.0.2:0 -ccache -doc pcre
dev-lang/tcl-8.6.11:0/8.6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug threads
dev-libs/elfutils-0.185:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 -lzma nls -static-libs -test -threads utils -valgrind -zstd
dev-libs/expat-2.4.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -examples split-usr -static-libs unicode
dev-libs/glib-2.68.4:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -dbus -debug elf -fam -gtk-doc mime -selinux -static-libs -sysprof -systemtap -test -utils xattr
dev-libs/gmp-6.2.1-r1:0/10.4 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm cxx -doc -pic -static-libs
dev-libs/gobject-introspection-1.68.0:0 -doctool -gtk-doc -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 -test
dev-libs/gobject-introspection-common-1.68.0:0
dev-libs/gumbo-0.10.1:0 -doc -test
dev-libs/icu-69.1:0/69.1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -doc -examples -static-libs
dev-libs/isl-0.24:0/23 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs
dev-libs/jsoncpp-1.9.4:0/24 -doc -test
dev-libs/libassuan-2.5.5:0
dev-libs/libbsd-0.11.3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs
dev-libs/libevent-2.1.12:0/2.1-7 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 clock-gettime -debug -malloc-replacement ssl -static-libs -test threads -verbose-debug
dev-libs/libffi-3.4.2:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -exec-static-trampoline -pax-kernel -static-libs -test
dev-libs/libgcrypt-1.9.3:0/20 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm -cpu_flags_arm_neon -cpu_flags_x86_aes -cpu_flags_x86_avx -cpu_flags_x86_avx2 -cpu_flags_x86_padlock -cpu_flags_x86_sha -cpu_flags_x86_sse4_1 -doc -o-flag-munging -static-libs
dev-libs/libgpg-error-1.42:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -common-lisp nls -static-libs
dev-libs/libksba-1.6.0:0 -static-libs
dev-libs/libltdl-2.4.6:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs
dev-libs/libpcre-8.45:3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 cxx jit -libedit pcre16 pcre32 readline recursion-limit split-usr -static-libs unicode zlib
dev-libs/libpcre2-10.37-r2:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 jit -libedit pcre16 pcre32 readline recursion-limit split-usr -static-libs unicode zlib
dev-libs/libpipeline-1.5.3:0 -static-libs -test
dev-libs/libtasn1-4.17.0:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -static-libs -test -valgrind
dev-libs/libtomcrypt-1.18.2-r2:0/1 gmp libtommath -tomsfastmath
dev-libs/libtommath-1.2.0:0 -doc -examples -static-libs
dev-libs/libunistring-0.9.10-r1:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -static-libs
dev-libs/libuv-1.42.0:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32
dev-libs/libxml2-2.9.12-r5:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -examples -icu ipv6 -lzma python python_targets_python3_8 python_targets_python3_9 readline -static-libs -test -verify-sig
dev-libs/libxslt-1.1.34-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 crypt -debug -examples -static-libs -verify-sig
dev-libs/lzo-2.10:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -examples split-usr -static-libs
dev-libs/mpc-1.2.1:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs
dev-libs/mpfr-4.1.0:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs
dev-libs/nettle-3.7.3:0/8-6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm -cpu_flags_arm_neon -cpu_flags_x86_aes -cpu_flags_x86_sha -doc gmp -static-libs -test
dev-libs/npth-1.6-r1:0
dev-libs/nspr-4.32:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug
dev-libs/openssl-1.1.1k-r1:0/1.1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 asm -bindist cpu_flags_x86_sse2 -rfc3779 -sctp -sslv3 -static-libs -test -tls-compression -tls-heartbeat -vanilla
dev-libs/popt-1.18:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls -static-libs
dev-perl/Encode-EUCJPASCII-0.30.0-r1:0 -test
dev-perl/Encode-HanExtra-0.230.0-r3:0
dev-perl/Encode-Locale-1.50.0:0 -test
dev-perl/File-Listing-6.140.0:0 -test
dev-perl/HTML-Parser-3.760.0:0 -test
dev-perl/HTML-Tagset-3.200.0-r2:0
dev-perl/HTTP-Cookies-6.100.0:0 -test
dev-perl/HTTP-Date-6.50.0:0
dev-perl/HTTP-Message-6.320.0:0 -test -test
dev-perl/HTTP-Negotiate-6.10.0-r1:0
dev-perl/IO-HTML-1.4.0:0 -test
dev-perl/IO-Socket-INET6-2.720.0-r1:0
dev-perl/IO-Socket-SSL-2.71.0:0 -examples -idn -test
dev-perl/libwww-perl-6.550.0:0 ssl -test
dev-perl/Locale-gettext-1.70.0:0
dev-perl/LWP-MediaTypes-6.40.0:0 -test
dev-perl/LWP-Protocol-https-6.100.0:0 -test
dev-perl/MIME-Charset-1.12.2:0 l10n_ja l10n_zh
dev-perl/Module-Build-0.423.100:0 -test
dev-perl/Mozilla-CA-20999999:0
dev-perl/Net-HTTP-6.210.0:0 -minimal -test
dev-perl/Net-SSLeay-1.900.0:0 -examples -examples -minimal -test
dev-perl/Pod-Parser-1.630.0-r1:0 -test
dev-perl/SGMLSpm-1.1-r2:0 -test
dev-perl/Socket6-0.290.0:0 -test
dev-perl/TermReadKey-2.380.0:0 -examples -test
dev-perl/Text-CharWidth-0.40.0-r1:0
dev-perl/Text-WrapI18N-0.60.0-r1:0
dev-perl/TimeDate-2.330.0:0
dev-perl/Try-Tiny-0.300.0:0 -minimal -test
dev-perl/Unicode-LineBreak-2019.1.0:0
dev-perl/URI-1.730.0:0 -test
dev-perl/WWW-RobotRules-6.20.0-r1:0
dev-perl/XML-Parser-2.460.0:0
dev-perl/YAML-Tiny-1.730.0:0 -minimal -test
dev-python/attrs-21.2.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/certifi-10001-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/cffi-1.14.6:0/1.14.6 -doc -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/charset_normalizer-2.0.4:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/cython-0.29.24:0 -doc -emacs python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/execnet-1.9.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/idna-3.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
dev-python/importlib_metadata-4.6.4:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/iniconfig-1.1.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/jinja-3.0.1:0 -doc -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/lxml-4.6.3-r1:0 -doc -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test threads
dev-python/markupsafe-2.0.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/more-itertools-8.8.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/namespace-zope-1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
dev-python/numpy-1.21.2:0 -doc lapack -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/olefile-0.46-r1:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/packaging-21.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/pdfrw-0.4_p1:0 crypt -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/pikepdf-2.16.1:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/pillow-8.3.1:0 -examples -imagequant jpeg -jpeg2k -lcms python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test -test -tiff -tk -truetype -webp -xcb zlib
dev-python/pluggy-0.13.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/ply-3.11-r1:0/3.11 -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
dev-python/psutil-5.7.3:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/py-1.10.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/pybind11-2.7.1:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/pycparser-2.20-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
dev-python/pycryptodome-3.10.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/pyparsing-2.4.7-r1:0 -examples python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
dev-python/pypy3-7.3.4_p2:0/pypy37-pp73 bzip2 gdbm jit ncurses -sqlite -test -tk
dev-python/pypy3-exe-7.3.4:7.3.4 bzip2 -cpu_flags_x86_sse2 jit -low-memory ncurses
dev-python/PySocks-1.7.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
dev-python/pytest-6.2.4-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/pytest-forked-1.3.0-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/pytest-xdist-2.3.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/requests-2.26.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -socks5 -test
dev-python/scipy-1.6.3:0 -doc -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -sparse -test
dev-python/setuptools-57.4.0-r2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/setuptools_scm-6.0.1-r1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/setuptools_scm_git_archive-1.1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/toml-0.10.2:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test -test
dev-python/typing-extensions-3.10.0.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
dev-python/urllib3-1.26.6:0 -brotli python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/zipp-3.5.0:0 -doc python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-python/zope-interface-5.4.0:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-util/cmake-3.21.1:0 -doc -emacs ncurses -qt5 -test -test
dev-util/desktop-file-utils-0.26-r1:0 -emacs
dev-util/glib-utils-2.68.4:0 -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9
dev-util/gperf-3.1:0
dev-util/gtk-doc-am-1.33.2:0
dev-util/intltool-0.51.0-r2:0
dev-util/itstool-2.0.6-r1:0 -python_single_target_python3_8 python_single_target_python3_9
dev-util/meson-0.58.2:0 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
dev-util/meson-format-array-0:0 python_targets_python3_8 python_targets_python3_9
dev-util/ninja-1.10.2-r1:0 -doc -emacs -test -vim-syntax
dev-util/pkgconf-1.8.0:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 pkg-config -test
dev-util/re2c-2.2:0 -debug -test
dev-vcs/git-2.33.0-r1:0 blksha1 -cgi curl -cvs -doc -emacs -gnome-keyring gpg -highlight iconv -mediawiki -mediawiki-experimental nls pcre -perforce -perl -ppcsha1 -python_single_target_python3_10 -python_single_target_python3_8 python_single_target_python3_9 -subversion -test threads -tk webdav -xinetd
media-fonts/arphicfonts-0.2.20080216.1-r2:0 -X
media-fonts/baekmuk-fonts-2.2-r2:0 unicode -X -X
media-fonts/liberation-fonts-2.1.3:0 -fontforge -X -X
media-fonts/urw-fonts-2.4.9:0 -X
media-gfx/fontforge-20201107:0 -doc -gif -gtk -jpeg -png python -python_single_target_python3_8 python_single_target_python3_9 readline -svg -test -tiff -truetype-debugger unicode -woff2 -X
media-gfx/graphite2-1.3.14:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -perl -test
media-gfx/imagemagick-7.1.0.4:0/7.1.0-0 bzip2 -corefonts cxx -djvu -fftw -fontconfig -fpx -graphviz -hdri -heif -jbig jpeg jpeg2k -lcms -lqr -lzma -opencl -openexr openmp -pango -perl png -postscript q32 q8 -raw -static-libs -svg -test tiff -truetype -webp -wmf -X -xml -zip zlib
media-gfx/img2pdf-0.4.1-r1:0 -gui -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -test
media-libs/exiftool-12.26:0 -doc
media-libs/fontconfig-2.13.1-r2:1.0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -static-libs
media-libs/freetype-2.11.0-r1:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 adobe-cff -brotli bzip2 cleartype-hinting -debug -doc -fontforge harfbuzz -infinality png -static-libs -utils -X
media-libs/harfbuzz-2.9.0:0/0.9.18 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 cairo -debug -doc -experimental glib graphite -icu introspection -test truetype
media-libs/jbig2dec-0.19:0/0.19 -png -static-libs -test
media-libs/lcms-2.12:2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -jpeg -static-libs -test threads -tiff zlib
media-libs/libjpeg-turbo-2.1.1:0/0.2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cpu_flags_arm_neon -java -java -static-libs
media-libs/libpng-1.6.37-r2:0/16 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -apng -cpu_flags_arm_neon cpu_flags_x86_sse -static-libs
media-libs/libuninameslist-20200413-r2:0/1
media-libs/netpbm-10.86.22:0 cpu_flags_x86_sse2 -doc -jbig jpeg -png -postscript -rle -static-libs -svga -tiff -X -xml zlib
media-libs/openjpeg-2.4.0:2/7 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -static-libs -test
media-libs/tiff-4.3.0:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 cxx -jbig -jpeg -lzma -static-libs -test -webp zlib -zstd
net-dns/libidn-1.38-r1:0/12 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -emacs -java -java -mono nls -verify-sig
net-dns/libidn2-2.3.2:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs -verify-sig
net-firewall/iptables-1.8.7:0/1.8.3 -conntrack ipv6 -netlink -nftables -pcap split-usr -static-libs
net-libs/gnutls-3.7.2:0/30 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 cxx -dane -doc -examples -guile idn nls openssl -pkcs11 seccomp -sslv2 -sslv3 -static-libs -test -test-full tls-heartbeat -tools -valgrind
net-libs/libmnl-1.0.4:0/0.2.0 -examples split-usr -static-libs
net-libs/libnsl-2.0.0:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs
net-libs/libtirpc-1.3.2:0/3 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 ipv6 -kerberos split-usr -static-libs
net-libs/nghttp2-1.44.0:0/1.14 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cxx -debug -hpack-tools -jemalloc -static-libs -test threads -utils -xml
net-misc/curl-7.78.0-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -adns -alt-svc -brotli -curl_ssl_gnutls -curl_ssl_mbedtls -curl_ssl_nss curl_ssl_openssl -curl_ssl_winssl ftp -gnutls -gopher -hsts http2 -idn imap ipv6 -kerberos -ldap -mbedtls -nghttp3 -nss openssl pop3 progress-meter -quiche -rtmp -samba smtp -ssh ssl -sslv3 -static-libs -telnet -test tftp -threads -winssl -zstd
net-misc/iputils-20210722:0 arping -caps -clockdiff -doc filecaps -gcrypt -idn ipv6 -nettle nls -rarpd -rdisc ssl -static -tftpd -tracepath -traceroute6
net-misc/netifrc-0.7.3:0
net-misc/openssh-8.6_p1-r2:0 -abi_mips_n32 -audit -bindist -debug -hpn -kerberos -ldns -libedit -livecd pam pie scp -sctp -security-key -selinux ssl -static -test -X -X509 -xmss
net-misc/rsync-3.2.3-r4:0 acl -examples iconv ipv6 -lz4 ssl -stunnel -system-zlib xattr -xxhash -zstd
net-misc/wget-1.21.1:0 -cookie_check -debug -gnutls -idn ipv6 -metalink nls -ntlm pcre ssl -static -test -uuid zlib
perl-core/Encode-3.120.0:0
perl-core/File-Temp-0.231.100:0
perl-core/Scalar-List-Utils-1.560.0:0
sci-libs/arpack-3.8.0:0 -doc -examples -mpi
sci-libs/lapack-3.10.0:0 -deprecated -doc -eselect-ldso -lapacke -test
sys-apps/acl-2.3.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls split-usr -static-libs
sys-apps/attr-2.5.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug nls split-usr -static-libs
sys-apps/baselayout-2.7-r3:0 -build split-usr
sys-apps/busybox-1.33.1-r1:0 -debug ipv6 -livecd -make-symlinks -math -mdev -pam -savedconfig -selinux -sep-usr static -syslog -systemd
sys-apps/coreutils-8.32-r1:0 acl -caps -gmp -hostname -kill -multicall nls -selinux split-usr -static -test -vanilla xattr
sys-apps/dbus-1.12.20-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -doc elogind -selinux -static-libs -systemd -test -test -user-session -X
sys-apps/debianutils-5.2:0 installkernel -static
sys-apps/diffutils-3.8:0 nls -static
sys-apps/file-5.40-r3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 bzip2 -lzma -python -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 -seccomp -static-libs zlib
sys-apps/findutils-4.8.0:0 nls -selinux -static -test
sys-apps/gawk-5.1.0:0 -mpfr nls readline
sys-apps/gentoo-functions-0.14:0
sys-apps/grep-3.7:0 nls pcre -static
sys-apps/groff-1.22.4:0 -examples -uchardet -X
sys-apps/help2man-1.48.4:0 nls
sys-apps/hwids-20210613-r1:0 net pci -systemd udev usb
sys-apps/install-xattr-0.8:0
sys-apps/iproute2-5.13.0-r1:0 -atm -berkdb -bpf -caps -elf iptables ipv6 -libbsd -minimal -selinux
sys-apps/kbd-2.4.0:0 nls pam -test
sys-apps/kmod-29:0 -debug -doc lzma -pkcs7 -python python_targets_python3_8 python_targets_python3_9 -static-libs tools zlib -zstd
sys-apps/less-590:0 pcre unicode
sys-apps/man-db-2.9.4-r1:0 -berkdb gdbm manpager nls seccomp -selinux -static-libs zlib
sys-apps/man-pages-5.12-r2:0 l10n_de l10n_es l10n_fr l10n_it l10n_ja l10n_nl l10n_pl l10n_pt-BR l10n_ro l10n_ru l10n_zh-CN
sys-apps/man-pages-posix-2017a:0
sys-apps/net-tools-2.10:0 arp hostname ipv6 -nis nls -plipconfig -selinux -slattach -static
sys-apps/openrc-0.43.5:0 -audit -bash -debug ncurses netifrc -newnet pam -prefix -selinux -sysv-utils unicode
sys-apps/portage-3.0.22:0 -apidoc -build -doc -gentoo-dev ipc native-extensions python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9 rsync-verify -selinux -test xattr
sys-apps/sandbox-2.24:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 abi_x86_32 abi_x86_64 -abi_x86_x32
sys-apps/sed-4.8:0 acl nls -selinux -static
sys-apps/shadow-4.9-r2:0 acl -audit -bcrypt -cracklib nls pam -selinux -skey split-usr su xattr
sys-apps/systemd-tmpfiles-249.2:0 -selinux -test
sys-apps/sysvinit-2.99:0 -ibm -selinux -static
sys-apps/texinfo-6.8:0 nls standalone -static
sys-apps/util-linux-2.37.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -audit -build -caps cramfs -cryptsetup -fdformat -hardlink -kill logger -magic ncurses nls pam -python python_targets_python3_8 python_targets_python3_9 readline -selinux -slang split-usr -static-libs -su suid -systemd -test -tty-helpers -udev unicode
sys-apps/which-2.21:0
sys-auth/elogind-246.10-r1:0 acl -audit -debug -doc pam policykit -selinux
sys-auth/pambase-20210201.1:0 -caps -debug elogind -gnome-keyring -homed -minimal -mktemp nullok -pam_krb5 -pam_ssh passwdqc -pwhistory -pwquality -securetty -selinux sha512 -systemd
sys-auth/passwdqc-2.0.2-r1:0
sys-auth/polkit-0.119-r2:0 elogind -examples -gtk introspection -kde nls pam -selinux -systemd -test
sys-devel/autoconf-2.71-r1:2.71 -emacs
sys-devel/autoconf-2.13-r1:2.1
sys-devel/autoconf-archive-2021.02.19:0
sys-devel/autoconf-wrapper-15:0
sys-devel/automake-1.16.4:1.16 -test
sys-devel/automake-wrapper-11:0
sys-devel/binutils-2.37_p1:2.37 -cet -default-gold -doc gold -multitarget nls plugins -static-libs -test -vanilla
sys-devel/binutils-config-5.4:0 native-symlinks
sys-devel/bison-3.7.6:0 -examples nls -static -test
sys-devel/flex-2.6.4-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 nls -static -test
sys-devel/gcc-11.2.0:11 -ada -custom-cflags cxx -d -debug -doc -fixed-point fortran -go graphite -hardened -jit -libssp lto multilib nls nptl -objc -objc++ -objc-gc openmp pch -pgo pie sanitize ssp -systemtap -test -valgrind -vanilla -vtv -zstd
sys-devel/gcc-config-2.4:0 cc-wrappers native-symlinks
sys-devel/gettext-0.21-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 acl -cvs cxx -doc -emacs -git -java -java ncurses nls openmp -static-libs
sys-devel/gnuconfig-20210107:0
sys-devel/libtool-2.4.6-r6:2 -vanilla
sys-devel/llvm-12.0.1:12 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -debug -doc -doc -exegesis -gold -libedit libffi -llvm_targets_AArch64 llvm_targets_AMDGPU -llvm_targets_ARC -llvm_targets_ARM -llvm_targets_AVR llvm_targets_BPF -llvm_targets_CSKY -llvm_targets_Hexagon -llvm_targets_Lanai -llvm_targets_Mips -llvm_targets_MSP430 llvm_targets_NVPTX -llvm_targets_PowerPC -llvm_targets_RISCV -llvm_targets_Sparc -llvm_targets_SystemZ -llvm_targets_VE -llvm_targets_WebAssembly llvm_targets_X86 -llvm_targets_XCore ncurses -test -xar -xml -z3
sys-devel/llvm-common-12.0.1:0
sys-devel/m4-1.4.19:0 -examples nls
sys-devel/make-4.3:0 -guile nls -static
sys-devel/patch-2.7.6-r4:0 -static -test xattr
sys-fs/e2fsprogs-1.46.4:0 -cron -fuse -lto nls split-usr -static-libs threads
sys-fs/eudev-3.2.10-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 hwdb -introspection kmod -rule-generator -selinux -static-libs -test
sys-fs/udev-init-scripts-34:0
sys-kernel/installkernel-gentoo-3:0
sys-kernel/linux-headers-5.13:0 -headers-only
sys-libs/binutils-libs-2.37_p1:0/2.37 -64-bit-bfd -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cet -multitarget nls -static-libs
sys-libs/e2fsprogs-libs-1.46.4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 split-usr -static-libs
sys-libs/gdbm-1.20:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 berkdb nls readline -static-libs
sys-libs/glibc-2.33-r7:2.2 -audit -caps -cet -compile-locales -crypt -custom-cflags -doc -gd -headers-only multiarch multilib -multilib-bootstrap -nscd -profile -selinux ssp static-libs -static-pie -suid -systemd -systemtap -test -vanilla
sys-libs/libcap-2.52-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 pam split-usr -static-libs
sys-libs/libseccomp-2.5.1-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -python python_targets_python3_8 python_targets_python3_9 -static-libs
sys-libs/libxcrypt-4.4.25:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 compat split-usr static-libs system -test
sys-libs/ncurses-6.2_p20210619:0/6 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -ada cxx -debug -doc -gpm -minimal -profile split-usr -static-libs -test tinfo -trace
sys-libs/pam-1.5.1_p20210622-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -audit -berkdb -debug filecaps -nis -selinux split-usr
sys-libs/readline-8.1_p1-r1:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 split-usr -static-libs unicode -utils
sys-libs/timezone-data-2021a-r1:0 -leaps-timezone nls -zic-slim
sys-libs/zlib-1.2.11-r4:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 minizip split-usr -static-libs
sys-process/procps-3.3.17-r1:0/8 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 elogind kill -modern-top ncurses nls -selinux split-usr -static-libs -systemd -test unicode
sys-process/psmisc-23.4-r1:0 ipv6 nls -selinux -X
virtual/acl-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs
virtual/awk-1:0
virtual/blas-3.8:0 -eselect-ldso
virtual/cblas-3.8:0 -eselect-ldso
virtual/dev-manager-0-r2:0
virtual/editor-0-r3:0
virtual/fortran-0:0 openmp
virtual/jpeg-100:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs
virtual/lapack-3.8:0 -eselect-ldso
virtual/libc-1-r1:0
virtual/libcrypt-2:0/2 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 static-libs
virtual/libelf-3:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32
virtual/libiconv-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32
virtual/libintl-0-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32
virtual/libudev-232-r4:0/1 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -static-libs -systemd
virtual/man-0-r4:0
virtual/os-headers-0-r2:0
virtual/package-manager-1:0
virtual/pager-0:0
virtual/perl-Carp-1.520.0-r1:0
virtual/perl-Compress-Raw-Bzip2-2.101.0:0
virtual/perl-Compress-Raw-Zlib-2.101.0:0
virtual/perl-CPAN-Meta-2.150.10-r5:0
virtual/perl-CPAN-Meta-Requirements-2.140.0-r7:0
virtual/perl-CPAN-Meta-YAML-0.18.0-r7:0
virtual/perl-Data-Dumper-2.179.0:0
virtual/perl-Digest-MD5-2.580.0:0
virtual/perl-Encode-3.120.0:0
virtual/perl-Exporter-5.760.0:0
virtual/perl-ExtUtils-CBuilder-0.280.236:0
virtual/perl-ExtUtils-Install-2.200.0:0
virtual/perl-ExtUtils-MakeMaker-7.620.0:0
virtual/perl-ExtUtils-Manifest-1.730.0:0
virtual/perl-ExtUtils-ParseXS-3.430.0:0
virtual/perl-File-Spec-3.800.0:0
virtual/perl-File-Temp-0.231.100:0
virtual/perl-Getopt-Long-2.520.0:0
virtual/perl-IO-1.460.0:0
virtual/perl-IO-Compress-2.102.0:0
virtual/perl-IO-Socket-IP-0.410.0:0
virtual/perl-JSON-PP-4.60.0:0
virtual/perl-libnet-3.130.0:0 ssl
virtual/perl-MIME-Base64-3.160.0:0
virtual/perl-Module-Metadata-1.0.37-r1:0
virtual/perl-parent-0.238.0-r1:0
virtual/perl-Parse-CPAN-Meta-2.150.10-r5:0
virtual/perl-Perl-OSType-1.10.0-r5:0
virtual/perl-podlators-4.140.0-r2:0
virtual/perl-Scalar-List-Utils-1.560.0:0
virtual/perl-Test-Harness-3.430.0:0
virtual/perl-Text-ParseWords-3.300.0-r8:0
virtual/perl-Time-Local-1.300.0:0
virtual/perl-version-0.992.800:0
virtual/perl-XSLoader-0.300.0-r4:0
virtual/pkgconfig-2:0
virtual/python-cffi-1:0 python_targets_pypy3 -python_targets_python3_10 python_targets_python3_8 python_targets_python3_9
virtual/rust-1.54.0:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -rustfmt
virtual/service-manager-1:0
virtual/ssh-0:0 -minimal
virtual/tmpfiles-0-r1:0
virtual/ttf-fonts-1-r1:0
virtual/udev-217-r3:0
virtual/yacc-0:0
www-client/pybugz-0.13-r1:0 python_targets_python3_8 python_targets_python3_9
x11-base/xcb-proto-1.14.1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 python_targets_python3_8 python_targets_python3_9
x11-base/xorg-proto-2021.4:0 -test
x11-libs/cairo-1.16.0-r4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -aqua -debug -gles2-only glib -opengl -static-libs svg -utils -valgrind -X
x11-libs/libX11-1.7.2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc ipv6 -test
x11-libs/libXau-1.0.9-r1:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc
x11-libs/libxcb-1.14:0/1.12 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc -doc -selinux -test xkb
x11-libs/libXdmcp-1.1.3:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc
x11-libs/libXext-1.3.4:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -doc
x11-libs/libXrender-0.9.10-r2:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32
x11-libs/pixman-0.40.0:0 -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_s390_32 -abi_s390_64 -abi_x86_32 abi_x86_64 -abi_x86_x32 -cpu_flags_arm_iwmmxt -cpu_flags_arm_iwmmxt2 -cpu_flags_arm_neon -cpu_flags_ppc_altivec cpu_flags_x86_mmxext cpu_flags_x86_sse2 -cpu_flags_x86_ssse3 -loongson2f -static-libs
x11-libs/xtrans-1.4.0:0 -doc
x11-misc/compose-tables-1.7.2:0
x11-misc/shared-mime-info-2.1:0


#######################
# build.log           #
#######################
>>> Unpacking source...
>>> Unpacking img2pdf-0.4.1.tar.gz to /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work
>>> Unpacking img2pdf-0.4.1-imagemagick-7-tests.patch.gz to /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work
>>> Source unpacked in /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work
>>> Preparing source in /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1 ...
 * Applying img2pdf-0.4.1-imagemagick-7-tests.patch ...
 [ ok ]
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1 ...
>>> Source configured.
>>> Compiling source in /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1 ...
 * python3_8: running distutils-r1_run_phase distutils-r1_python_compile
python3.8 setup.py build -j 24
running build
running build_py
copying src/img2pdf.py -> /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1-python3_8/lib
copying src/jp2.py -> /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1-python3_8/lib
running egg_info
writing src/img2pdf.egg-info/PKG-INFO
writing dependency_links to src/img2pdf.egg-info/dependency_links.txt
writing entry points to src/img2pdf.egg-info/entry_points.txt
writing requirements to src/img2pdf.egg-info/requires.txt
writing top-level names to src/img2pdf.egg-info/top_level.txt
reading manifest file 'src/img2pdf.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
/usr/lib/python3.8/site-packages/setuptools/dist.py:697: UserWarning: Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead
  warnings.warn(
warning: no files found matching 'test.sh'
warning: no files found matching 'magick.py'
adding license file 'LICENSE'
writing manifest file 'src/img2pdf.egg-info/SOURCES.txt'
warning: build_py: byte-compiling is disabled, skipping.

 * python3_9: running distutils-r1_run_phase distutils-r1_python_compile
python3.9 setup.py build -j 24
/usr/lib/python3.9/site-packages/setuptools/dist.py:697: UserWarning: Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead
  warnings.warn(
running build
running build_py
copying src/img2pdf.py -> /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1-python3_9/lib
copying src/jp2.py -> /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1-python3_9/lib
running egg_info
writing src/img2pdf.egg-info/PKG-INFO
writing dependency_links to src/img2pdf.egg-info/dependency_links.txt
writing entry points to src/img2pdf.egg-info/entry_points.txt
writing requirements to src/img2pdf.egg-info/requires.txt
writing top-level names to src/img2pdf.egg-info/top_level.txt
reading manifest file 'src/img2pdf.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'test.sh'
warning: no files found matching 'magick.py'
adding license file 'LICENSE'
writing manifest file 'src/img2pdf.egg-info/SOURCES.txt'
warning: build_py: byte-compiling is disabled, skipping.

>>> Source compiled.
>>> Test phase: media-gfx/img2pdf-0.4.1-r1
 * python3_8: running distutils-r1_run_phase python_test
python3.8 -m pytest -vv -ra -l -Wdefault -n auto
============================= test session starts ==============================
platform linux -- Python 3.8.11, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- /usr/bin/python3.8
cachedir: .pytest_cache
rootdir: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
plugins: forked-1.3.0, xdist-2.3.0
gw0 I / gw1 I / gw2 I / gw3 I / gw4 I / gw5 I / gw6 I / gw7 I / gw8 I / gw9 I / gw10 I / gw11 I / gw12 I / gw13 I / gw14 I / gw15 I / gw16 I / gw17 I / gw18 I / gw19 I / gw20 I / gw21 I / gw22 I / gw23 I
[gw0] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw1] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw2] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw3] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw4] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw5] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw6] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw7] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw8] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw9] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw10] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw11] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw12] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw13] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw14] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw15] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw16] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw17] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw18] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw19] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw20] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw21] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw22] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw23] linux Python 3.8.11 cwd: /var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1
[gw0] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw1] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw2] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw3] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw4] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw5] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw6] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw7] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw8] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw9] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw10] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw12] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw11] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw14] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw13] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw15] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw16] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw17] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw18] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw19] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw20] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw21] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw22] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
[gw23] Python 3.8.11 (default, Aug  5 2021, 08:59:05)  -- [GCC 11.2.0]
gw0 [348] / gw1 [348] / gw2 [348] / gw3 [348] / gw4 [348] / gw5 [348] / gw6 [348] / gw7 [348] / gw8 [348] / gw9 [348] / gw10 [348] / gw11 [348] / gw12 [348] / gw13 [348] / gw14 [348] / gw15 [348] / gw16 [348] / gw17 [348] / gw18 [348] / gw19 [348] / gw20 [348] / gw21 [348] / gw22 [348] / gw23 [348]

scheduling tests via LoadScheduling

src/img2pdf_test.py::test_jpg[pdfrw] 
src/img2pdf_test.py::test_jpg[pikepdf] 
src/img2pdf_test.py::test_jpg_rot[pdfrw] 
src/img2pdf_test.py::test_jpg_rot[internal] 
src/img2pdf_test.py::test_jpg_cmyk[pdfrw] 
src/img2pdf_test.py::test_jpg[internal] 
src/img2pdf_test.py::test_jpg_cmyk[pikepdf] 
src/img2pdf_test.py::test_jpg_2000[internal] 
src/img2pdf_test.py::test_png_rgb8[pikepdf] 
src/img2pdf_test.py::test_png_rgba8[pdfrw] 
src/img2pdf_test.py::test_png_rgb16[pikepdf] 
src/img2pdf_test.py::test_png_rgba8[pikepdf] 
src/img2pdf_test.py::test_png_rgb8[pdfrw] 
src/img2pdf_test.py::test_png_rgb16[internal] 
src/img2pdf_test.py::test_png_rgb8[internal] 
src/img2pdf_test.py::test_png_rgba8[internal] 
src/img2pdf_test.py::test_png_rgb16[pdfrw] 
src/img2pdf_test.py::test_jpg_cmyk[internal] 
src/img2pdf_test.py::test_png_rgba16[internal] 
src/img2pdf_test.py::test_jpg_rot[pikepdf] 
src/img2pdf_test.py::test_jpg_2000[pdfrw] 
src/img2pdf_test.py::test_jpg_2000[pikepdf] 
src/img2pdf_test.py::test_png_rgba16[pikepdf] 
src/img2pdf_test.py::test_png_rgba16[pdfrw] 
[gw20] [  0%] PASSED src/img2pdf_test.py::test_png_rgba8[pdfrw] 
src/img2pdf_test.py::test_png_gray8[pdfrw] 
[gw19] [  0%] PASSED src/img2pdf_test.py::test_png_rgba8[pikepdf] 
src/img2pdf_test.py::test_png_gray8[pikepdf] 
[gw23] [  0%] PASSED src/img2pdf_test.py::test_png_rgba16[pdfrw] 
src/img2pdf_test.py::test_png_gray16[pdfrw] 
[gw18] [  1%] PASSED src/img2pdf_test.py::test_png_rgba8[internal] 
src/img2pdf_test.py::test_png_gray8[internal] 
[gw22] [  1%] PASSED src/img2pdf_test.py::test_png_rgba16[pikepdf] 
src/img2pdf_test.py::test_png_gray16[pikepdf] 
[gw21] [  1%] PASSED src/img2pdf_test.py::test_png_rgba16[internal] 
src/img2pdf_test.py::test_png_gray16[internal] 
[gw14] [  2%] PASSED src/img2pdf_test.py::test_png_rgb8[pikepdf] 
src/img2pdf_test.py::test_png_gray2[pikepdf] 
[gw15] [  2%] PASSED src/img2pdf_test.py::test_png_rgb16[internal] 
src/img2pdf_test.py::test_png_gray4[internal] 
[gw11] [  2%] PASSED src/img2pdf_test.py::test_png_rgb8[internal] 
src/img2pdf_test.py::test_png_gray2[internal] 
[gw1] [  2%] PASSED src/img2pdf_test.py::test_jpg[pikepdf] 
src/img2pdf_test.py::test_png_gray8a[pikepdf] 
[gw17] [  3%] PASSED src/img2pdf_test.py::test_png_rgb16[pdfrw] 
src/img2pdf_test.py::test_png_gray4[pdfrw] 
[gw2] [  3%] PASSED src/img2pdf_test.py::test_jpg[pdfrw] 
src/img2pdf_test.py::test_png_gray8a[pdfrw] 
[gw13] [  3%] PASSED src/img2pdf_test.py::test_png_rgb8[pdfrw] 
src/img2pdf_test.py::test_png_gray2[pdfrw] 
[gw16] [  4%] PASSED src/img2pdf_test.py::test_png_rgb16[pikepdf] 
src/img2pdf_test.py::test_png_gray4[pikepdf] 
[gw8] [  4%] PASSED src/img2pdf_test.py::test_jpg_cmyk[pdfrw] 
src/img2pdf_test.py::test_png_interlaced[pdfrw] 
[gw9] [  4%] PASSED src/img2pdf_test.py::test_jpg_2000[internal] 
src/img2pdf_test.py::test_png_gray1[internal] 
[gw7] [  4%] PASSED src/img2pdf_test.py::test_jpg_cmyk[pikepdf] 
src/img2pdf_test.py::test_png_interlaced[pikepdf] 
[gw10] [  5%] PASSED src/img2pdf_test.py::test_jpg_2000[pikepdf] 
src/img2pdf_test.py::test_png_gray1[pikepdf] 
[gw12] [  5%] PASSED src/img2pdf_test.py::test_jpg_2000[pdfrw] 
src/img2pdf_test.py::test_png_gray1[pdfrw] 
[gw0] [  5%] PASSED src/img2pdf_test.py::test_jpg[internal] 
src/img2pdf_test.py::test_png_gray8a[internal] 
[gw6] [  6%] PASSED src/img2pdf_test.py::test_jpg_cmyk[internal] 
src/img2pdf_test.py::test_png_interlaced[internal] 
[gw4] [  6%] PASSED src/img2pdf_test.py::test_jpg_rot[pikepdf] 
src/img2pdf_test.py::test_png_gray16a[pikepdf] 
[gw3] [  6%] PASSED src/img2pdf_test.py::test_jpg_rot[internal] 
src/img2pdf_test.py::test_png_gray16a[internal] 
[gw5] [  6%] PASSED src/img2pdf_test.py::test_jpg_rot[pdfrw] 
src/img2pdf_test.py::test_png_gray16a[pdfrw] 
[gw20] [  7%] PASSED src/img2pdf_test.py::test_png_gray8[pdfrw] 
src/img2pdf_test.py::test_gif_palette8[internal] 
[gw19] [  7%] PASSED src/img2pdf_test.py::test_png_gray8[pikepdf] 
src/img2pdf_test.py::test_gif_palette4[pikepdf] 
[gw23] [  7%] PASSED src/img2pdf_test.py::test_png_gray16[pdfrw] 
src/img2pdf_test.py::test_gif_animation[pikepdf] 
[gw1] [  8%] PASSED src/img2pdf_test.py::test_png_gray8a[pikepdf] 
[gw18] [  8%] PASSED src/img2pdf_test.py::test_png_gray8[internal] 
src/img2pdf_test.py::test_png_palette1[pikepdf] 
src/img2pdf_test.py::test_gif_palette4[internal] 
[gw2] [  8%] PASSED src/img2pdf_test.py::test_png_gray8a[pdfrw] 
src/img2pdf_test.py::test_png_palette2[internal] 
[gw21] [  8%] PASSED src/img2pdf_test.py::test_png_gray16[internal] 
src/img2pdf_test.py::test_gif_palette8[pikepdf] 
[gw22] [  9%] PASSED src/img2pdf_test.py::test_png_gray16[pikepdf] 
src/img2pdf_test.py::test_gif_animation[internal] 
[gw0] [  9%] PASSED src/img2pdf_test.py::test_png_gray8a[internal] 
src/img2pdf_test.py::test_png_palette1[internal] 
[gw11] [  9%] PASSED src/img2pdf_test.py::test_png_gray2[internal] 
src/img2pdf_test.py::test_gif_transparent[pikepdf] 
[gw7] [ 10%] PASSED src/img2pdf_test.py::test_png_interlaced[pikepdf] 
src/img2pdf_test.py::test_png_palette8[pikepdf] 
[gw8] [ 10%] PASSED src/img2pdf_test.py::test_png_interlaced[pdfrw] 
src/img2pdf_test.py::test_png_icc[internal] 
[gw17] [ 10%] PASSED src/img2pdf_test.py::test_png_gray4[pdfrw] 
[gw14] [ 10%] PASSED src/img2pdf_test.py::test_png_gray2[pikepdf] 
src/img2pdf_test.py::test_gif_palette2[pikepdf] 
src/img2pdf_test.py::test_gif_transparent[pdfrw] 
[gw6] [ 11%] PASSED src/img2pdf_test.py::test_png_interlaced[internal] 
[gw13] [ 11%] PASSED src/img2pdf_test.py::test_png_gray2[pdfrw] 
src/img2pdf_test.py::test_gif_palette1[internal] 
src/img2pdf_test.py::test_png_palette8[internal] 
[gw15] [ 11%] PASSED src/img2pdf_test.py::test_png_gray4[internal] 
[gw10] [ 12%] PASSED src/img2pdf_test.py::test_png_gray1[pikepdf] 
src/img2pdf_test.py::test_png_icc[pdfrw] 
src/img2pdf_test.py::test_gif_palette1[pikepdf] 
[gw16] [ 12%] PASSED src/img2pdf_test.py::test_png_gray4[pikepdf] 
src/img2pdf_test.py::test_gif_palette2[internal] 
[gw9] [ 12%] PASSED src/img2pdf_test.py::test_png_gray1[internal] 
[gw12] [ 12%] PASSED src/img2pdf_test.py::test_png_gray1[pdfrw] 
src/img2pdf_test.py::test_gif_transparent[internal] 
src/img2pdf_test.py::test_png_icc[pikepdf] 
[gw3] [ 13%] PASSED src/img2pdf_test.py::test_png_gray16a[internal] 
src/img2pdf_test.py::test_png_palette2[pikepdf] 
[gw4] [ 13%] PASSED src/img2pdf_test.py::test_png_gray16a[pikepdf] 
src/img2pdf_test.py::test_png_palette4[internal] 
[gw5] [ 13%] PASSED src/img2pdf_test.py::test_png_gray16a[pdfrw] 
src/img2pdf_test.py::test_png_palette4[pikepdf] 
[gw11] [ 14%] PASSED src/img2pdf_test.py::test_gif_transparent[pikepdf] 
src/img2pdf_test.py::test_tiff_rgb12[internal] 
[gw14] [ 14%] PASSED src/img2pdf_test.py::test_gif_transparent[pdfrw] 
src/img2pdf_test.py::test_tiff_rgb12[pikepdf] 
[gw19] [ 14%] PASSED src/img2pdf_test.py::test_gif_palette4[pikepdf] 
src/img2pdf_test.py::test_tiff_rgb16[pikepdf] 
[gw12] [ 14%] PASSED src/img2pdf_test.py::test_gif_transparent[internal] 
src/img2pdf_test.py::test_tiff_rgb8[pdfrw] 
[gw1] [ 15%] PASSED src/img2pdf_test.py::test_png_palette1[pikepdf] 
src/img2pdf_test.py::test_tiff_float[pikepdf] 
[gw2] [ 15%] PASSED src/img2pdf_test.py::test_png_palette2[internal] 
src/img2pdf_test.py::test_tiff_float[pdfrw] 
[gw13] [ 15%] PASSED src/img2pdf_test.py::test_gif_palette1[internal] 
src/img2pdf_test.py::test_tiff_rgb12[pdfrw] 
[gw23] [ 16%] PASSED src/img2pdf_test.py::test_gif_animation[pikepdf] 
src/img2pdf_test.py::test_tiff_rgba8[pdfrw] 
[gw17] [ 16%] PASSED src/img2pdf_test.py::test_gif_palette2[pikepdf] 
src/img2pdf_test.py::test_tiff_gray16[internal] 
[gw11] [ 16%] ERROR src/img2pdf_test.py::test_tiff_rgb12[internal] 
src/img2pdf_test.py::test_tiff_palette2[pikepdf] 
[gw22] [ 16%] PASSED src/img2pdf_test.py::test_gif_animation[internal] 
src/img2pdf_test.py::test_tiff_gray4[pdfrw] 
[gw15] [ 17%] PASSED src/img2pdf_test.py::test_gif_palette1[pikepdf] 
src/img2pdf_test.py::test_tiff_multipage[internal] 
[gw0] [ 17%] PASSED src/img2pdf_test.py::test_png_palette1[internal] 
src/img2pdf_test.py::test_tiff_float[internal] 
[gw16] [ 17%] PASSED src/img2pdf_test.py::test_gif_palette2[internal] 
src/img2pdf_test.py::test_tiff_palette1[internal] 
[gw3] [ 18%] PASSED src/img2pdf_test.py::test_png_palette2[pikepdf] 
src/img2pdf_test.py::test_tiff_cmyk8[internal] 
[gw14] [ 18%] ERROR src/img2pdf_test.py::test_tiff_rgb12[pikepdf] 
src/img2pdf_test.py::test_tiff_palette8[internal] 
[gw18] [ 18%] PASSED src/img2pdf_test.py::test_gif_palette4[internal] 
src/img2pdf_test.py::test_tiff_gray1[internal] 
[gw2] [ 18%] ERROR src/img2pdf_test.py::test_tiff_float[pdfrw] 
src/img2pdf_test.py::test_tiff_ccitt_msb_l2m_white[pikepdf] 
[gw1] [ 19%] ERROR src/img2pdf_test.py::test_tiff_float[pikepdf] 
src/img2pdf_test.py::test_tiff_ccitt_msb_m2l_white[pikepdf] 
[gw10] [ 19%] FAILED src/img2pdf_test.py::test_png_icc[pdfrw] 
src/img2pdf_test.py::test_tiff_rgb8[pikepdf] 
[gw0] [ 19%] ERROR src/img2pdf_test.py::test_tiff_float[internal] 
src/img2pdf_test.py::test_tiff_ccitt_nometa1[pikepdf] 
[gw8] [ 20%] FAILED src/img2pdf_test.py::test_png_icc[internal] 
[gw13] [ 20%] ERROR src/img2pdf_test.py::test_tiff_rgb12[pdfrw] 
src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_black[pikepdf] 
src/img2pdf_test.py::test_tiff_cmyk16[pdfrw] 
[gw4] [ 20%] PASSED src/img2pdf_test.py::test_png_palette4[internal] 
src/img2pdf_test.py::test_tiff_cmyk8[pikepdf] 
[gw9] [ 20%] FAILED src/img2pdf_test.py::test_png_icc[pikepdf] 
src/img2pdf_test.py::test_tiff_rgb8[internal] 
[gw5] [ 21%] PASSED src/img2pdf_test.py::test_png_palette4[pikepdf] 
src/img2pdf_test.py::test_tiff_cmyk8[pdfrw] 
[gw19] [ 21%] PASSED src/img2pdf_test.py::test_tiff_rgb16[pikepdf] 
src/img2pdf_test.py::test_tiff_rgb16[pdfrw] 
[gw12] [ 21%] PASSED src/img2pdf_test.py::test_tiff_rgb8[pdfrw] 
src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_white[pikepdf] 
[gw23] [ 22%] PASSED src/img2pdf_test.py::test_tiff_rgba8[pdfrw] 
src/img2pdf_test.py::test_tiff_rgba16[internal] 
[gw17] [ 22%] PASSED src/img2pdf_test.py::test_tiff_gray16[internal] 
src/img2pdf_test.py::test_tiff_gray16[pikepdf] 
[gw8] [ 22%] PASSED src/img2pdf_test.py::test_tiff_cmyk16[pdfrw] 
src/img2pdf_test.py::test_layout[layout_test_cases4] 
[gw8] [ 22%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases4] 
src/img2pdf_test.py::test_layout[layout_test_cases5] 
[gw8] [ 23%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases5] 
src/img2pdf_test.py::test_layout[layout_test_cases6] 
[gw8] [ 23%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases6] 
src/img2pdf_test.py::test_layout[layout_test_cases16] 
[gw8] [ 23%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases16] 
src/img2pdf_test.py::test_layout[layout_test_cases17] 
[gw8] [ 24%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases17] 
src/img2pdf_test.py::test_layout[layout_test_cases18] 
[gw8] [ 24%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases18] 
src/img2pdf_test.py::test_layout[layout_test_cases19] 
[gw8] [ 24%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases19] 
src/img2pdf_test.py::test_layout[layout_test_cases20] 
[gw8] [ 25%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases20] 
src/img2pdf_test.py::test_layout[layout_test_cases21] 
[gw8] [ 25%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases21] 
src/img2pdf_test.py::test_layout[layout_test_cases22] 
[gw8] [ 25%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases22] 
src/img2pdf_test.py::test_layout[layout_test_cases23] 
[gw8] [ 25%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases23] 
src/img2pdf_test.py::test_layout[layout_test_cases24] 
[gw8] [ 26%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases24] 
[gw3] [ 26%] PASSED src/img2pdf_test.py::test_tiff_cmyk8[internal] 
src/img2pdf_test.py::test_layout[layout_test_cases25] 
[gw8] [ 26%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases25] 
src/img2pdf_test.py::test_tiff_ccitt_nometa2[pikepdf] 
src/img2pdf_test.py::test_layout[layout_test_cases26] 
[gw8] [ 27%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases26] 
src/img2pdf_test.py::test_layout[layout_test_cases27] 
[gw8] [ 27%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases27] 
src/img2pdf_test.py::test_layout[layout_test_cases28] 
[gw8] [ 27%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases28] 
src/img2pdf_test.py::test_layout[layout_test_cases29] 
[gw11] [ 27%] PASSED src/img2pdf_test.py::test_tiff_palette2[pikepdf] 
[gw8] [ 28%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases29] 
src/img2pdf_test.py::test_tiff_palette4[internal] 
src/img2pdf_test.py::test_layout[layout_test_cases30] 
[gw8] [ 28%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases30] 
src/img2pdf_test.py::test_layout[layout_test_cases31] 
[gw8] [ 28%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases31] 
src/img2pdf_test.py::test_layout[layout_test_cases32] 
[gw8] [ 29%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases32] 
src/img2pdf_test.py::test_layout[layout_test_cases33] 
[gw8] [ 29%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases33] 
src/img2pdf_test.py::test_layout[layout_test_cases34] 
[gw8] [ 29%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases34] 
src/img2pdf_test.py::test_layout[layout_test_cases35] 
[gw8] [ 29%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases35] 
[gw16] [ 30%] PASSED src/img2pdf_test.py::test_tiff_palette1[internal] 
src/img2pdf_test.py::test_layout[layout_test_cases36] 
[gw8] [ 30%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases36] 
src/img2pdf_test.py::test_tiff_palette1[pikepdf] 
src/img2pdf_test.py::test_layout[layout_test_cases37] 
[gw8] [ 30%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases37] 
src/img2pdf_test.py::test_layout[layout_test_cases38] 
[gw8] [ 31%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases38] 
[gw22] [ 31%] PASSED src/img2pdf_test.py::test_tiff_gray4[pdfrw] 
src/img2pdf_test.py::test_layout[layout_test_cases39] 
src/img2pdf_test.py::test_tiff_gray8[internal] 
[gw8] [ 31%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases39] 
src/img2pdf_test.py::test_layout[layout_test_cases40] 
[gw8] [ 31%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases40] 
src/img2pdf_test.py::test_layout[layout_test_cases41] 
[gw8] [ 32%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases41] 
src/img2pdf_test.py::test_layout[layout_test_cases42] 
[gw8] [ 32%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases42] 
src/img2pdf_test.py::test_layout[layout_test_cases43] 
[gw8] [ 32%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases43] 
src/img2pdf_test.py::test_layout[layout_test_cases44] 
[gw8] [ 33%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases44] 
src/img2pdf_test.py::test_layout[layout_test_cases45] 
[gw8] [ 33%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases45] 
src/img2pdf_test.py::test_layout[layout_test_cases46] 
[gw8] [ 33%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases46] 
src/img2pdf_test.py::test_layout[layout_test_cases47] 
[gw8] [ 33%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases47] 
src/img2pdf_test.py::test_layout[layout_test_cases48] 
[gw8] [ 34%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases48] 
src/img2pdf_test.py::test_layout[layout_test_cases49] 
[gw8] [ 34%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases49] 
src/img2pdf_test.py::test_layout[layout_test_cases50] 
[gw8] [ 34%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases50] 
src/img2pdf_test.py::test_layout[layout_test_cases51] 
[gw8] [ 35%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases51] 
src/img2pdf_test.py::test_layout[layout_test_cases52] 
[gw8] [ 35%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases52] 
src/img2pdf_test.py::test_layout[layout_test_cases53] 
[gw8] [ 35%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases53] 
src/img2pdf_test.py::test_layout[layout_test_cases54] 
[gw8] [ 35%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases54] 
src/img2pdf_test.py::test_layout[layout_test_cases55] 
[gw8] [ 36%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases55] 
src/img2pdf_test.py::test_layout[layout_test_cases56] 
[gw8] [ 36%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases56] 
src/img2pdf_test.py::test_layout[layout_test_cases57] 
[gw8] [ 36%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases57] 
src/img2pdf_test.py::test_layout[layout_test_cases58] 
[gw8] [ 37%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases58] 
src/img2pdf_test.py::test_layout[layout_test_cases59] 
[gw8] [ 37%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases59] 
src/img2pdf_test.py::test_layout[layout_test_cases60] 
[gw8] [ 37%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases60] 
src/img2pdf_test.py::test_layout[layout_test_cases61] 
[gw8] [ 37%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases61] 
src/img2pdf_test.py::test_layout[layout_test_cases62] 
[gw8] [ 38%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases62] 
src/img2pdf_test.py::test_layout[layout_test_cases63] 
[gw8] [ 38%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases63] 
src/img2pdf_test.py::test_layout[layout_test_cases64] 
[gw8] [ 38%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases64] 
src/img2pdf_test.py::test_layout[layout_test_cases65] 
[gw8] [ 39%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases65] 
src/img2pdf_test.py::test_layout[layout_test_cases66] 
[gw8] [ 39%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases66] 
src/img2pdf_test.py::test_layout[layout_test_cases67] 
[gw8] [ 39%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases67] 
src/img2pdf_test.py::test_layout[layout_test_cases68] 
[gw8] [ 39%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases68] 
src/img2pdf_test.py::test_layout[layout_test_cases69] 
[gw8] [ 40%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases69] 
src/img2pdf_test.py::test_layout[layout_test_cases70] 
[gw10] [ 40%] PASSED src/img2pdf_test.py::test_tiff_rgb8[pikepdf] 
[gw8] [ 40%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases70] 
src/img2pdf_test.py::test_layout[layout_test_cases71] 
src/img2pdf_test.py::test_layout[layout_test_cases1] 
[gw8] [ 41%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases71] 
src/img2pdf_test.py::test_layout[layout_test_cases72] 
[gw10] [ 41%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases1] 
[gw8] [ 41%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases72] 
src/img2pdf_test.py::test_layout[layout_test_cases2] 
[gw15] [ 41%] PASSED src/img2pdf_test.py::test_tiff_multipage[internal] 
src/img2pdf_test.py::test_tiff_multipage[pikepdf] 
[gw10] [ 42%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases2] 
src/img2pdf_test.py::test_layout[layout_test_cases73] 
src/img2pdf_test.py::test_layout[layout_test_cases3] 
[gw8] [ 42%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases73] 
[gw10] [ 42%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases3] 
src/img2pdf_test.py::test_layout[layout_test_cases74] 
src/img2pdf_test.py::test_layout[layout_test_cases75] 
[gw10] [ 43%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases75] 
[gw8] [ 43%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases74] 
src/img2pdf_test.py::test_layout[layout_test_cases77] 
src/img2pdf_test.py::test_layout[layout_test_cases76] 
[gw8] [ 43%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases76] 
[gw10] [ 43%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases77] 
src/img2pdf_test.py::test_layout[layout_test_cases78] 
src/img2pdf_test.py::test_layout[layout_test_cases79] 
[gw8] [ 44%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases79] 
[gw10] [ 44%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases78] 
src/img2pdf_test.py::test_layout[layout_test_cases80] 
src/img2pdf_test.py::test_layout[layout_test_cases81] 
[gw10] [ 44%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases80] 
[gw8] [ 45%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases81] 
src/img2pdf_test.py::test_layout[layout_test_cases83] 
src/img2pdf_test.py::test_layout[layout_test_cases82] 
[gw8] [ 45%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases83] 
[gw10] [ 45%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases82] 
src/img2pdf_test.py::test_layout[layout_test_cases85] 
src/img2pdf_test.py::test_layout[layout_test_cases84] 
[gw8] [ 45%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases85] 
[gw10] [ 46%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases84] 
src/img2pdf_test.py::test_layout[layout_test_cases86] 
src/img2pdf_test.py::test_layout[layout_test_cases87] 
[gw8] [ 46%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases86] 
[gw10] [ 46%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases87] 
src/img2pdf_test.py::test_layout[layout_test_cases88] 
[gw8] [ 47%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases88] 
src/img2pdf_test.py::test_layout[layout_test_cases89] 
[gw10] [ 47%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases89] 
src/img2pdf_test.py::test_layout[layout_test_cases90] 
src/img2pdf_test.py::test_layout[layout_test_cases91] 
[gw8] [ 47%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases90] 
[gw10] [ 47%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases91] 
src/img2pdf_test.py::test_layout[layout_test_cases92] 
[gw8] [ 48%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases92] 
src/img2pdf_test.py::test_layout[layout_test_cases93] 
[gw10] [ 48%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases93] 
src/img2pdf_test.py::test_layout[layout_test_cases94] 
[gw8] [ 48%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases94] 
src/img2pdf_test.py::test_layout[layout_test_cases95] 
[gw10] [ 49%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases95] 
src/img2pdf_test.py::test_layout[layout_test_cases96] 
[gw8] [ 49%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases96] 
src/img2pdf_test.py::test_layout[layout_test_cases97] 
src/img2pdf_test.py::test_layout[layout_test_cases98] 
[gw10] [ 49%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases97] 
[gw8] [ 50%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases98] 
src/img2pdf_test.py::test_layout[layout_test_cases99] 
[gw10] [ 50%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases99] 
src/img2pdf_test.py::test_layout[layout_test_cases100] 
[gw2] [ 50%] PASSED src/img2pdf_test.py::test_tiff_ccitt_msb_l2m_white[pikepdf] 
[gw8] [ 50%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases100] 
src/img2pdf_test.py::test_tiff_ccitt_msb_l2m_white[pdfrw] 
src/img2pdf_test.py::test_layout[layout_test_cases101] 
src/img2pdf_test.py::test_layout[layout_test_cases102] 
[gw10] [ 51%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases101] 
[gw8] [ 51%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases102] 
src/img2pdf_test.py::test_layout[layout_test_cases103] 
src/img2pdf_test.py::test_layout[layout_test_cases104] 
[gw10] [ 51%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases103] 
[gw8] [ 52%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases104] 
src/img2pdf_test.py::test_layout[layout_test_cases105] 
src/img2pdf_test.py::test_layout[layout_test_cases106] 
[gw10] [ 52%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases105] 
[gw8] [ 52%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases106] 
src/img2pdf_test.py::test_layout[layout_test_cases107] 
src/img2pdf_test.py::test_layout[layout_test_cases108] 
[gw10] [ 52%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases107] 
[gw8] [ 53%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases108] 
src/img2pdf_test.py::test_layout[layout_test_cases109] 
src/img2pdf_test.py::test_layout[layout_test_cases110] 
[gw10] [ 53%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases109] 
[gw8] [ 53%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases110] 
src/img2pdf_test.py::test_layout[layout_test_cases111] 
src/img2pdf_test.py::test_layout[layout_test_cases112] 
[gw10] [ 54%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases111] 
[gw8] [ 54%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases112] 
src/img2pdf_test.py::test_layout[layout_test_cases113] 
src/img2pdf_test.py::test_layout[layout_test_cases114] 
[gw10] [ 54%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases113] 
src/img2pdf_test.py::test_layout[layout_test_cases115] 
[gw9] [ 54%] PASSED src/img2pdf_test.py::test_tiff_rgb8[internal] 
[gw8] [ 55%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases114] 
[gw10] [ 55%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases115] 
src/img2pdf_test.py::test_layout[layout_test_cases10] 
[gw9] [ 55%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases10] 
src/img2pdf_test.py::test_layout[layout_test_cases117] 
src/img2pdf_test.py::test_layout[layout_test_cases116] 
[gw10] [ 56%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases117] 
src/img2pdf_test.py::test_layout[layout_test_cases11] 
[gw8] [ 56%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases116] 
[gw9] [ 56%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases11] 
src/img2pdf_test.py::test_layout[layout_test_cases118] 
src/img2pdf_test.py::test_layout[layout_test_cases12] 
src/img2pdf_test.py::test_layout[layout_test_cases119] 
[gw10] [ 56%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases118] 
[gw8] [ 57%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases119] 
[gw9] [ 57%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases12] 
[gw18] [ 57%] ERROR src/img2pdf_test.py::test_tiff_gray1[internal] 
src/img2pdf_test.py::test_tiff_gray1[pikepdf] 
[gw1] [ 58%] PASSED src/img2pdf_test.py::test_tiff_ccitt_msb_m2l_white[pikepdf] 
src/img2pdf_test.py::test_tiff_ccitt_msb_m2l_white[pdfrw] 
src/img2pdf_test.py::test_layout[layout_test_cases120] 
src/img2pdf_test.py::test_layout[layout_test_cases122] 
src/img2pdf_test.py::test_layout[layout_test_cases121] 
[gw8] [ 58%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases122] 
[gw9] [ 58%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases121] 
src/img2pdf_test.py::test_layout[layout_test_cases124] 
[gw10] [ 58%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases120] 
src/img2pdf_test.py::test_layout[layout_test_cases125] 
[gw8] [ 59%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases124] 
[gw9] [ 59%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases125] 
src/img2pdf_test.py::test_layout[layout_test_cases123] 
[gw10] [ 59%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases123] 
src/img2pdf_test.py::test_layout[layout_test_cases126] 
src/img2pdf_test.py::test_layout[layout_test_cases127] 
src/img2pdf_test.py::test_layout[layout_test_cases128] 
[gw9] [ 60%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases127] 
[gw10] [ 60%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases128] 
[gw8] [ 60%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases126] 
src/img2pdf_test.py::test_layout[layout_test_cases130] 
src/img2pdf_test.py::test_layout[layout_test_cases131] 
src/img2pdf_test.py::test_layout[layout_test_cases129] 
[gw9] [ 60%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases130] 
[gw10] [ 61%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases131] 
[gw8] [ 61%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases129] 
src/img2pdf_test.py::test_layout[layout_test_cases133] 
src/img2pdf_test.py::test_layout[layout_test_cases132] 
src/img2pdf_test.py::test_layout[layout_test_cases134] 
[gw9] [ 61%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases132] 
[gw10] [ 62%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases133] 
[gw8] [ 62%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases134] 
src/img2pdf_test.py::test_layout[layout_test_cases135] 
src/img2pdf_test.py::test_layout[layout_test_cases136] 
src/img2pdf_test.py::test_layout[layout_test_cases137] 
[gw10] [ 62%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases135] 
[gw9] [ 62%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases136] 
[gw8] [ 63%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases137] 
src/img2pdf_test.py::test_layout[layout_test_cases138] 
src/img2pdf_test.py::test_layout[layout_test_cases140] 
[gw10] [ 63%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases138] 
src/img2pdf_test.py::test_layout[layout_test_cases139] 
[gw8] [ 63%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases140] 
[gw9] [ 64%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases139] 
src/img2pdf_test.py::test_layout[layout_test_cases141] 
[gw10] [ 64%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases141] 
src/img2pdf_test.py::test_layout[layout_test_cases142] 
src/img2pdf_test.py::test_layout[layout_test_cases143] 
[gw8] [ 64%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases142] 
src/img2pdf_test.py::test_layout[layout_test_cases144] 
[gw10] [ 64%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases144] 
src/img2pdf_test.py::test_layout[layout_test_cases145] 
[gw9] [ 65%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases143] 
src/img2pdf_test.py::test_layout[layout_test_cases147] 
[gw8] [ 65%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases145] 
[gw10] [ 65%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases147] 
src/img2pdf_test.py::test_layout[layout_test_cases146] 
[gw9] [ 66%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases146] 
src/img2pdf_test.py::test_layout[layout_test_cases148] 
[gw8] [ 66%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases148] 
src/img2pdf_test.py::test_layout[layout_test_cases149] 
[gw10] [ 66%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases149] 
src/img2pdf_test.py::test_layout[layout_test_cases150] 
[gw9] [ 66%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases150] 
src/img2pdf_test.py::test_layout[layout_test_cases151] 
src/img2pdf_test.py::test_layout[layout_test_cases152] 
src/img2pdf_test.py::test_layout[layout_test_cases153] 
[gw10] [ 67%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases152] 
[gw8] [ 67%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases151] 
[gw9] [ 67%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases153] 
src/img2pdf_test.py::test_layout[layout_test_cases155] 
src/img2pdf_test.py::test_layout[layout_test_cases154] 
[gw10] [ 68%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases155] 
src/img2pdf_test.py::test_layout[layout_test_cases156] 
[gw9] [ 68%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases156] 
[gw8] [ 68%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases154] 
src/img2pdf_test.py::test_layout[layout_test_cases157] 
[gw10] [ 68%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases157] 
src/img2pdf_test.py::test_layout[layout_test_cases158] 
src/img2pdf_test.py::test_layout[layout_test_cases159] 
src/img2pdf_test.py::test_layout[layout_test_cases160] 
[gw8] [ 69%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases158] 
[gw10] [ 69%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases160] 
[gw9] [ 69%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases159] 
src/img2pdf_test.py::test_layout[layout_test_cases161] 
src/img2pdf_test.py::test_layout[layout_test_cases162] 
src/img2pdf_test.py::test_layout[layout_test_cases163] 
[gw8] [ 70%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases161] 
[gw9] [ 70%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases162] 
[gw10] [ 70%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases163] 
src/img2pdf_test.py::test_layout[layout_test_cases164] 
[gw8] [ 70%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases164] 
src/img2pdf_test.py::test_layout[layout_test_cases165] 
src/img2pdf_test.py::test_layout[layout_test_cases166] 
src/img2pdf_test.py::test_layout[layout_test_cases167] 
[gw9] [ 71%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases165] 
[gw10] [ 71%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases166] 
[gw8] [ 71%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases167] 
src/img2pdf_test.py::test_layout[layout_test_cases168] 
src/img2pdf_test.py::test_layout[layout_test_cases170] 
src/img2pdf_test.py::test_layout[layout_test_cases169] 
[gw10] [ 72%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases168] 
[gw9] [ 72%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases169] 
[gw8] [ 72%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases170] 
src/img2pdf_test.py::test_layout[layout_test_cases171] 
[gw10] [ 72%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases171] 
src/img2pdf_test.py::test_layout[layout_test_cases172] 
[gw8] [ 73%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases172] 
src/img2pdf_test.py::test_layout[layout_test_cases173] 
[gw9] [ 73%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases173] 
src/img2pdf_test.py::test_layout[layout_test_cases174] 
src/img2pdf_test.py::test_layout[layout_test_cases175] 
src/img2pdf_test.py::test_layout[layout_test_cases176] 
[gw10] [ 73%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases174] 
[gw8] [ 74%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases175] 
[gw9] [ 74%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases176] 
src/img2pdf_test.py::test_layout[layout_test_cases177] 
[gw10] [ 74%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases177] 
src/img2pdf_test.py::test_layout[layout_test_cases178] 
[gw8] [ 75%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases178] 
src/img2pdf_test.py::test_layout[layout_test_cases180] 
src/img2pdf_test.py::test_layout[layout_test_cases179] 
src/img2pdf_test.py::test_general[CMYK.jpg-internal] 
[gw10] [ 75%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases180] 
[gw9] [ 75%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases179] 
src/img2pdf_test.py::test_general[CMYK.jpg-pikepdf] 
src/img2pdf_test.py::test_general[CMYK.jpg-pdfrw] 
[gw8] [ 75%] PASSED src/img2pdf_test.py::test_general[CMYK.jpg-internal] 
src/img2pdf_test.py::test_general[CMYK.tif-internal] 
[gw10] [ 76%] PASSED src/img2pdf_test.py::test_general[CMYK.jpg-pdfrw] 
[gw9] [ 76%] PASSED src/img2pdf_test.py::test_general[CMYK.jpg-pikepdf] 
[gw5] [ 76%] PASSED src/img2pdf_test.py::test_tiff_cmyk8[pdfrw] 
src/img2pdf_test.py::test_layout[layout_test_cases13] 
src/img2pdf_test.py::test_general[CMYK.tif-pdfrw] 
[gw5] [ 77%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases13] 
src/img2pdf_test.py::test_layout[layout_test_cases14] 
src/img2pdf_test.py::test_general[CMYK.tif-pikepdf] 
[gw8] [ 77%] PASSED src/img2pdf_test.py::test_general[CMYK.tif-internal] 
[gw5] [ 77%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases14] 
src/img2pdf_test.py::test_general[animation.gif-internal] 
src/img2pdf_test.py::test_layout[layout_test_cases15] 
[gw5] [ 77%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases15] 
src/img2pdf_test.py::test_general[gray.png-pikepdf] 
[gw10] [ 78%] PASSED src/img2pdf_test.py::test_general[CMYK.tif-pdfrw] 
src/img2pdf_test.py::test_general[animation.gif-pikepdf] 
[gw9] [ 78%] PASSED src/img2pdf_test.py::test_general[CMYK.tif-pikepdf] 
src/img2pdf_test.py::test_general[animation.gif-pdfrw] 
[gw9] [ 78%] PASSED src/img2pdf_test.py::test_general[animation.gif-pdfrw] 
src/img2pdf_test.py::test_general[mono.png-pikepdf] 
[gw5] [ 79%] PASSED src/img2pdf_test.py::test_general[gray.png-pikepdf] 
src/img2pdf_test.py::test_general[gray.png-pdfrw] 
[gw8] [ 79%] PASSED src/img2pdf_test.py::test_general[animation.gif-internal] 
[gw9] [ 79%] PASSED src/img2pdf_test.py::test_general[mono.png-pikepdf] 
[gw4] [ 79%] PASSED src/img2pdf_test.py::test_tiff_cmyk8[pikepdf] 
src/img2pdf_test.py::test_layout[layout_test_cases7] 
[gw4] [ 80%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases7] 
src/img2pdf_test.py::test_general[mono.png-pdfrw] 
src/img2pdf_test.py::test_layout[layout_test_cases8] 
src/img2pdf_test.py::test_general[gray.png-internal] 
[gw5] [ 80%] PASSED src/img2pdf_test.py::test_general[gray.png-pdfrw] 
[gw4] [ 80%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases8] 
[gw10] [ 81%] PASSED src/img2pdf_test.py::test_general[animation.gif-pikepdf] 
src/img2pdf_test.py::test_general[mono.tif-internal] 
src/img2pdf_test.py::test_layout[layout_test_cases9] 
src/img2pdf_test.py::test_general[mono.png-internal] 
[gw4] [ 81%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases9] 
[gw8] [ 81%] PASSED src/img2pdf_test.py::test_general[gray.png-internal] 
src/img2pdf_test.py::test_general[normal.jpg-pikepdf] 
src/img2pdf_test.py::test_general[mono.tif-pdfrw] 
[gw9] [ 81%] PASSED src/img2pdf_test.py::test_general[mono.png-pdfrw] 
src/img2pdf_test.py::test_general[mono.tif-pikepdf] 
[gw10] [ 82%] PASSED src/img2pdf_test.py::test_general[mono.png-internal] 
src/img2pdf_test.py::test_general[normal.jpg-pdfrw] 
[gw10] [ 82%] PASSED src/img2pdf_test.py::test_general[normal.jpg-pdfrw] 
[gw4] [ 82%] PASSED src/img2pdf_test.py::test_general[normal.jpg-pikepdf] 
src/img2pdf_test.py::test_general[normal.png-internal] 
[gw19] [ 83%] PASSED src/img2pdf_test.py::test_tiff_rgb16[pdfrw] 
src/img2pdf_test.py::test_tiff_rgba8[internal] 
[gw4] [ 83%] PASSED src/img2pdf_test.py::test_general[normal.png-internal] 
[gw13] [ 83%] PASSED src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_black[pikepdf] 
src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_black[pdfrw] 
[gw0] [ 83%] PASSED src/img2pdf_test.py::test_tiff_ccitt_nometa1[pikepdf] 
src/img2pdf_test.py::test_tiff_ccitt_nometa1[pdfrw] 
[gw21] [ 84%] PASSED src/img2pdf_test.py::test_gif_palette8[pikepdf] 
src/img2pdf_test.py::test_tiff_gray2[pikepdf] 
[gw17] [ 84%] PASSED src/img2pdf_test.py::test_tiff_gray16[pikepdf] 
src/img2pdf_test.py::test_tiff_gray16[pdfrw] 
[gw23] [ 84%] PASSED src/img2pdf_test.py::test_tiff_rgba16[internal] 
src/img2pdf_test.py::test_tiff_rgba16[pikepdf] 
[gw7] [ 85%] PASSED src/img2pdf_test.py::test_png_palette8[pikepdf] 
src/img2pdf_test.py::test_tiff_cmyk16[pikepdf] 
[gw12] [ 85%] PASSED src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_white[pikepdf] 
src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_white[pdfrw] 
[gw20] [ 85%] PASSED src/img2pdf_test.py::test_gif_palette8[internal] 
src/img2pdf_test.py::test_tiff_rgb14[internal] 
[gw16] [ 85%] PASSED src/img2pdf_test.py::test_tiff_palette1[pikepdf] 
src/img2pdf_test.py::test_tiff_palette2[internal] 
[gw22] [ 86%] PASSED src/img2pdf_test.py::test_tiff_gray8[internal] 
src/img2pdf_test.py::test_tiff_gray8[pikepdf] 
[gw6] [ 86%] PASSED src/img2pdf_test.py::test_png_palette8[internal] 
src/img2pdf_test.py::test_tiff_cmyk16[internal] 
[gw20] [ 86%] ERROR src/img2pdf_test.py::test_tiff_rgb14[internal] 
src/img2pdf_test.py::test_tiff_rgb14[pikepdf] 
[gw5] [ 87%] FAILED src/img2pdf_test.py::test_general[mono.tif-internal] 
src/img2pdf_test.py::test_general[normal.jpg-internal] 
[gw5] [ 87%] PASSED src/img2pdf_test.py::test_general[normal.jpg-internal] 
[gw2] [ 87%] PASSED src/img2pdf_test.py::test_tiff_ccitt_msb_l2m_white[pdfrw] 
src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_black[internal] 
[gw9] [ 87%] FAILED src/img2pdf_test.py::test_general[mono.tif-pikepdf] 
src/img2pdf_test.py::test_general[normal.png-pdfrw] 
[gw8] [ 88%] FAILED src/img2pdf_test.py::test_general[mono.tif-pdfrw] 
[gw9] [ 88%] PASSED src/img2pdf_test.py::test_general[normal.png-pdfrw] 
src/img2pdf_test.py::test_general[normal.png-pikepdf] 
[gw8] [ 88%] PASSED src/img2pdf_test.py::test_general[normal.png-pikepdf] 
[gw1] [ 89%] PASSED src/img2pdf_test.py::test_tiff_ccitt_msb_m2l_white[pdfrw] 
src/img2pdf_test.py::test_tiff_ccitt_msb_l2m_white[internal] 
[gw19] [ 89%] PASSED src/img2pdf_test.py::test_tiff_rgba8[internal] 
src/img2pdf_test.py::test_tiff_rgba8[pikepdf] 
[gw3] [ 89%] PASSED src/img2pdf_test.py::test_tiff_ccitt_nometa2[pikepdf] 
src/img2pdf_test.py::test_tiff_ccitt_nometa2[pdfrw] 
[gw18] [ 89%] ERROR src/img2pdf_test.py::test_tiff_gray1[pikepdf] 
src/img2pdf_test.py::test_tiff_gray1[pdfrw] 
[gw15] [ 90%] PASSED src/img2pdf_test.py::test_tiff_multipage[pikepdf] 
[gw17] [ 90%] PASSED src/img2pdf_test.py::test_tiff_gray16[pdfrw] 
src/img2pdf_test.py::test_tiff_multipage[pdfrw] 
[gw20] [ 90%] ERROR src/img2pdf_test.py::test_tiff_rgb14[pikepdf] 
src/img2pdf_test.py::test_tiff_rgb14[pdfrw] 
[gw23] [ 91%] PASSED src/img2pdf_test.py::test_tiff_rgba16[pikepdf] 
src/img2pdf_test.py::test_tiff_rgba16[pdfrw] 
[gw11] [ 91%] PASSED src/img2pdf_test.py::test_tiff_palette4[internal] 
src/img2pdf_test.py::test_tiff_palette4[pikepdf] 
[gw0] [ 91%] PASSED src/img2pdf_test.py::test_tiff_ccitt_nometa1[pdfrw] 
src/img2pdf_test.py::test_tiff_ccitt_nometa2[internal] 
[gw13] [ 91%] PASSED src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_black[pdfrw] 
src/img2pdf_test.py::test_tiff_ccitt_nometa1[internal] 
[gw7] [ 92%] PASSED src/img2pdf_test.py::test_tiff_cmyk16[pikepdf] 
[gw20] [ 92%] ERROR src/img2pdf_test.py::test_tiff_rgb14[pdfrw] 
src/img2pdf_test.py::test_tiff_rgb16[internal] 
[gw21] [ 92%] PASSED src/img2pdf_test.py::test_tiff_gray2[pikepdf] 
src/img2pdf_test.py::test_tiff_gray2[pdfrw] 
[gw12] [ 93%] PASSED src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_white[pdfrw] 
src/img2pdf_test.py::test_tiff_ccitt_msb_m2l_white[internal] 
[gw14] [ 93%] PASSED src/img2pdf_test.py::test_tiff_palette8[internal] 
src/img2pdf_test.py::test_tiff_palette8[pikepdf] 
[gw6] [ 93%] PASSED src/img2pdf_test.py::test_tiff_cmyk16[internal] 
[gw16] [ 93%] PASSED src/img2pdf_test.py::test_tiff_palette2[internal] 
[gw22] [ 94%] PASSED src/img2pdf_test.py::test_tiff_gray8[pikepdf] 
src/img2pdf_test.py::test_tiff_gray8[pdfrw] 
[gw19] [ 94%] PASSED src/img2pdf_test.py::test_tiff_rgba8[pikepdf] 
[gw23] [ 94%] PASSED src/img2pdf_test.py::test_tiff_rgba16[pdfrw] 
[gw3] [ 95%] PASSED src/img2pdf_test.py::test_tiff_ccitt_nometa2[pdfrw] 
src/img2pdf_test.py::test_layout[layout_test_cases0] 
[gw3] [ 95%] PASSED src/img2pdf_test.py::test_layout[layout_test_cases0] 
[gw2] [ 95%] PASSED src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_black[internal] 
[gw11] [ 95%] PASSED src/img2pdf_test.py::test_tiff_palette4[pikepdf] 
[gw18] [ 96%] ERROR src/img2pdf_test.py::test_tiff_gray1[pdfrw] 
src/img2pdf_test.py::test_tiff_gray2[internal] 
[gw1] [ 96%] PASSED src/img2pdf_test.py::test_tiff_ccitt_msb_l2m_white[internal] 
[gw20] [ 96%] PASSED src/img2pdf_test.py::test_tiff_rgb16[internal] 
[gw13] [ 97%] PASSED src/img2pdf_test.py::test_tiff_ccitt_nometa1[internal] 
[gw0] [ 97%] PASSED src/img2pdf_test.py::test_tiff_ccitt_nometa2[internal] 
[gw15] [ 97%] PASSED src/img2pdf_test.py::test_tiff_multipage[pdfrw] 
[gw21] [ 97%] PASSED src/img2pdf_test.py::test_tiff_gray2[pdfrw] 
src/img2pdf_test.py::test_tiff_gray4[internal] 
[gw14] [ 98%] PASSED src/img2pdf_test.py::test_tiff_palette8[pikepdf] 
src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_white[internal] 
[gw12] [ 98%] PASSED src/img2pdf_test.py::test_tiff_ccitt_msb_m2l_white[internal] 
[gw22] [ 98%] PASSED src/img2pdf_test.py::test_tiff_gray8[pdfrw] 
[gw18] [ 99%] PASSED src/img2pdf_test.py::test_tiff_gray2[internal] 
[gw21] [ 99%] PASSED src/img2pdf_test.py::test_tiff_gray4[internal] 
src/img2pdf_test.py::test_tiff_gray4[pikepdf] 
[gw14] [ 99%] PASSED src/img2pdf_test.py::test_tiff_ccitt_lsb_m2l_white[internal] 
[gw21] [100%] PASSED src/img2pdf_test.py::test_tiff_gray4[pikepdf] 

==================================== ERRORS ====================================
_________________ ERROR at setup of test_tiff_rgb12[internal] __________________
[gw11] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...2fa220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw11'))
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw11/normal16_png0/normal16.png')

    @pytest.fixture(scope="session")
    def tiff_rgb12_img(tmp_path_factory, tmp_normal16_png):
        in_img = tmp_path_factory.mktemp("tiff_rgb8") / "in.tiff"
        subprocess.check_call(
            ["convert", str(tmp_normal16_png), "-depth", "12", str(in_img)]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
        if identify[0].get("version", "0") < "1.0":
            assert identify[0]["image"].get("depth") == 12, str(identify)
        else:
>           assert identify[0]["image"].get("depth") == 16, str(identify)
E           AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw11/tiff_rgb80/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 12, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 4095, 'mean': 1194.9648, 'median': 0, 'standardDeviation': 1707.1256, 'kurtosis': -1.0010315, 'skewness': 0.91501655, 'entropy': 0.45560277}}, 'channelStatistics': {'red': {'min': 0, 'max': 4095, 'mean': 1195.0887, 'median': 0, 'standardDeviation': 1706.6778, 'kurtosis': -1.0008776, 'skewness': 0.91503326, 'entropy': 0.45681467}, 'green': {'min': 0, 'max': 4095, 'mean': 1197.0481, 'median': 0, 'standardDeviation': 1708.0055, 'kurtosis': -1.0066275, 'skewness': 0.91215625, 'entropy': 0.45564261}, 'blue': {'min': 0, 'max': 4095, 'mean': 1192.7576, 'median': 0, 'standardDeviation': 1706.6937, 'kurtosis': -0.99779046, 'skewness': 0.91710177, 'entropy': 0.45435104}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:44+00:00', 'date:modify': '2021-08-22T12:32:44+00:00', 'signature': 'fa10fdd9a22d9e666d0220b4aa501fcfa4c6fde32affdef69bf487a53be77b2d', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '30'}, 'tainted': False, 'filesize': '16464B', 'numberPixels': '3600', 'pixelsPerSecond': '1862122B', 'userTime': '0.000u', 'elapsedTime': '0:01.001', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E           assert 32 == 16
E             +32
E             -16

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 12,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45435104,
                                           'kurtosis': -0.99779046,
                                           'max': 4095,
                                           'mean': 1192.7576,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91710177,
                                           'standardDeviation': 1706.6937},
                                  'green': {'entropy': 0.45564261,
                                            'kurtosis': -1.0066275,
                                            'max': 4095,
                                            'mean': 1197.0481,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91215625,
                                            'standardDeviation': 1708.0055},
                                  'red': {'entropy': 0.45681467,
                                          'kurtosis': -1.0008776,
                                          'max': 4095,
                                          'mean': 1195.0887,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91503326,
                                          'standardDeviation': 1706.6778}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.001',
            'endianness': 'LSB',
            'filesize': '16464B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.45560277,
                                            'kurtosis': -1.0010315,
                                            'max': 4095,
                                            'mean': 1194.9648,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91501655,
                                            'standardDeviation': 1707.1256}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw11/tiff_rgb80/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '1862122B',
            'properties': {'date:create': '2021-08-22T12:32:44+00:00',
                           'date:modify': '2021-08-22T12:32:44+00:00',
                           'signature': 'fa10fdd9a22d9e666d0220b4aa501fcfa4c6fde32affdef69bf487a53be77b2d',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '30'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.000u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw11/tiff_rgb80/in.tiff')
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw11/normal16_png0/normal16.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw11'), _trace=<pluggy._tracing.TagTracerSub object at 0x7fd65f2fa220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw11'))

src/img2pdf_test.py:2463: AssertionError
__________________ ERROR at setup of test_tiff_rgb12[pikepdf] __________________
[gw14] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...e34220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw14'))
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw14/normal16_png0/normal16.png')

    @pytest.fixture(scope="session")
    def tiff_rgb12_img(tmp_path_factory, tmp_normal16_png):
        in_img = tmp_path_factory.mktemp("tiff_rgb8") / "in.tiff"
        subprocess.check_call(
            ["convert", str(tmp_normal16_png), "-depth", "12", str(in_img)]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
        if identify[0].get("version", "0") < "1.0":
            assert identify[0]["image"].get("depth") == 12, str(identify)
        else:
>           assert identify[0]["image"].get("depth") == 16, str(identify)
E           AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw14/tiff_rgb80/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 12, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 4095, 'mean': 1194.9648, 'median': 0, 'standardDeviation': 1707.1256, 'kurtosis': -1.0010315, 'skewness': 0.91501655, 'entropy': 0.45560277}}, 'channelStatistics': {'red': {'min': 0, 'max': 4095, 'mean': 1195.0887, 'median': 0, 'standardDeviation': 1706.6778, 'kurtosis': -1.0008776, 'skewness': 0.91503326, 'entropy': 0.45681467}, 'green': {'min': 0, 'max': 4095, 'mean': 1197.0481, 'median': 0, 'standardDeviation': 1708.0055, 'kurtosis': -1.0066275, 'skewness': 0.91215625, 'entropy': 0.45564261}, 'blue': {'min': 0, 'max': 4095, 'mean': 1192.7576, 'median': 0, 'standardDeviation': 1706.6937, 'kurtosis': -0.99779046, 'skewness': 0.91710177, 'entropy': 0.45435104}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:44+00:00', 'date:modify': '2021-08-22T12:32:44+00:00', 'signature': 'fa10fdd9a22d9e666d0220b4aa501fcfa4c6fde32affdef69bf487a53be77b2d', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '30'}, 'tainted': False, 'filesize': '16464B', 'numberPixels': '3600', 'pixelsPerSecond': '2559384B', 'userTime': '0.000u', 'elapsedTime': '0:01.001', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E           assert 32 == 16
E             +32
E             -16

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 12,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45435104,
                                           'kurtosis': -0.99779046,
                                           'max': 4095,
                                           'mean': 1192.7576,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91710177,
                                           'standardDeviation': 1706.6937},
                                  'green': {'entropy': 0.45564261,
                                            'kurtosis': -1.0066275,
                                            'max': 4095,
                                            'mean': 1197.0481,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91215625,
                                            'standardDeviation': 1708.0055},
                                  'red': {'entropy': 0.45681467,
                                          'kurtosis': -1.0008776,
                                          'max': 4095,
                                          'mean': 1195.0887,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91503326,
                                          'standardDeviation': 1706.6778}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.001',
            'endianness': 'LSB',
            'filesize': '16464B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.45560277,
                                            'kurtosis': -1.0010315,
                                            'max': 4095,
                                            'mean': 1194.9648,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91501655,
                                            'standardDeviation': 1707.1256}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw14/tiff_rgb80/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '2559384B',
            'properties': {'date:create': '2021-08-22T12:32:44+00:00',
                           'date:modify': '2021-08-22T12:32:44+00:00',
                           'signature': 'fa10fdd9a22d9e666d0220b4aa501fcfa4c6fde32affdef69bf487a53be77b2d',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '30'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.000u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw14/tiff_rgb80/in.tiff')
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw14/normal16_png0/normal16.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw14'), _trace=<pluggy._tracing.TagTracerSub object at 0x7fe401e34220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw14'))

src/img2pdf_test.py:2463: AssertionError
___________________ ERROR at setup of test_tiff_float[pdfrw] ___________________
[gw2] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...6dc0220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw2'))
tmp_normal_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw2/normal_png0/normal.png')

    @pytest.fixture(scope="session")
    def tiff_float_img(tmp_path_factory, tmp_normal_png):
        in_img = tmp_path_factory.mktemp("tiff_float_img") / "in.tiff"
        subprocess.check_call(
            [
                "convert",
                str(tmp_normal_png),
                "-depth",
                "32",
                "-define",
                "quantum:format=floating-point",
                str(in_img),
            ]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
>       assert identify[0]["image"].get("depth") == 8, str(identify)
E       AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw2/tiff_float_img0/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 32, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 4294967300.0, 'mean': 1248849900.0, 'median': 0, 'standardDeviation': 1785458900.0, 'kurtosis': -1.0012551, 'skewness': 0.91534253, 'entropy': 0.46085853}}, 'channelStatistics': {'red': {'min': 0, 'max': 4294967300.0, 'mean': 1248979300.0, 'median': 0, 'standardDeviation': 1784991400.0, 'kurtosis': -1.0011022, 'skewness': 0.91535869, 'entropy': 0.4620463}, 'green': {'min': 0, 'max': 4294967300.0, 'mean': 1251028500.0, 'median': 0, 'standardDeviation': 1786376800.0, 'kurtosis': -1.0068552, 'skewness': 0.91247895, 'entropy': 0.46098122}, 'blue': {'min': 0, 'max': 4294967300.0, 'mean': 1246541700.0, 'median': 0, 'standardDeviation': 1785008300.0, 'kurtosis': -0.99800862, 'skewness': 0.91743134, 'entropy': 0.45954807}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:44+00:00', 'date:modify': '2021-08-22T12:32:44+00:00', 'quantum:format': 'floating-point', 'signature': '3682ab30ca3e3e65596cf553ac7ed02a600cca516ddb40cd75904aed99be32ca', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '11'}, 'tainted': False, 'filesize': '43530B', 'numberPixels': '3600', 'pixelsPerSecond': '1609447B', 'userTime': '0.000u', 'elapsedTime': '0:01.002', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E       assert 32 == 8
E         +32
E         -8

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 32,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45954807,
                                           'kurtosis': -0.99800862,
                                           'max': 4294967300.0,
                                           'mean': 1246541700.0,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91743134,
                                           'standardDeviation': 1785008300.0},
                                  'green': {'entropy': 0.46098122,
                                            'kurtosis': -1.0068552,
                                            'max': 4294967300.0,
                                            'mean': 1251028500.0,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91247895,
                                            'standardDeviation': 1786376800.0},
                                  'red': {'entropy': 0.4620463,
                                          'kurtosis': -1.0011022,
                                          'max': 4294967300.0,
                                          'mean': 1248979300.0,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91535869,
                                          'standardDeviation': 1784991400.0}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.002',
            'endianness': 'LSB',
            'filesize': '43530B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.46085853,
                                            'kurtosis': -1.0012551,
                                            'max': 4294967300.0,
                                            'mean': 1248849900.0,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91534253,
                                            'standardDeviation': 1785458900.0}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw2/tiff_float_img0/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '1609447B',
            'properties': {'date:create': '2021-08-22T12:32:44+00:00',
                           'date:modify': '2021-08-22T12:32:44+00:00',
                           'quantum:format': 'floating-point',
                           'signature': '3682ab30ca3e3e65596cf553ac7ed02a600cca516ddb40cd75904aed99be32ca',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '11'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.000u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw2/tiff_float_img0/in.tiff')
tmp_normal_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw2/normal_png0/normal.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw2'), _trace=<pluggy._tracing.TagTracerSub object at 0x7f1dc6dc0220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw2'))

src/img2pdf_test.py:2255: AssertionError
__________________ ERROR at setup of test_tiff_float[pikepdf] __________________
[gw1] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...ac93220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw1'))
tmp_normal_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw1/normal_png0/normal.png')

    @pytest.fixture(scope="session")
    def tiff_float_img(tmp_path_factory, tmp_normal_png):
        in_img = tmp_path_factory.mktemp("tiff_float_img") / "in.tiff"
        subprocess.check_call(
            [
                "convert",
                str(tmp_normal_png),
                "-depth",
                "32",
                "-define",
                "quantum:format=floating-point",
                str(in_img),
            ]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
>       assert identify[0]["image"].get("depth") == 8, str(identify)
E       AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw1/tiff_float_img0/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 32, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 4294967300.0, 'mean': 1248849900.0, 'median': 0, 'standardDeviation': 1785458900.0, 'kurtosis': -1.0012551, 'skewness': 0.91534253, 'entropy': 0.46085853}}, 'channelStatistics': {'red': {'min': 0, 'max': 4294967300.0, 'mean': 1248979300.0, 'median': 0, 'standardDeviation': 1784991400.0, 'kurtosis': -1.0011022, 'skewness': 0.91535869, 'entropy': 0.4620463}, 'green': {'min': 0, 'max': 4294967300.0, 'mean': 1251028500.0, 'median': 0, 'standardDeviation': 1786376800.0, 'kurtosis': -1.0068552, 'skewness': 0.91247895, 'entropy': 0.46098122}, 'blue': {'min': 0, 'max': 4294967300.0, 'mean': 1246541700.0, 'median': 0, 'standardDeviation': 1785008300.0, 'kurtosis': -0.99800862, 'skewness': 0.91743134, 'entropy': 0.45954807}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:44+00:00', 'date:modify': '2021-08-22T12:32:44+00:00', 'quantum:format': 'floating-point', 'signature': '3682ab30ca3e3e65596cf553ac7ed02a600cca516ddb40cd75904aed99be32ca', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '11'}, 'tainted': False, 'filesize': '43530B', 'numberPixels': '3600', 'pixelsPerSecond': '1441440B', 'userTime': '0.010u', 'elapsedTime': '0:01.002', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E       assert 32 == 8
E         +32
E         -8

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 32,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45954807,
                                           'kurtosis': -0.99800862,
                                           'max': 4294967300.0,
                                           'mean': 1246541700.0,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91743134,
                                           'standardDeviation': 1785008300.0},
                                  'green': {'entropy': 0.46098122,
                                            'kurtosis': -1.0068552,
                                            'max': 4294967300.0,
                                            'mean': 1251028500.0,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91247895,
                                            'standardDeviation': 1786376800.0},
                                  'red': {'entropy': 0.4620463,
                                          'kurtosis': -1.0011022,
                                          'max': 4294967300.0,
                                          'mean': 1248979300.0,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91535869,
                                          'standardDeviation': 1784991400.0}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.002',
            'endianness': 'LSB',
            'filesize': '43530B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.46085853,
                                            'kurtosis': -1.0012551,
                                            'max': 4294967300.0,
                                            'mean': 1248849900.0,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91534253,
                                            'standardDeviation': 1785458900.0}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw1/tiff_float_img0/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '1441440B',
            'properties': {'date:create': '2021-08-22T12:32:44+00:00',
                           'date:modify': '2021-08-22T12:32:44+00:00',
                           'quantum:format': 'floating-point',
                           'signature': '3682ab30ca3e3e65596cf553ac7ed02a600cca516ddb40cd75904aed99be32ca',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '11'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.010u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw1/tiff_float_img0/in.tiff')
tmp_normal_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw1/normal_png0/normal.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw1'), _trace=<pluggy._tracing.TagTracerSub object at 0x7f5b3ac93220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw1'))

src/img2pdf_test.py:2255: AssertionError
_________________ ERROR at setup of test_tiff_float[internal] __________________
[gw0] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...b528220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw0'))
tmp_normal_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw0/normal_png0/normal.png')

    @pytest.fixture(scope="session")
    def tiff_float_img(tmp_path_factory, tmp_normal_png):
        in_img = tmp_path_factory.mktemp("tiff_float_img") / "in.tiff"
        subprocess.check_call(
            [
                "convert",
                str(tmp_normal_png),
                "-depth",
                "32",
                "-define",
                "quantum:format=floating-point",
                str(in_img),
            ]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
>       assert identify[0]["image"].get("depth") == 8, str(identify)
E       AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw0/tiff_float_img0/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 32, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 4294967300.0, 'mean': 1248849900.0, 'median': 0, 'standardDeviation': 1785458900.0, 'kurtosis': -1.0012551, 'skewness': 0.91534253, 'entropy': 0.46085853}}, 'channelStatistics': {'red': {'min': 0, 'max': 4294967300.0, 'mean': 1248979300.0, 'median': 0, 'standardDeviation': 1784991400.0, 'kurtosis': -1.0011022, 'skewness': 0.91535869, 'entropy': 0.4620463}, 'green': {'min': 0, 'max': 4294967300.0, 'mean': 1251028500.0, 'median': 0, 'standardDeviation': 1786376800.0, 'kurtosis': -1.0068552, 'skewness': 0.91247895, 'entropy': 0.46098122}, 'blue': {'min': 0, 'max': 4294967300.0, 'mean': 1246541700.0, 'median': 0, 'standardDeviation': 1785008300.0, 'kurtosis': -0.99800862, 'skewness': 0.91743134, 'entropy': 0.45954807}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:45+00:00', 'date:modify': '2021-08-22T12:32:45+00:00', 'quantum:format': 'floating-point', 'signature': '3682ab30ca3e3e65596cf553ac7ed02a600cca516ddb40cd75904aed99be32ca', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '11'}, 'tainted': False, 'filesize': '43530B', 'numberPixels': '3600', 'pixelsPerSecond': '1342262B', 'userTime': '0.010u', 'elapsedTime': '0:01.002', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E       assert 32 == 8
E         +32
E         -8

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 32,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45954807,
                                           'kurtosis': -0.99800862,
                                           'max': 4294967300.0,
                                           'mean': 1246541700.0,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91743134,
                                           'standardDeviation': 1785008300.0},
                                  'green': {'entropy': 0.46098122,
                                            'kurtosis': -1.0068552,
                                            'max': 4294967300.0,
                                            'mean': 1251028500.0,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91247895,
                                            'standardDeviation': 1786376800.0},
                                  'red': {'entropy': 0.4620463,
                                          'kurtosis': -1.0011022,
                                          'max': 4294967300.0,
                                          'mean': 1248979300.0,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91535869,
                                          'standardDeviation': 1784991400.0}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.002',
            'endianness': 'LSB',
            'filesize': '43530B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.46085853,
                                            'kurtosis': -1.0012551,
                                            'max': 4294967300.0,
                                            'mean': 1248849900.0,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91534253,
                                            'standardDeviation': 1785458900.0}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw0/tiff_float_img0/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '1342262B',
            'properties': {'date:create': '2021-08-22T12:32:45+00:00',
                           'date:modify': '2021-08-22T12:32:45+00:00',
                           'quantum:format': 'floating-point',
                           'signature': '3682ab30ca3e3e65596cf553ac7ed02a600cca516ddb40cd75904aed99be32ca',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '11'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.010u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw0/tiff_float_img0/in.tiff')
tmp_normal_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw0/normal_png0/normal.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw0'), _trace=<pluggy._tracing.TagTracerSub object at 0x7f65cb528220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw0'))

src/img2pdf_test.py:2255: AssertionError
___________________ ERROR at setup of test_tiff_rgb12[pdfrw] ___________________
[gw13] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...f63310>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw13'))
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw13/normal16_png0/normal16.png')

    @pytest.fixture(scope="session")
    def tiff_rgb12_img(tmp_path_factory, tmp_normal16_png):
        in_img = tmp_path_factory.mktemp("tiff_rgb8") / "in.tiff"
        subprocess.check_call(
            ["convert", str(tmp_normal16_png), "-depth", "12", str(in_img)]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
        if identify[0].get("version", "0") < "1.0":
            assert identify[0]["image"].get("depth") == 12, str(identify)
        else:
>           assert identify[0]["image"].get("depth") == 16, str(identify)
E           AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw13/tiff_rgb80/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 12, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 4095, 'mean': 1194.9648, 'median': 0, 'standardDeviation': 1707.1256, 'kurtosis': -1.0010315, 'skewness': 0.91501655, 'entropy': 0.45560277}}, 'channelStatistics': {'red': {'min': 0, 'max': 4095, 'mean': 1195.0887, 'median': 0, 'standardDeviation': 1706.6778, 'kurtosis': -1.0008776, 'skewness': 0.91503326, 'entropy': 0.45681467}, 'green': {'min': 0, 'max': 4095, 'mean': 1197.0481, 'median': 0, 'standardDeviation': 1708.0055, 'kurtosis': -1.0066275, 'skewness': 0.91215625, 'entropy': 0.45564261}, 'blue': {'min': 0, 'max': 4095, 'mean': 1192.7576, 'median': 0, 'standardDeviation': 1706.6937, 'kurtosis': -0.99779046, 'skewness': 0.91710177, 'entropy': 0.45435104}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:44+00:00', 'date:modify': '2021-08-22T12:32:44+00:00', 'signature': 'fa10fdd9a22d9e666d0220b4aa501fcfa4c6fde32affdef69bf487a53be77b2d', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '30'}, 'tainted': False, 'filesize': '16464B', 'numberPixels': '3600', 'pixelsPerSecond': '1474105B', 'userTime': '0.000u', 'elapsedTime': '0:01.002', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E           assert 32 == 16
E             +32
E             -16

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 12,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45435104,
                                           'kurtosis': -0.99779046,
                                           'max': 4095,
                                           'mean': 1192.7576,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91710177,
                                           'standardDeviation': 1706.6937},
                                  'green': {'entropy': 0.45564261,
                                            'kurtosis': -1.0066275,
                                            'max': 4095,
                                            'mean': 1197.0481,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91215625,
                                            'standardDeviation': 1708.0055},
                                  'red': {'entropy': 0.45681467,
                                          'kurtosis': -1.0008776,
                                          'max': 4095,
                                          'mean': 1195.0887,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91503326,
                                          'standardDeviation': 1706.6778}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.002',
            'endianness': 'LSB',
            'filesize': '16464B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.45560277,
                                            'kurtosis': -1.0010315,
                                            'max': 4095,
                                            'mean': 1194.9648,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91501655,
                                            'standardDeviation': 1707.1256}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw13/tiff_rgb80/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '1474105B',
            'properties': {'date:create': '2021-08-22T12:32:44+00:00',
                           'date:modify': '2021-08-22T12:32:44+00:00',
                           'signature': 'fa10fdd9a22d9e666d0220b4aa501fcfa4c6fde32affdef69bf487a53be77b2d',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '30'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.000u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw13/tiff_rgb80/in.tiff')
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw13/normal16_png0/normal16.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw13'), _trace=<pluggy._tracing.TagTracerSub object at 0x7f1973f63310>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw13'))

src/img2pdf_test.py:2463: AssertionError
_________________ ERROR at setup of test_tiff_gray1[internal] __________________
[gw18] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...712220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'))
tiff_gray1_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray10/in.tiff')
request = <SubRequest 'tiff_gray1_pdf' for <Function test_tiff_gray1[internal]>>

    @pytest.fixture(scope="session", params=["internal", "pikepdf", "pdfrw"])
    def tiff_gray1_pdf(tmp_path_factory, tiff_gray1_img, request):
        out_pdf = tmp_path_factory.mktemp("tiff_gray1_pdf") / "out.pdf"
        subprocess.check_call(
            [
                "src/img2pdf.py",
                "--producer=",
                "--nodate",
                "--engine=" + request.param,
                "--output=" + str(out_pdf),
                str(tiff_gray1_img),
            ]
        )
        with pikepdf.open(str(out_pdf)) as p:
            assert (
                p.pages[0].Contents.read_bytes()
                == b"q\n45.0000 0 0 45.0000 0.0000 0.0000 cm\n/Im0 Do\nQ"
            )
>           assert p.pages[0].Resources.XObject.Im0.BitsPerComponent == 1
E           assert 8 == 1
E             +8
E             -1

out_pdf    = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray1_pdf0/out.pdf')
p          = <[TypeError("unhashable type: 'instancemethod'") raised in repr()] Pdf object at 0x7f4e1721ac70>
request    = <SubRequest 'tiff_gray1_pdf' for <Function test_tiff_gray1[internal]>>
tiff_gray1_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray10/in.tiff')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'), _trace=<pluggy._tracing.TagTracerSub object at 0x7f4e20712220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'))

src/img2pdf_test.py:4490: AssertionError
_________________ ERROR at setup of test_tiff_rgb14[internal] __________________
[gw20] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...1cc3a0>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'))
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/normal16_png0/normal16.png')

    @pytest.fixture(scope="session")
    def tiff_rgb14_img(tmp_path_factory, tmp_normal16_png):
        in_img = tmp_path_factory.mktemp("tiff_rgb8") / "in.tiff"
        subprocess.check_call(
            ["convert", str(tmp_normal16_png), "-depth", "14", str(in_img)]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
        if identify[0].get("version", "0") < "1.0":
            assert identify[0]["image"].get("depth") == 14, str(identify)
        else:
>           assert identify[0]["image"].get("depth") == 16, str(identify)
E           AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 14, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 16383, 'mean': 4781.8956, 'median': 0, 'standardDeviation': 6830.9827, 'kurtosis': -1.0011647, 'skewness': 0.91492813, 'entropy': 0.45560277}}, 'channelStatistics': {'red': {'min': 0, 'max': 16383, 'mean': 4782.3959, 'median': 0, 'standardDeviation': 6829.1886, 'kurtosis': -1.0010113, 'skewness': 0.91494407, 'entropy': 0.45681467}, 'green': {'min': 0, 'max': 16383, 'mean': 4790.2309, 'median': 0, 'standardDeviation': 6834.5041, 'kurtosis': -1.0067604, 'skewness': 0.91206772, 'entropy': 0.45564261}, 'blue': {'min': 0, 'max': 16383, 'mean': 4773.06, 'median': 0, 'standardDeviation': 6829.2553, 'kurtosis': -0.99792336, 'skewness': 0.91701432, 'entropy': 0.45435104}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:47+00:00', 'date:modify': '2021-08-22T12:32:47+00:00', 'signature': '8cca4ba687f8704ddfb37ae89e7c35f9c73ff62c30b29d472ab783fe8cc949fc', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '26'}, 'tainted': False, 'filesize': '19164B', 'numberPixels': '3600', 'pixelsPerSecond': '1699709B', 'userTime': '0.000u', 'elapsedTime': '0:01.002', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E           assert 32 == 16
E             +32
E             -16

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 14,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45435104,
                                           'kurtosis': -0.99792336,
                                           'max': 16383,
                                           'mean': 4773.06,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91701432,
                                           'standardDeviation': 6829.2553},
                                  'green': {'entropy': 0.45564261,
                                            'kurtosis': -1.0067604,
                                            'max': 16383,
                                            'mean': 4790.2309,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91206772,
                                            'standardDeviation': 6834.5041},
                                  'red': {'entropy': 0.45681467,
                                          'kurtosis': -1.0010113,
                                          'max': 16383,
                                          'mean': 4782.3959,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91494407,
                                          'standardDeviation': 6829.1886}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.002',
            'endianness': 'LSB',
            'filesize': '19164B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.45560277,
                                            'kurtosis': -1.0011647,
                                            'max': 16383,
                                            'mean': 4781.8956,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91492813,
                                            'standardDeviation': 6830.9827}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '1699709B',
            'properties': {'date:create': '2021-08-22T12:32:47+00:00',
                           'date:modify': '2021-08-22T12:32:47+00:00',
                           'signature': '8cca4ba687f8704ddfb37ae89e7c35f9c73ff62c30b29d472ab783fe8cc949fc',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '26'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.000u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff')
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/normal16_png0/normal16.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'), _trace=<pluggy._tracing.TagTracerSub object at 0x7fdeb91cc3a0>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'))

src/img2pdf_test.py:2515: AssertionError
__________________ ERROR at setup of test_tiff_gray1[pikepdf] __________________
[gw18] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...712220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'))
tiff_gray1_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray10/in.tiff')
request = <SubRequest 'tiff_gray1_pdf' for <Function test_tiff_gray1[pikepdf]>>

    @pytest.fixture(scope="session", params=["internal", "pikepdf", "pdfrw"])
    def tiff_gray1_pdf(tmp_path_factory, tiff_gray1_img, request):
        out_pdf = tmp_path_factory.mktemp("tiff_gray1_pdf") / "out.pdf"
        subprocess.check_call(
            [
                "src/img2pdf.py",
                "--producer=",
                "--nodate",
                "--engine=" + request.param,
                "--output=" + str(out_pdf),
                str(tiff_gray1_img),
            ]
        )
        with pikepdf.open(str(out_pdf)) as p:
            assert (
                p.pages[0].Contents.read_bytes()
                == b"q\n45.0000 0 0 45.0000 0.0000 0.0000 cm\n/Im0 Do\nQ"
            )
>           assert p.pages[0].Resources.XObject.Im0.BitsPerComponent == 1
E           assert 8 == 1
E             +8
E             -1

out_pdf    = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray1_pdf1/out.pdf')
p          = <[TypeError("unhashable type: 'instancemethod'") raised in repr()] Pdf object at 0x7f4e1763a8b0>
request    = <SubRequest 'tiff_gray1_pdf' for <Function test_tiff_gray1[pikepdf]>>
tiff_gray1_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray10/in.tiff')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'), _trace=<pluggy._tracing.TagTracerSub object at 0x7f4e20712220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'))

src/img2pdf_test.py:4490: AssertionError
__________________ ERROR at setup of test_tiff_rgb14[pikepdf] __________________
[gw20] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...1cc3a0>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'))
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/normal16_png0/normal16.png')

    @pytest.fixture(scope="session")
    def tiff_rgb14_img(tmp_path_factory, tmp_normal16_png):
        in_img = tmp_path_factory.mktemp("tiff_rgb8") / "in.tiff"
        subprocess.check_call(
            ["convert", str(tmp_normal16_png), "-depth", "14", str(in_img)]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
        if identify[0].get("version", "0") < "1.0":
            assert identify[0]["image"].get("depth") == 14, str(identify)
        else:
>           assert identify[0]["image"].get("depth") == 16, str(identify)
E           AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 14, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 16383, 'mean': 4781.8956, 'median': 0, 'standardDeviation': 6830.9827, 'kurtosis': -1.0011647, 'skewness': 0.91492813, 'entropy': 0.45560277}}, 'channelStatistics': {'red': {'min': 0, 'max': 16383, 'mean': 4782.3959, 'median': 0, 'standardDeviation': 6829.1886, 'kurtosis': -1.0010113, 'skewness': 0.91494407, 'entropy': 0.45681467}, 'green': {'min': 0, 'max': 16383, 'mean': 4790.2309, 'median': 0, 'standardDeviation': 6834.5041, 'kurtosis': -1.0067604, 'skewness': 0.91206772, 'entropy': 0.45564261}, 'blue': {'min': 0, 'max': 16383, 'mean': 4773.06, 'median': 0, 'standardDeviation': 6829.2553, 'kurtosis': -0.99792336, 'skewness': 0.91701432, 'entropy': 0.45435104}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:47+00:00', 'date:modify': '2021-08-22T12:32:47+00:00', 'signature': '8cca4ba687f8704ddfb37ae89e7c35f9c73ff62c30b29d472ab783fe8cc949fc', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '26'}, 'tainted': False, 'filesize': '19164B', 'numberPixels': '3600', 'pixelsPerSecond': '1699709B', 'userTime': '0.000u', 'elapsedTime': '0:01.002', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E           assert 32 == 16
E             +32
E             -16

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 14,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45435104,
                                           'kurtosis': -0.99792336,
                                           'max': 16383,
                                           'mean': 4773.06,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91701432,
                                           'standardDeviation': 6829.2553},
                                  'green': {'entropy': 0.45564261,
                                            'kurtosis': -1.0067604,
                                            'max': 16383,
                                            'mean': 4790.2309,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91206772,
                                            'standardDeviation': 6834.5041},
                                  'red': {'entropy': 0.45681467,
                                          'kurtosis': -1.0010113,
                                          'max': 16383,
                                          'mean': 4782.3959,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91494407,
                                          'standardDeviation': 6829.1886}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.002',
            'endianness': 'LSB',
            'filesize': '19164B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.45560277,
                                            'kurtosis': -1.0011647,
                                            'max': 16383,
                                            'mean': 4781.8956,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91492813,
                                            'standardDeviation': 6830.9827}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '1699709B',
            'properties': {'date:create': '2021-08-22T12:32:47+00:00',
                           'date:modify': '2021-08-22T12:32:47+00:00',
                           'signature': '8cca4ba687f8704ddfb37ae89e7c35f9c73ff62c30b29d472ab783fe8cc949fc',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '26'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.000u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff')
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/normal16_png0/normal16.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'), _trace=<pluggy._tracing.TagTracerSub object at 0x7fdeb91cc3a0>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'))

src/img2pdf_test.py:2515: AssertionError
___________________ ERROR at setup of test_tiff_rgb14[pdfrw] ___________________
[gw20] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...1cc3a0>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'))
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/normal16_png0/normal16.png')

    @pytest.fixture(scope="session")
    def tiff_rgb14_img(tmp_path_factory, tmp_normal16_png):
        in_img = tmp_path_factory.mktemp("tiff_rgb8") / "in.tiff"
        subprocess.check_call(
            ["convert", str(tmp_normal16_png), "-depth", "14", str(in_img)]
        )
        identify = json.loads(subprocess.check_output(["convert", str(in_img), "json:"]))
        assert len(identify) == 1
        # somewhere between imagemagick 6.9.7.4 and 6.9.9.34, the json output was
        # put into an array, here we cater for the older version containing just
        # the bare dictionary
        if "image" in identify:
            identify = [identify]
        assert "image" in identify[0]
        assert identify[0]["image"].get("format") == "TIFF", str(identify)
        assert identify[0]["image"].get("mimeType") == "image/tiff", str(identify)
        assert identify[0]["image"].get("geometry") == {
            "width": 60,
            "height": 60,
            "x": 0,
            "y": 0,
        }, str(identify)
        assert identify[0]["image"].get("colorspace") == "sRGB", str(identify)
        assert identify[0]["image"].get("type") == "TrueColor", str(identify)
        endian = "endianess" if identify[0].get("version", "0") < "1.0" else "endianness"
        assert identify[0]["image"].get(endian) in ["Undefined", "LSB",], str(
            identify
        )  # FIXME: should be LSB
        if identify[0].get("version", "0") < "1.0":
            assert identify[0]["image"].get("depth") == 14, str(identify)
        else:
>           assert identify[0]["image"].get("depth") == 16, str(identify)
E           AssertionError: [{'version': '1.0', 'image': {'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff', 'baseName': 'in.tiff', 'format': 'TIFF', 'formatDescription': 'TIFF', 'mimeType': 'image/tiff', 'class': 'DirectClass', 'geometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'units': 'PixelsPerInch', 'type': 'TrueColor', 'endianness': 'LSB', 'colorspace': 'sRGB', 'depth': 32, 'baseDepth': 14, 'channelDepth': {'red': 32, 'green': 32, 'blue': 1}, 'pixels': 10800, 'imageStatistics': {'Overall': {'min': 0, 'max': 16383, 'mean': 4781.8956, 'median': 0, 'standardDeviation': 6830.9827, 'kurtosis': -1.0011647, 'skewness': 0.91492813, 'entropy': 0.45560277}}, 'channelStatistics': {'red': {'min': 0, 'max': 16383, 'mean': 4782.3959, 'median': 0, 'standardDeviation': 6829.1886, 'kurtosis': -1.0010113, 'skewness': 0.91494407, 'entropy': 0.45681467}, 'green': {'min': 0, 'max': 16383, 'mean': 4790.2309, 'median': 0, 'standardDeviation': 6834.5041, 'kurtosis': -1.0067604, 'skewness': 0.91206772, 'entropy': 0.45564261}, 'blue': {'min': 0, 'max': 16383, 'mean': 4773.06, 'median': 0, 'standardDeviation': 6829.2553, 'kurtosis': -0.99792336, 'skewness': 0.91701432, 'entropy': 0.45435104}}, 'renderingIntent': 'Perceptual', 'gamma': 0.454545, 'chromaticity': {'redPrimary': {'x': 0.64, 'y': 0.33}, 'greenPrimary': {'x': 0.3, 'y': 0.6}, 'bluePrimary': {'x': 0.15, 'y': 0.06}, 'whitePrimary': {'x': 0.3127, 'y': 0.329}}, 'matteColor': '#BDBDBD', 'backgroundColor': '#FFFFFF', 'borderColor': '#DFDFDF', 'transparentColor': '#00000000', 'interlace': 'None', 'intensity': 'Undefined', 'compose': 'Over', 'pageGeometry': {'width': 60, 'height': 60, 'x': 0, 'y': 0}, 'dispose': 'Undefined', 'iterations': 0, 'compression': 'None', 'orientation': 'TopLeft', 'properties': {'date:create': '2021-08-22T12:32:47+00:00', 'date:modify': '2021-08-22T12:32:47+00:00', 'signature': '8cca4ba687f8704ddfb37ae89e7c35f9c73ff62c30b29d472ab783fe8cc949fc', 'tiff:alpha': 'unspecified', 'tiff:endian': 'lsb', 'tiff:photometric': 'RGB', 'tiff:rows-per-strip': '26'}, 'tainted': False, 'filesize': '19164B', 'numberPixels': '3600', 'pixelsPerSecond': '1699709B', 'userTime': '0.000u', 'elapsedTime': '0:01.002', 'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 https://imagemagick.org'}}]
E           assert 32 == 16
E             +32
E             -16

endian     = 'endianness'
identify   = [{'image': {'backgroundColor': '#FFFFFF',
            'baseDepth': 14,
            'baseName': 'in.tiff',
            'borderColor': '#DFDFDF',
            'channelDepth': {'blue': 1, 'green': 32, 'red': 32},
            'channelStatistics': {'blue': {'entropy': 0.45435104,
                                           'kurtosis': -0.99792336,
                                           'max': 16383,
                                           'mean': 4773.06,
                                           'median': 0,
                                           'min': 0,
                                           'skewness': 0.91701432,
                                           'standardDeviation': 6829.2553},
                                  'green': {'entropy': 0.45564261,
                                            'kurtosis': -1.0067604,
                                            'max': 16383,
                                            'mean': 4790.2309,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91206772,
                                            'standardDeviation': 6834.5041},
                                  'red': {'entropy': 0.45681467,
                                          'kurtosis': -1.0010113,
                                          'max': 16383,
                                          'mean': 4782.3959,
                                          'median': 0,
                                          'min': 0,
                                          'skewness': 0.91494407,
                                          'standardDeviation': 6829.1886}},
            'chromaticity': {'bluePrimary': {'x': 0.15, 'y': 0.06},
                             'greenPrimary': {'x': 0.3, 'y': 0.6},
                             'redPrimary': {'x': 0.64, 'y': 0.33},
                             'whitePrimary': {'x': 0.3127, 'y': 0.329}},
            'class': 'DirectClass',
            'colorspace': 'sRGB',
            'compose': 'Over',
            'compression': 'None',
            'depth': 32,
            'dispose': 'Undefined',
            'elapsedTime': '0:01.002',
            'endianness': 'LSB',
            'filesize': '19164B',
            'format': 'TIFF',
            'formatDescription': 'TIFF',
            'gamma': 0.454545,
            'geometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'imageStatistics': {'Overall': {'entropy': 0.45560277,
                                            'kurtosis': -1.0011647,
                                            'max': 16383,
                                            'mean': 4781.8956,
                                            'median': 0,
                                            'min': 0,
                                            'skewness': 0.91492813,
                                            'standardDeviation': 6830.9827}},
            'intensity': 'Undefined',
            'interlace': 'None',
            'iterations': 0,
            'matteColor': '#BDBDBD',
            'mimeType': 'image/tiff',
            'name': '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff',
            'numberPixels': '3600',
            'orientation': 'TopLeft',
            'pageGeometry': {'height': 60, 'width': 60, 'x': 0, 'y': 0},
            'pixels': 10800,
            'pixelsPerSecond': '1699709B',
            'properties': {'date:create': '2021-08-22T12:32:47+00:00',
                           'date:modify': '2021-08-22T12:32:47+00:00',
                           'signature': '8cca4ba687f8704ddfb37ae89e7c35f9c73ff62c30b29d472ab783fe8cc949fc',
                           'tiff:alpha': 'unspecified',
                           'tiff:endian': 'lsb',
                           'tiff:photometric': 'RGB',
                           'tiff:rows-per-strip': '26'},
            'renderingIntent': 'Perceptual',
            'tainted': False,
            'transparentColor': '#00000000',
            'type': 'TrueColor',
            'units': 'PixelsPerInch',
            'userTime': '0.000u',
            'version': 'ImageMagick 7.1.0-4 Q32 x86_64 2021-07-18 '
                       'https://imagemagick.org'},
  'version': '1.0'}]
in_img     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/tiff_rgb80/in.tiff')
tmp_normal16_png = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20/normal16_png0/normal16.png')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'), _trace=<pluggy._tracing.TagTracerSub object at 0x7fdeb91cc3a0>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw20'))

src/img2pdf_test.py:2515: AssertionError
___________________ ERROR at setup of test_tiff_gray1[pdfrw] ___________________
[gw18] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...712220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'))
tiff_gray1_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray10/in.tiff')
request = <SubRequest 'tiff_gray1_pdf' for <Function test_tiff_gray1[pdfrw]>>

    @pytest.fixture(scope="session", params=["internal", "pikepdf", "pdfrw"])
    def tiff_gray1_pdf(tmp_path_factory, tiff_gray1_img, request):
        out_pdf = tmp_path_factory.mktemp("tiff_gray1_pdf") / "out.pdf"
        subprocess.check_call(
            [
                "src/img2pdf.py",
                "--producer=",
                "--nodate",
                "--engine=" + request.param,
                "--output=" + str(out_pdf),
                str(tiff_gray1_img),
            ]
        )
        with pikepdf.open(str(out_pdf)) as p:
            assert (
                p.pages[0].Contents.read_bytes()
                == b"q\n45.0000 0 0 45.0000 0.0000 0.0000 cm\n/Im0 Do\nQ"
            )
>           assert p.pages[0].Resources.XObject.Im0.BitsPerComponent == 1
E           assert 8 == 1
E             +8
E             -1

out_pdf    = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray1_pdf2/out.pdf')
p          = <[TypeError("unhashable type: 'instancemethod'") raised in repr()] Pdf object at 0x7f4e1763acc0>
request    = <SubRequest 'tiff_gray1_pdf' for <Function test_tiff_gray1[pdfrw]>>
tiff_gray1_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18/tiff_gray10/in.tiff')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'), _trace=<pluggy._tracing.TagTracerSub object at 0x7f4e20712220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw18'))

src/img2pdf_test.py:4490: AssertionError
=================================== FAILURES ===================================
_____________________________ test_png_icc[pdfrw] ______________________________
[gw10] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...5b8220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10'))
png_icc_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/icc_png0/icc.png')
png_icc_pdf = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/png_icc_pdf0/out.pdf')

    @pytest.mark.skipif(
        sys.platform in ["darwin", "win32"],
        reason="test utilities not available on Windows and MacOS",
    )
    def test_png_icc(tmp_path_factory, png_icc_img, png_icc_pdf):
        tmpdir = tmp_path_factory.mktemp("png_icc")
>       compare_ghostscript(tmpdir, png_icc_img, png_icc_pdf, exact=False, icc=True)

png_icc_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/icc_png0/icc.png')
png_icc_pdf = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/png_icc_pdf0/out.pdf')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10'), _trace=<pluggy._tracing.TagTracerSub object at 0x7fc7c55b8220>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10'))
tmpdir     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/png_icc0')

src/img2pdf_test.py:5285: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
src/img2pdf_test.py:363: in compare_ghostscript
    compare(str(img), str(tmpdir / "gs-1.") + ext, exact, icc, False)
        exact      = False
        ext        = 'png'
        gsdevice   = 'png16m'
        icc        = True
        img        = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/icc_png0/icc.png')
        pdf        = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/png_icc_pdf0/out.pdf')
        tmpdir     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/png_icc0')
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

im1 = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/icc_png0/icc.png'
im2 = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/png_icc0/gs-1.png'
exact = False, icc = True, cmyk = False

    def compare(im1, im2, exact, icc, cmyk):
        if exact:
            if cmyk:
                raise Exception("cmyk cannot be exact")
            elif icc:
                raise Exception("icc cannot be exact")
            else:
                subprocess.check_call(
                    [
                        "compare",
                        "-metric",
                        "AE",
                        im1,
                        im2,
                        "null:",
                    ]
                )
        else:
            iccargs = []
            if icc:
                if ICC_PROFILE is None:
                    pytest.skip("Could not locate an ICC profile")
                iccargs = ["-profile", ICC_PROFILE]
            psnr = subprocess.run(
                ["compare"]
                + iccargs
                + [
                    "-metric",
                    "PSNR",
                    im1,
                    im2,
                    "null:",
                ],
                check=False,
                stderr=subprocess.PIPE,
            ).stderr
            assert psnr != b"0"
>           psnr = float(psnr.strip(b"0"))
E           ValueError: could not convert string to float: b"5.1771988compare: delegate library support not built-in '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/icc_png0/icc.png' (LCMS) @ warning/profile.c/ProfileImage/1004.\n"

cmyk       = False
exact      = False
icc        = True
iccargs    = ['-profile', PosixPath('/usr/share/ghostscript/9.54.0/iccprofiles/srgb.icc')]
im1        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/icc_png0/icc.png'
im2        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/png_icc0/gs-1.png'
psnr       = (b"5.1771988compare: delegate library support not built-in '/var/tmp/portage/me"
 b'dia-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw10/icc_png0'
 b"/icc.png' (LCMS) @ warning/profile.c/ProfileImage/1004.\n")

src/img2pdf_test.py:339: ValueError
____________________________ test_png_icc[internal] ____________________________
[gw8] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...fe56280>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8'))
png_icc_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/icc_png0/icc.png')
png_icc_pdf = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/png_icc_pdf0/out.pdf')

    @pytest.mark.skipif(
        sys.platform in ["darwin", "win32"],
        reason="test utilities not available on Windows and MacOS",
    )
    def test_png_icc(tmp_path_factory, png_icc_img, png_icc_pdf):
        tmpdir = tmp_path_factory.mktemp("png_icc")
>       compare_ghostscript(tmpdir, png_icc_img, png_icc_pdf, exact=False, icc=True)

png_icc_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/icc_png0/icc.png')
png_icc_pdf = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/png_icc_pdf0/out.pdf')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8'), _trace=<pluggy._tracing.TagTracerSub object at 0x7f7d8fe56280>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8'))
tmpdir     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/png_icc0')

src/img2pdf_test.py:5285: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
src/img2pdf_test.py:363: in compare_ghostscript
    compare(str(img), str(tmpdir / "gs-1.") + ext, exact, icc, False)
        exact      = False
        ext        = 'png'
        gsdevice   = 'png16m'
        icc        = True
        img        = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/icc_png0/icc.png')
        pdf        = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/png_icc_pdf0/out.pdf')
        tmpdir     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/png_icc0')
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

im1 = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/icc_png0/icc.png'
im2 = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/png_icc0/gs-1.png'
exact = False, icc = True, cmyk = False

    def compare(im1, im2, exact, icc, cmyk):
        if exact:
            if cmyk:
                raise Exception("cmyk cannot be exact")
            elif icc:
                raise Exception("icc cannot be exact")
            else:
                subprocess.check_call(
                    [
                        "compare",
                        "-metric",
                        "AE",
                        im1,
                        im2,
                        "null:",
                    ]
                )
        else:
            iccargs = []
            if icc:
                if ICC_PROFILE is None:
                    pytest.skip("Could not locate an ICC profile")
                iccargs = ["-profile", ICC_PROFILE]
            psnr = subprocess.run(
                ["compare"]
                + iccargs
                + [
                    "-metric",
                    "PSNR",
                    im1,
                    im2,
                    "null:",
                ],
                check=False,
                stderr=subprocess.PIPE,
            ).stderr
            assert psnr != b"0"
>           psnr = float(psnr.strip(b"0"))
E           ValueError: could not convert string to float: b"5.1771988compare: delegate library support not built-in '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/icc_png0/icc.png' (LCMS) @ warning/profile.c/ProfileImage/1004.\n"

cmyk       = False
exact      = False
icc        = True
iccargs    = ['-profile', PosixPath('/usr/share/ghostscript/9.54.0/iccprofiles/srgb.icc')]
im1        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/icc_png0/icc.png'
im2        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/png_icc0/gs-1.png'
psnr       = (b"5.1771988compare: delegate library support not built-in '/var/tmp/portage/me"
 b'dia-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw8/icc_png0/'
 b"icc.png' (LCMS) @ warning/profile.c/ProfileImage/1004.\n")

src/img2pdf_test.py:339: ValueError
____________________________ test_png_icc[pikepdf] _____________________________
[gw9] linux -- Python 3.8.11 /usr/bin/python3.8

tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0...54a4280>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9'))
png_icc_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/icc_png0/icc.png')
png_icc_pdf = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/png_icc_pdf0/out.pdf')

    @pytest.mark.skipif(
        sys.platform in ["darwin", "win32"],
        reason="test utilities not available on Windows and MacOS",
    )
    def test_png_icc(tmp_path_factory, png_icc_img, png_icc_pdf):
        tmpdir = tmp_path_factory.mktemp("png_icc")
>       compare_ghostscript(tmpdir, png_icc_img, png_icc_pdf, exact=False, icc=True)

png_icc_img = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/icc_png0/icc.png')
png_icc_pdf = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/png_icc_pdf0/out.pdf')
tmp_path_factory = TempPathFactory(_given_basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9'), _trace=<pluggy._tracing.TagTracerSub object at 0x7fc9b54a4280>, _basetemp=PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9'))
tmpdir     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/png_icc0')

src/img2pdf_test.py:5285: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
src/img2pdf_test.py:363: in compare_ghostscript
    compare(str(img), str(tmpdir / "gs-1.") + ext, exact, icc, False)
        exact      = False
        ext        = 'png'
        gsdevice   = 'png16m'
        icc        = True
        img        = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/icc_png0/icc.png')
        pdf        = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/png_icc_pdf0/out.pdf')
        tmpdir     = PosixPath('/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/png_icc0')
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

im1 = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/icc_png0/icc.png'
im2 = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/png_icc0/gs-1.png'
exact = False, icc = True, cmyk = False

    def compare(im1, im2, exact, icc, cmyk):
        if exact:
            if cmyk:
                raise Exception("cmyk cannot be exact")
            elif icc:
                raise Exception("icc cannot be exact")
            else:
                subprocess.check_call(
                    [
                        "compare",
                        "-metric",
                        "AE",
                        im1,
                        im2,
                        "null:",
                    ]
                )
        else:
            iccargs = []
            if icc:
                if ICC_PROFILE is None:
                    pytest.skip("Could not locate an ICC profile")
                iccargs = ["-profile", ICC_PROFILE]
            psnr = subprocess.run(
                ["compare"]
                + iccargs
                + [
                    "-metric",
                    "PSNR",
                    im1,
                    im2,
                    "null:",
                ],
                check=False,
                stderr=subprocess.PIPE,
            ).stderr
            assert psnr != b"0"
>           psnr = float(psnr.strip(b"0"))
E           ValueError: could not convert string to float: b"5.1771988compare: delegate library support not built-in '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/icc_png0/icc.png' (LCMS) @ warning/profile.c/ProfileImage/1004.\n"

cmyk       = False
exact      = False
icc        = True
iccargs    = ['-profile', PosixPath('/usr/share/ghostscript/9.54.0/iccprofiles/srgb.icc')]
im1        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/icc_png0/icc.png'
im2        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/png_icc0/gs-1.png'
psnr       = (b"5.1771988compare: delegate library support not built-in '/var/tmp/portage/me"
 b'dia-gfx/img2pdf-0.4.1-r1/temp/pytest-of-portage/pytest-0/popen-gw9/icc_png0/'
 b"icc.png' (LCMS) @ warning/profile.c/ProfileImage/1004.\n")

src/img2pdf_test.py:339: ValueError
_______________________ test_general[mono.tif-internal] ________________________
[gw5] linux -- Python 3.8.11 /usr/bin/python3.8

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
>           decoder = getattr(core, decoder_name + "_decoder")
E           AttributeError: module 'PIL._imaging' has no attribute 'libtiff_decoder'

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:430: AttributeError

The above exception was the direct cause of the following exception:

rawdata = b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x...\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00'
colorspace = None, first_frame_only = False

    def read_images(rawdata, colorspace, first_frame_only=False):
        im = BytesIO(rawdata)
        im.seek(0)
        imgdata = None
        try:
            imgdata = Image.open(im)
        except IOError as e:
            # test if it is a jpeg2000 image
            if rawdata[:12] != b"\x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A":
                raise ImageOpenError(
                    "cannot read input image (not jpeg2000). "
                    "PIL: error reading image: %s" % e
                )
            # image is jpeg2000
            imgformat = ImageFormat.JPEG2000
        else:
            logger.debug("PIL format = %s", imgdata.format)
            imgformat = None
            for f in ImageFormat:
                if f.name == imgdata.format:
                    imgformat = f
            if imgformat is None:
                imgformat = ImageFormat.other
    
        def cleanup():
            if imgdata is not None:
                # the python-pil version 2.3.0-1ubuntu3 in Ubuntu does not have the
                # close() method
                try:
                    imgdata.close()
                except AttributeError:
                    pass
            im.close()
    
        logger.debug("imgformat = %s", imgformat.name)
    
        # depending on the input format, determine whether to pass the raw
        # image or the zlib compressed color information
    
        # JPEG and JPEG2000 can be embedded into the PDF as-is
        if imgformat == ImageFormat.JPEG or imgformat == ImageFormat.JPEG2000:
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace, rawdata
            )
            if color == Colorspace["1"]:
                raise JpegColorspaceError("jpeg can't be monochrome")
            if color == Colorspace["P"]:
                raise JpegColorspaceError("jpeg can't have a color palette")
            if color == Colorspace["RGBA"]:
                raise JpegColorspaceError("jpeg can't have an alpha channel")
            logger.debug("read_images() embeds a JPEG")
            cleanup()
            return [
                (
                    color,
                    ndpi,
                    imgformat,
                    rawdata,
                    imgwidthpx,
                    imgheightpx,
                    [],
                    False,
                    8,
                    rotation,
                    iccp,
                )
            ]
    
        # The MPO format is multiple JPEG images concatenated together
        # we use the offset and size information to dissect the MPO into its
        # individual JPEG images and then embed those into the PDF individually.
        #
        # The downside is, that this truncates the first JPEG as the MPO metadata
        # will still be in it but the referenced images are chopped off. We still
        # do it that way instead of adding the full MPO as the first image to not
        # store duplicate image data.
        if imgformat == ImageFormat.MPO:
            result = []
            img_page_count = 0
            for offset, mpent in zip(
                imgdata._MpoImageFile__mpoffsets, imgdata.mpinfo[0xB002]
            ):
                if first_frame_only and img_page_count > 0:
                    break
                with BytesIO(rawdata[offset : offset + mpent["Size"]]) as rawframe:
                    with Image.open(rawframe) as imframe:
                        # The first frame contains the data that makes the JPEG a MPO
                        # Could we thus embed an MPO into another MPO? Lets not support
                        # such madness ;)
                        if img_page_count > 0 and imframe.format != "JPEG":
                            raise Exception("MPO payload must be a JPEG %s", imframe.format)
                        (
                            color,
                            ndpi,
                            imgwidthpx,
                            imgheightpx,
                            rotation,
                            iccp,
                        ) = get_imgmetadata(
                            imframe, ImageFormat.JPEG, default_dpi, colorspace
                        )
                if color == Colorspace["1"]:
                    raise JpegColorspaceError("jpeg can't be monochrome")
                if color == Colorspace["P"]:
                    raise JpegColorspaceError("jpeg can't have a color palette")
                if color == Colorspace["RGBA"]:
                    raise JpegColorspaceError("jpeg can't have an alpha channel")
                logger.debug("read_images() embeds a JPEG from MPO")
                result.append(
                    (
                        color,
                        ndpi,
                        ImageFormat.JPEG,
                        rawdata[offset : offset + mpent["Size"]],
                        imgwidthpx,
                        imgheightpx,
                        [],
                        False,
                        8,
                        rotation,
                        iccp,
                    )
                )
                img_page_count += 1
            cleanup()
            return result
    
        # We can directly embed the IDAT chunk of PNG images if the PNG is not
        # interlaced
        #
        # PIL does not provide the information whether a PNG was stored interlaced
        # or not. Thus, we retrieve that info manually by looking at byte 13 in the
        # IHDR chunk. We know where to find that in the file because the IHDR chunk
        # must be the first chunk.
        if imgformat == ImageFormat.PNG and rawdata[28] == 0:
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace, rawdata
            )
            pngidat, palette = parse_png(rawdata)
            # PIL does not provide the information about the original bits per
            # sample. Thus, we retrieve that info manually by looking at byte 9 in
            # the IHDR chunk. We know where to find that in the file because the
            # IHDR chunk must be the first chunk
            depth = rawdata[24]
            if depth not in [1, 2, 4, 8, 16]:
                raise ValueError("invalid bit depth: %d" % depth)
            logger.debug("read_images() embeds a PNG")
            cleanup()
            return [
                (
                    color,
                    ndpi,
                    imgformat,
                    pngidat,
                    imgwidthpx,
                    imgheightpx,
                    palette,
                    False,
                    depth,
                    rotation,
                    iccp,
                )
            ]
    
        # If our input is not JPEG or PNG, then we might have a format that
        # supports multiple frames (like TIFF or GIF), so we need a loop to
        # iterate through all frames of the image.
        #
        # Each frame gets compressed using PNG compression *except* if:
        #
        #  * The image is monochrome => encode using CCITT group 4
        #
        #  * The image is CMYK => zip plain RGB data
        #
        #  * We are handling a CCITT encoded TIFF frame => embed data
    
        result = []
        img_page_count = 0
        # loop through all frames of the image (example: multipage TIFF)
        while True:
            try:
                imgdata.seek(img_page_count)
            except EOFError:
                break
    
            if first_frame_only and img_page_count > 0:
                break
    
            # PIL is unable to preserve the data of 16-bit RGB TIFF files and will
            # convert it to 8-bit without the possibility to retrieve the original
            # data
            # https://github.com/python-pillow/Pillow/issues/1888
            #
            # Some tiff images do not have BITSPERSAMPLE set. Use this to create
            # such a tiff: tiffset -u 258 test.tif
            if (
                imgformat == ImageFormat.TIFF
                and max(imgdata.tag_v2.get(TiffImagePlugin.BITSPERSAMPLE, [1])) > 8
            ):
                raise ValueError("PIL is unable to preserve more than 8 bits per sample")
    
            # We can directly copy the data out of a CCITT Group 4 encoded TIFF, if it
            # only contains a single strip
            if (
                imgformat == ImageFormat.TIFF
                and imgdata.info["compression"] == "group4"
                and len(imgdata.tag_v2[TiffImagePlugin.STRIPOFFSETS]) == 1
            ):
                photo = imgdata.tag_v2[TiffImagePlugin.PHOTOMETRIC_INTERPRETATION]
                inverted = False
                if photo == 0:
                    inverted = True
                elif photo != 1:
                    raise ValueError(
                        "unsupported photometric interpretation for "
                        "group4 tiff: %d" % photo
                    )
                color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                    imgdata, imgformat, default_dpi, colorspace, rawdata
                )
                offset, length = ccitt_payload_location_from_pil(imgdata)
                im.seek(offset)
                rawdata = im.read(length)
                fillorder = imgdata.tag_v2.get(TiffImagePlugin.FILLORDER)
                if fillorder is None:
                    # no FillOrder: nothing to do
                    pass
                elif fillorder == 1:
                    # msb-to-lsb: nothing to do
                    pass
                elif fillorder == 2:
                    logger.debug("fillorder is lsb-to-msb => reverse bits")
                    # lsb-to-msb: reverse bits of each byte
                    rawdata = bytearray(rawdata)
                    for i in range(len(rawdata)):
                        rawdata[i] = TIFFBitRevTable[rawdata[i]]
                    rawdata = bytes(rawdata)
                else:
                    raise ValueError("unsupported FillOrder: %d" % fillorder)
                logger.debug("read_images() embeds Group4 from TIFF")
                result.append(
                    (
                        color,
                        ndpi,
                        ImageFormat.CCITTGroup4,
                        rawdata,
                        imgwidthpx,
                        imgheightpx,
                        [],
                        inverted,
                        1,
                        rotation,
                        iccp,
                    )
                )
                img_page_count += 1
                continue
    
            logger.debug("Converting frame: %d" % img_page_count)
    
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace
            )
    
            newimg = None
            if color == Colorspace["1"]:
                try:
>                   ccittdata = transcode_monochrome(imgdata)

cleanup    = <function read_images.<locals>.cleanup at 0x7f09a90c9820>
color      = <Colorspace.1: 3>
colorspace = None
f          = <ImageFormat.other: 7>
first_frame_only = False
iccp       = None
im         = <_io.BytesIO object at 0x7f09a8e95ae0>
img_page_count = 0
imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>
imgformat  = <ImageFormat.TIFF: 5>
imgheightpx = 48
imgwidthpx = 115
ndpi       = (72, 72)
newimg     = None
rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
result     = []
rotation   = 0

src/img2pdf.py:1614: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

imgdata = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>

    def transcode_monochrome(imgdata):
        """Convert the open PIL.Image imgdata to compressed CCITT Group4 data"""
    
        logger.debug("Converting monochrome to CCITT Group4")
    
        # Convert the image to Group 4 in memory. If libtiff is not installed and
        # Pillow is not compiled against it, .save() will raise an exception.
        newimgio = BytesIO()
    
        # we create a whole new PIL image or otherwise it might happen with some
        # input images, that libtiff fails an assert and the whole process is
        # killed by a SIGABRT:
        #   https://gitlab.mister-muffin.de/josch/img2pdf/issues/46
>       im = Image.frombytes(imgdata.mode, imgdata.size, imgdata.tobytes())

imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>
newimgio   = <_io.BytesIO object at 0x7f09a8e95c20>

src/img2pdf.py:1316: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>
encoder_name = 'raw', args = '1'

    def tobytes(self, encoder_name="raw", *args):
        """
        Return image as a bytes object.
    
        .. warning::
    
            This method returns the raw image data from the internal
            storage.  For compressed image data (e.g. PNG, JPEG) use
            :meth:`~.save`, with a BytesIO parameter for in-memory
            data.
    
        :param encoder_name: What encoder to use.  The default is to
                             use the standard "raw" encoder.
        :param args: Extra arguments to the encoder.
        :returns: A :py:class:`bytes` object.
        """
    
        # may pass tuple instead of argument list
        if len(args) == 1 and isinstance(args[0], tuple):
            args = args[0]
    
        if encoder_name == "raw" and args == ():
            args = self.mode
    
>       self.load()

args       = '1'
encoder_name = 'raw'
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>

/usr/lib/python3.8/site-packages/PIL/Image.py:744: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>

    def load(self):
        if self.tile and self.use_load_libtiff:
>           return self._load_libtiff()

__class__  = <class 'PIL.TiffImagePlugin.TiffImageFile'>
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>

/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1122: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>

    def _load_libtiff(self):
        """Overload method triggered when we detect a compressed tiff
        Calls out to libtiff"""
    
        Image.Image.load(self)
    
        self.load_prepare()
    
        if not len(self.tile) == 1:
            raise OSError("Not exactly one tile")
    
        # (self._compression, (extents tuple),
        #   0, (rawmode, self._compression, fp))
        extents = self.tile[0][1]
        args = list(self.tile[0][3])
    
        # To be nice on memory footprint, if there's a
        # file descriptor, use that instead of reading
        # into a string in python.
        # libtiff closes the file descriptor, so pass in a dup.
        try:
            fp = hasattr(self.fp, "fileno") and os.dup(self.fp.fileno())
            # flush the file descriptor, prevents error on pypy 2.4+
            # should also eliminate the need for fp.tell
            # in _seek
            if hasattr(self.fp, "flush"):
                self.fp.flush()
        except OSError:
            # io.BytesIO have a fileno, but returns an OSError if
            # it doesn't use a file descriptor.
            fp = False
    
        if fp:
            args[2] = fp
    
>       decoder = Image._getdecoder(
            self.mode, "libtiff", tuple(args), self.decoderconfig
        )

args       = ['1', 'tiff_adobe_deflate', False, 554]
extents    = (0, 0, 115, 48)
fp         = False
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>

/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1180: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
            decoder = getattr(core, decoder_name + "_decoder")
        except AttributeError as e:
>           raise OSError(f"decoder {decoder_name} not available") from e
E           OSError: decoder libtiff not available

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:432: OSError

During handling of the above exception, another exception occurred:

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
>           decoder = getattr(core, decoder_name + "_decoder")
E           AttributeError: module 'PIL._imaging' has no attribute 'libtiff_decoder'

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:430: AttributeError

The above exception was the direct cause of the following exception:

general_input = 'mono.tif', engine = <Engine.internal: 1>

    @pytest.mark.parametrize("engine", ["internal", "pikepdf", "pdfrw"])
    def test_general(general_input, engine):
        inputf = os.path.join(os.path.dirname(__file__), "tests", "input", general_input)
        outputf = os.path.join(
            os.path.dirname(__file__), "tests", "output", general_input + ".pdf"
        )
        assert os.path.isfile(outputf)
        f = inputf
        out = outputf
    
        engine = getattr(img2pdf.Engine, engine)
    
        # we do not test animation.gif with pdfrw because it doesn't support
        # saving hexadecimal palette data
        if f.endswith(os.path.sep + "animation.gif") and engine == img2pdf.Engine.pdfrw:
            return
        with open(f, "rb") as inf:
            orig_imgdata = inf.read()
>       output = img2pdf.convert(orig_imgdata, nodate=True, engine=engine)

engine     = <Engine.internal: 1>
f          = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'
general_input = 'mono.tif'
inf        = <_io.BufferedReader name='/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'>
inputf     = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'
orig_imgdata = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
out        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/output/mono.tif.pdf'
outputf    = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/output/mono.tif.pdf'

src/img2pdf_test.py:6303: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
src/img2pdf.py:2102: in convert
    ) in read_images(rawdata, kwargs["colorspace"], kwargs["first_frame_only"]):
        _default_kwargs = {'allow_oversized': True,
 'artborder': None,
 'author': None,
 'bleedborder': None,
 'colorspace': None,
 'creationdate': None,
 'creator': None,
 'cropborder': None,
 'engine': None,
 'first_frame_only': False,
 'keywords': None,
 'layout_fun': <function default_layout_fun at 0x7f09a912c940>,
 'moddate': None,
 'nodate': False,
 'outputstream': None,
 'pdfa': None,
 'producer': None,
 'subject': None,
 'title': None,
 'trimborder': None,
 'viewer_center_window': False,
 'viewer_fit_window': False,
 'viewer_fullscreen': False,
 'viewer_initial_page': None,
 'viewer_magnification': None,
 'viewer_page_layout': None,
 'viewer_panes': None}
        default    = None
        images     = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00',)
        img        = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
        kwargs     = {'allow_oversized': True,
 'artborder': None,
 'author': None,
 'bleedborder': None,
 'colorspace': None,
 'creationdate': None,
 'creator': None,
 'cropborder': None,
 'engine': <Engine.internal: 1>,
 'first_frame_only': False,
 'keywords': None,
 'layout_fun': <function default_layout_fun at 0x7f09a912c940>,
 'moddate': None,
 'nodate': True,
 'outputstream': None,
 'pdfa': None,
 'producer': None,
 'subject': None,
 'title': None,
 'trimborder': None,
 'viewer_center_window': False,
 'viewer_fit_window': False,
 'viewer_fullscreen': False,
 'viewer_initial_page': None,
 'viewer_magnification': None,
 'viewer_page_layout': None,
 'viewer_panes': None}
        kwname     = 'pdfa'
        pdf        = <img2pdf.pdfdoc object at 0x7f09a8e8bd00>
        rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
src/img2pdf.py:1636: in read_images
    newimg = imgdata.convert("L")
        cleanup    = <function read_images.<locals>.cleanup at 0x7f09a90c9820>
        color      = <Colorspace.1: 3>
        colorspace = None
        f          = <ImageFormat.other: 7>
        first_frame_only = False
        iccp       = None
        im         = <_io.BytesIO object at 0x7f09a8e95ae0>
        img_page_count = 0
        imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>
        imgformat  = <ImageFormat.TIFF: 5>
        imgheightpx = 48
        imgwidthpx = 115
        ndpi       = (72, 72)
        newimg     = None
        rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
        result     = []
        rotation   = 0
/usr/lib/python3.8/site-packages/PIL/Image.py:915: in convert
    self.load()
        colors     = 256
        dither     = None
        matrix     = None
        mode       = 'L'
        palette    = 0
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>
/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1122: in load
    return self._load_libtiff()
        __class__  = <class 'PIL.TiffImagePlugin.TiffImageFile'>
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>
/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1180: in _load_libtiff
    decoder = Image._getdecoder(
        args       = ['1', 'tiff_adobe_deflate', False, 554]
        extents    = (0, 0, 115, 48)
        fp         = False
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F09A8EA66A0>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
            decoder = getattr(core, decoder_name + "_decoder")
        except AttributeError as e:
>           raise OSError(f"decoder {decoder_name} not available") from e
E           OSError: decoder libtiff not available

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:432: OSError
________________________ test_general[mono.tif-pikepdf] ________________________
[gw9] linux -- Python 3.8.11 /usr/bin/python3.8

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
>           decoder = getattr(core, decoder_name + "_decoder")
E           AttributeError: module 'PIL._imaging' has no attribute 'libtiff_decoder'

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:430: AttributeError

The above exception was the direct cause of the following exception:

rawdata = b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x...\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00'
colorspace = None, first_frame_only = False

    def read_images(rawdata, colorspace, first_frame_only=False):
        im = BytesIO(rawdata)
        im.seek(0)
        imgdata = None
        try:
            imgdata = Image.open(im)
        except IOError as e:
            # test if it is a jpeg2000 image
            if rawdata[:12] != b"\x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A":
                raise ImageOpenError(
                    "cannot read input image (not jpeg2000). "
                    "PIL: error reading image: %s" % e
                )
            # image is jpeg2000
            imgformat = ImageFormat.JPEG2000
        else:
            logger.debug("PIL format = %s", imgdata.format)
            imgformat = None
            for f in ImageFormat:
                if f.name == imgdata.format:
                    imgformat = f
            if imgformat is None:
                imgformat = ImageFormat.other
    
        def cleanup():
            if imgdata is not None:
                # the python-pil version 2.3.0-1ubuntu3 in Ubuntu does not have the
                # close() method
                try:
                    imgdata.close()
                except AttributeError:
                    pass
            im.close()
    
        logger.debug("imgformat = %s", imgformat.name)
    
        # depending on the input format, determine whether to pass the raw
        # image or the zlib compressed color information
    
        # JPEG and JPEG2000 can be embedded into the PDF as-is
        if imgformat == ImageFormat.JPEG or imgformat == ImageFormat.JPEG2000:
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace, rawdata
            )
            if color == Colorspace["1"]:
                raise JpegColorspaceError("jpeg can't be monochrome")
            if color == Colorspace["P"]:
                raise JpegColorspaceError("jpeg can't have a color palette")
            if color == Colorspace["RGBA"]:
                raise JpegColorspaceError("jpeg can't have an alpha channel")
            logger.debug("read_images() embeds a JPEG")
            cleanup()
            return [
                (
                    color,
                    ndpi,
                    imgformat,
                    rawdata,
                    imgwidthpx,
                    imgheightpx,
                    [],
                    False,
                    8,
                    rotation,
                    iccp,
                )
            ]
    
        # The MPO format is multiple JPEG images concatenated together
        # we use the offset and size information to dissect the MPO into its
        # individual JPEG images and then embed those into the PDF individually.
        #
        # The downside is, that this truncates the first JPEG as the MPO metadata
        # will still be in it but the referenced images are chopped off. We still
        # do it that way instead of adding the full MPO as the first image to not
        # store duplicate image data.
        if imgformat == ImageFormat.MPO:
            result = []
            img_page_count = 0
            for offset, mpent in zip(
                imgdata._MpoImageFile__mpoffsets, imgdata.mpinfo[0xB002]
            ):
                if first_frame_only and img_page_count > 0:
                    break
                with BytesIO(rawdata[offset : offset + mpent["Size"]]) as rawframe:
                    with Image.open(rawframe) as imframe:
                        # The first frame contains the data that makes the JPEG a MPO
                        # Could we thus embed an MPO into another MPO? Lets not support
                        # such madness ;)
                        if img_page_count > 0 and imframe.format != "JPEG":
                            raise Exception("MPO payload must be a JPEG %s", imframe.format)
                        (
                            color,
                            ndpi,
                            imgwidthpx,
                            imgheightpx,
                            rotation,
                            iccp,
                        ) = get_imgmetadata(
                            imframe, ImageFormat.JPEG, default_dpi, colorspace
                        )
                if color == Colorspace["1"]:
                    raise JpegColorspaceError("jpeg can't be monochrome")
                if color == Colorspace["P"]:
                    raise JpegColorspaceError("jpeg can't have a color palette")
                if color == Colorspace["RGBA"]:
                    raise JpegColorspaceError("jpeg can't have an alpha channel")
                logger.debug("read_images() embeds a JPEG from MPO")
                result.append(
                    (
                        color,
                        ndpi,
                        ImageFormat.JPEG,
                        rawdata[offset : offset + mpent["Size"]],
                        imgwidthpx,
                        imgheightpx,
                        [],
                        False,
                        8,
                        rotation,
                        iccp,
                    )
                )
                img_page_count += 1
            cleanup()
            return result
    
        # We can directly embed the IDAT chunk of PNG images if the PNG is not
        # interlaced
        #
        # PIL does not provide the information whether a PNG was stored interlaced
        # or not. Thus, we retrieve that info manually by looking at byte 13 in the
        # IHDR chunk. We know where to find that in the file because the IHDR chunk
        # must be the first chunk.
        if imgformat == ImageFormat.PNG and rawdata[28] == 0:
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace, rawdata
            )
            pngidat, palette = parse_png(rawdata)
            # PIL does not provide the information about the original bits per
            # sample. Thus, we retrieve that info manually by looking at byte 9 in
            # the IHDR chunk. We know where to find that in the file because the
            # IHDR chunk must be the first chunk
            depth = rawdata[24]
            if depth not in [1, 2, 4, 8, 16]:
                raise ValueError("invalid bit depth: %d" % depth)
            logger.debug("read_images() embeds a PNG")
            cleanup()
            return [
                (
                    color,
                    ndpi,
                    imgformat,
                    pngidat,
                    imgwidthpx,
                    imgheightpx,
                    palette,
                    False,
                    depth,
                    rotation,
                    iccp,
                )
            ]
    
        # If our input is not JPEG or PNG, then we might have a format that
        # supports multiple frames (like TIFF or GIF), so we need a loop to
        # iterate through all frames of the image.
        #
        # Each frame gets compressed using PNG compression *except* if:
        #
        #  * The image is monochrome => encode using CCITT group 4
        #
        #  * The image is CMYK => zip plain RGB data
        #
        #  * We are handling a CCITT encoded TIFF frame => embed data
    
        result = []
        img_page_count = 0
        # loop through all frames of the image (example: multipage TIFF)
        while True:
            try:
                imgdata.seek(img_page_count)
            except EOFError:
                break
    
            if first_frame_only and img_page_count > 0:
                break
    
            # PIL is unable to preserve the data of 16-bit RGB TIFF files and will
            # convert it to 8-bit without the possibility to retrieve the original
            # data
            # https://github.com/python-pillow/Pillow/issues/1888
            #
            # Some tiff images do not have BITSPERSAMPLE set. Use this to create
            # such a tiff: tiffset -u 258 test.tif
            if (
                imgformat == ImageFormat.TIFF
                and max(imgdata.tag_v2.get(TiffImagePlugin.BITSPERSAMPLE, [1])) > 8
            ):
                raise ValueError("PIL is unable to preserve more than 8 bits per sample")
    
            # We can directly copy the data out of a CCITT Group 4 encoded TIFF, if it
            # only contains a single strip
            if (
                imgformat == ImageFormat.TIFF
                and imgdata.info["compression"] == "group4"
                and len(imgdata.tag_v2[TiffImagePlugin.STRIPOFFSETS]) == 1
            ):
                photo = imgdata.tag_v2[TiffImagePlugin.PHOTOMETRIC_INTERPRETATION]
                inverted = False
                if photo == 0:
                    inverted = True
                elif photo != 1:
                    raise ValueError(
                        "unsupported photometric interpretation for "
                        "group4 tiff: %d" % photo
                    )
                color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                    imgdata, imgformat, default_dpi, colorspace, rawdata
                )
                offset, length = ccitt_payload_location_from_pil(imgdata)
                im.seek(offset)
                rawdata = im.read(length)
                fillorder = imgdata.tag_v2.get(TiffImagePlugin.FILLORDER)
                if fillorder is None:
                    # no FillOrder: nothing to do
                    pass
                elif fillorder == 1:
                    # msb-to-lsb: nothing to do
                    pass
                elif fillorder == 2:
                    logger.debug("fillorder is lsb-to-msb => reverse bits")
                    # lsb-to-msb: reverse bits of each byte
                    rawdata = bytearray(rawdata)
                    for i in range(len(rawdata)):
                        rawdata[i] = TIFFBitRevTable[rawdata[i]]
                    rawdata = bytes(rawdata)
                else:
                    raise ValueError("unsupported FillOrder: %d" % fillorder)
                logger.debug("read_images() embeds Group4 from TIFF")
                result.append(
                    (
                        color,
                        ndpi,
                        ImageFormat.CCITTGroup4,
                        rawdata,
                        imgwidthpx,
                        imgheightpx,
                        [],
                        inverted,
                        1,
                        rotation,
                        iccp,
                    )
                )
                img_page_count += 1
                continue
    
            logger.debug("Converting frame: %d" % img_page_count)
    
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace
            )
    
            newimg = None
            if color == Colorspace["1"]:
                try:
>                   ccittdata = transcode_monochrome(imgdata)

cleanup    = <function read_images.<locals>.cleanup at 0x7fc9ac230f70>
color      = <Colorspace.1: 3>
colorspace = None
f          = <ImageFormat.other: 7>
first_frame_only = False
iccp       = None
im         = <_io.BytesIO object at 0x7fc9abf1cbd0>
img_page_count = 0
imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>
imgformat  = <ImageFormat.TIFF: 5>
imgheightpx = 48
imgwidthpx = 115
ndpi       = (72, 72)
newimg     = None
rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
result     = []
rotation   = 0

src/img2pdf.py:1614: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

imgdata = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>

    def transcode_monochrome(imgdata):
        """Convert the open PIL.Image imgdata to compressed CCITT Group4 data"""
    
        logger.debug("Converting monochrome to CCITT Group4")
    
        # Convert the image to Group 4 in memory. If libtiff is not installed and
        # Pillow is not compiled against it, .save() will raise an exception.
        newimgio = BytesIO()
    
        # we create a whole new PIL image or otherwise it might happen with some
        # input images, that libtiff fails an assert and the whole process is
        # killed by a SIGABRT:
        #   https://gitlab.mister-muffin.de/josch/img2pdf/issues/46
>       im = Image.frombytes(imgdata.mode, imgdata.size, imgdata.tobytes())

imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>
newimgio   = <_io.BytesIO object at 0x7fc9abf1c900>

src/img2pdf.py:1316: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>
encoder_name = 'raw', args = '1'

    def tobytes(self, encoder_name="raw", *args):
        """
        Return image as a bytes object.
    
        .. warning::
    
            This method returns the raw image data from the internal
            storage.  For compressed image data (e.g. PNG, JPEG) use
            :meth:`~.save`, with a BytesIO parameter for in-memory
            data.
    
        :param encoder_name: What encoder to use.  The default is to
                             use the standard "raw" encoder.
        :param args: Extra arguments to the encoder.
        :returns: A :py:class:`bytes` object.
        """
    
        # may pass tuple instead of argument list
        if len(args) == 1 and isinstance(args[0], tuple):
            args = args[0]
    
        if encoder_name == "raw" and args == ():
            args = self.mode
    
>       self.load()

args       = '1'
encoder_name = 'raw'
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>

/usr/lib/python3.8/site-packages/PIL/Image.py:744: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>

    def load(self):
        if self.tile and self.use_load_libtiff:
>           return self._load_libtiff()

__class__  = <class 'PIL.TiffImagePlugin.TiffImageFile'>
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>

/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1122: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>

    def _load_libtiff(self):
        """Overload method triggered when we detect a compressed tiff
        Calls out to libtiff"""
    
        Image.Image.load(self)
    
        self.load_prepare()
    
        if not len(self.tile) == 1:
            raise OSError("Not exactly one tile")
    
        # (self._compression, (extents tuple),
        #   0, (rawmode, self._compression, fp))
        extents = self.tile[0][1]
        args = list(self.tile[0][3])
    
        # To be nice on memory footprint, if there's a
        # file descriptor, use that instead of reading
        # into a string in python.
        # libtiff closes the file descriptor, so pass in a dup.
        try:
            fp = hasattr(self.fp, "fileno") and os.dup(self.fp.fileno())
            # flush the file descriptor, prevents error on pypy 2.4+
            # should also eliminate the need for fp.tell
            # in _seek
            if hasattr(self.fp, "flush"):
                self.fp.flush()
        except OSError:
            # io.BytesIO have a fileno, but returns an OSError if
            # it doesn't use a file descriptor.
            fp = False
    
        if fp:
            args[2] = fp
    
>       decoder = Image._getdecoder(
            self.mode, "libtiff", tuple(args), self.decoderconfig
        )

args       = ['1', 'tiff_adobe_deflate', False, 554]
extents    = (0, 0, 115, 48)
fp         = False
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>

/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1180: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
            decoder = getattr(core, decoder_name + "_decoder")
        except AttributeError as e:
>           raise OSError(f"decoder {decoder_name} not available") from e
E           OSError: decoder libtiff not available

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:432: OSError

During handling of the above exception, another exception occurred:

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
>           decoder = getattr(core, decoder_name + "_decoder")
E           AttributeError: module 'PIL._imaging' has no attribute 'libtiff_decoder'

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:430: AttributeError

The above exception was the direct cause of the following exception:

general_input = 'mono.tif', engine = <Engine.pikepdf: 3>

    @pytest.mark.parametrize("engine", ["internal", "pikepdf", "pdfrw"])
    def test_general(general_input, engine):
        inputf = os.path.join(os.path.dirname(__file__), "tests", "input", general_input)
        outputf = os.path.join(
            os.path.dirname(__file__), "tests", "output", general_input + ".pdf"
        )
        assert os.path.isfile(outputf)
        f = inputf
        out = outputf
    
        engine = getattr(img2pdf.Engine, engine)
    
        # we do not test animation.gif with pdfrw because it doesn't support
        # saving hexadecimal palette data
        if f.endswith(os.path.sep + "animation.gif") and engine == img2pdf.Engine.pdfrw:
            return
        with open(f, "rb") as inf:
            orig_imgdata = inf.read()
>       output = img2pdf.convert(orig_imgdata, nodate=True, engine=engine)

engine     = <Engine.pikepdf: 3>
f          = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'
general_input = 'mono.tif'
inf        = <_io.BufferedReader name='/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'>
inputf     = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'
orig_imgdata = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
out        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/output/mono.tif.pdf'
outputf    = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/output/mono.tif.pdf'

src/img2pdf_test.py:6303: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
src/img2pdf.py:2102: in convert
    ) in read_images(rawdata, kwargs["colorspace"], kwargs["first_frame_only"]):
        _default_kwargs = {'allow_oversized': True,
 'artborder': None,
 'author': None,
 'bleedborder': None,
 'colorspace': None,
 'creationdate': None,
 'creator': None,
 'cropborder': None,
 'engine': None,
 'first_frame_only': False,
 'keywords': None,
 'layout_fun': <function default_layout_fun at 0x7fc9ac234940>,
 'moddate': None,
 'nodate': False,
 'outputstream': None,
 'pdfa': None,
 'producer': None,
 'subject': None,
 'title': None,
 'trimborder': None,
 'viewer_center_window': False,
 'viewer_fit_window': False,
 'viewer_fullscreen': False,
 'viewer_initial_page': None,
 'viewer_magnification': None,
 'viewer_page_layout': None,
 'viewer_panes': None}
        default    = None
        images     = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00',)
        img        = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
        kwargs     = {'allow_oversized': True,
 'artborder': None,
 'author': None,
 'bleedborder': None,
 'colorspace': None,
 'creationdate': None,
 'creator': None,
 'cropborder': None,
 'engine': <Engine.pikepdf: 3>,
 'first_frame_only': False,
 'keywords': None,
 'layout_fun': <function default_layout_fun at 0x7fc9ac234940>,
 'moddate': None,
 'nodate': True,
 'outputstream': None,
 'pdfa': None,
 'producer': None,
 'subject': None,
 'title': None,
 'trimborder': None,
 'viewer_center_window': False,
 'viewer_fit_window': False,
 'viewer_fullscreen': False,
 'viewer_initial_page': None,
 'viewer_magnification': None,
 'viewer_page_layout': None,
 'viewer_panes': None}
        kwname     = 'pdfa'
        pdf        = <img2pdf.pdfdoc object at 0x7fc9abf18640>
        rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
src/img2pdf.py:1636: in read_images
    newimg = imgdata.convert("L")
        cleanup    = <function read_images.<locals>.cleanup at 0x7fc9ac230f70>
        color      = <Colorspace.1: 3>
        colorspace = None
        f          = <ImageFormat.other: 7>
        first_frame_only = False
        iccp       = None
        im         = <_io.BytesIO object at 0x7fc9abf1cbd0>
        img_page_count = 0
        imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>
        imgformat  = <ImageFormat.TIFF: 5>
        imgheightpx = 48
        imgwidthpx = 115
        ndpi       = (72, 72)
        newimg     = None
        rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
        result     = []
        rotation   = 0
/usr/lib/python3.8/site-packages/PIL/Image.py:915: in convert
    self.load()
        colors     = 256
        dither     = None
        matrix     = None
        mode       = 'L'
        palette    = 0
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>
/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1122: in load
    return self._load_libtiff()
        __class__  = <class 'PIL.TiffImagePlugin.TiffImageFile'>
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>
/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1180: in _load_libtiff
    decoder = Image._getdecoder(
        args       = ['1', 'tiff_adobe_deflate', False, 554]
        extents    = (0, 0, 115, 48)
        fp         = False
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7FC9ABF252E0>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
            decoder = getattr(core, decoder_name + "_decoder")
        except AttributeError as e:
>           raise OSError(f"decoder {decoder_name} not available") from e
E           OSError: decoder libtiff not available

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:432: OSError
_________________________ test_general[mono.tif-pdfrw] _________________________
[gw8] linux -- Python 3.8.11 /usr/bin/python3.8

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
>           decoder = getattr(core, decoder_name + "_decoder")
E           AttributeError: module 'PIL._imaging' has no attribute 'libtiff_decoder'

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:430: AttributeError

The above exception was the direct cause of the following exception:

rawdata = b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x...\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00'
colorspace = None, first_frame_only = False

    def read_images(rawdata, colorspace, first_frame_only=False):
        im = BytesIO(rawdata)
        im.seek(0)
        imgdata = None
        try:
            imgdata = Image.open(im)
        except IOError as e:
            # test if it is a jpeg2000 image
            if rawdata[:12] != b"\x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A":
                raise ImageOpenError(
                    "cannot read input image (not jpeg2000). "
                    "PIL: error reading image: %s" % e
                )
            # image is jpeg2000
            imgformat = ImageFormat.JPEG2000
        else:
            logger.debug("PIL format = %s", imgdata.format)
            imgformat = None
            for f in ImageFormat:
                if f.name == imgdata.format:
                    imgformat = f
            if imgformat is None:
                imgformat = ImageFormat.other
    
        def cleanup():
            if imgdata is not None:
                # the python-pil version 2.3.0-1ubuntu3 in Ubuntu does not have the
                # close() method
                try:
                    imgdata.close()
                except AttributeError:
                    pass
            im.close()
    
        logger.debug("imgformat = %s", imgformat.name)
    
        # depending on the input format, determine whether to pass the raw
        # image or the zlib compressed color information
    
        # JPEG and JPEG2000 can be embedded into the PDF as-is
        if imgformat == ImageFormat.JPEG or imgformat == ImageFormat.JPEG2000:
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace, rawdata
            )
            if color == Colorspace["1"]:
                raise JpegColorspaceError("jpeg can't be monochrome")
            if color == Colorspace["P"]:
                raise JpegColorspaceError("jpeg can't have a color palette")
            if color == Colorspace["RGBA"]:
                raise JpegColorspaceError("jpeg can't have an alpha channel")
            logger.debug("read_images() embeds a JPEG")
            cleanup()
            return [
                (
                    color,
                    ndpi,
                    imgformat,
                    rawdata,
                    imgwidthpx,
                    imgheightpx,
                    [],
                    False,
                    8,
                    rotation,
                    iccp,
                )
            ]
    
        # The MPO format is multiple JPEG images concatenated together
        # we use the offset and size information to dissect the MPO into its
        # individual JPEG images and then embed those into the PDF individually.
        #
        # The downside is, that this truncates the first JPEG as the MPO metadata
        # will still be in it but the referenced images are chopped off. We still
        # do it that way instead of adding the full MPO as the first image to not
        # store duplicate image data.
        if imgformat == ImageFormat.MPO:
            result = []
            img_page_count = 0
            for offset, mpent in zip(
                imgdata._MpoImageFile__mpoffsets, imgdata.mpinfo[0xB002]
            ):
                if first_frame_only and img_page_count > 0:
                    break
                with BytesIO(rawdata[offset : offset + mpent["Size"]]) as rawframe:
                    with Image.open(rawframe) as imframe:
                        # The first frame contains the data that makes the JPEG a MPO
                        # Could we thus embed an MPO into another MPO? Lets not support
                        # such madness ;)
                        if img_page_count > 0 and imframe.format != "JPEG":
                            raise Exception("MPO payload must be a JPEG %s", imframe.format)
                        (
                            color,
                            ndpi,
                            imgwidthpx,
                            imgheightpx,
                            rotation,
                            iccp,
                        ) = get_imgmetadata(
                            imframe, ImageFormat.JPEG, default_dpi, colorspace
                        )
                if color == Colorspace["1"]:
                    raise JpegColorspaceError("jpeg can't be monochrome")
                if color == Colorspace["P"]:
                    raise JpegColorspaceError("jpeg can't have a color palette")
                if color == Colorspace["RGBA"]:
                    raise JpegColorspaceError("jpeg can't have an alpha channel")
                logger.debug("read_images() embeds a JPEG from MPO")
                result.append(
                    (
                        color,
                        ndpi,
                        ImageFormat.JPEG,
                        rawdata[offset : offset + mpent["Size"]],
                        imgwidthpx,
                        imgheightpx,
                        [],
                        False,
                        8,
                        rotation,
                        iccp,
                    )
                )
                img_page_count += 1
            cleanup()
            return result
    
        # We can directly embed the IDAT chunk of PNG images if the PNG is not
        # interlaced
        #
        # PIL does not provide the information whether a PNG was stored interlaced
        # or not. Thus, we retrieve that info manually by looking at byte 13 in the
        # IHDR chunk. We know where to find that in the file because the IHDR chunk
        # must be the first chunk.
        if imgformat == ImageFormat.PNG and rawdata[28] == 0:
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace, rawdata
            )
            pngidat, palette = parse_png(rawdata)
            # PIL does not provide the information about the original bits per
            # sample. Thus, we retrieve that info manually by looking at byte 9 in
            # the IHDR chunk. We know where to find that in the file because the
            # IHDR chunk must be the first chunk
            depth = rawdata[24]
            if depth not in [1, 2, 4, 8, 16]:
                raise ValueError("invalid bit depth: %d" % depth)
            logger.debug("read_images() embeds a PNG")
            cleanup()
            return [
                (
                    color,
                    ndpi,
                    imgformat,
                    pngidat,
                    imgwidthpx,
                    imgheightpx,
                    palette,
                    False,
                    depth,
                    rotation,
                    iccp,
                )
            ]
    
        # If our input is not JPEG or PNG, then we might have a format that
        # supports multiple frames (like TIFF or GIF), so we need a loop to
        # iterate through all frames of the image.
        #
        # Each frame gets compressed using PNG compression *except* if:
        #
        #  * The image is monochrome => encode using CCITT group 4
        #
        #  * The image is CMYK => zip plain RGB data
        #
        #  * We are handling a CCITT encoded TIFF frame => embed data
    
        result = []
        img_page_count = 0
        # loop through all frames of the image (example: multipage TIFF)
        while True:
            try:
                imgdata.seek(img_page_count)
            except EOFError:
                break
    
            if first_frame_only and img_page_count > 0:
                break
    
            # PIL is unable to preserve the data of 16-bit RGB TIFF files and will
            # convert it to 8-bit without the possibility to retrieve the original
            # data
            # https://github.com/python-pillow/Pillow/issues/1888
            #
            # Some tiff images do not have BITSPERSAMPLE set. Use this to create
            # such a tiff: tiffset -u 258 test.tif
            if (
                imgformat == ImageFormat.TIFF
                and max(imgdata.tag_v2.get(TiffImagePlugin.BITSPERSAMPLE, [1])) > 8
            ):
                raise ValueError("PIL is unable to preserve more than 8 bits per sample")
    
            # We can directly copy the data out of a CCITT Group 4 encoded TIFF, if it
            # only contains a single strip
            if (
                imgformat == ImageFormat.TIFF
                and imgdata.info["compression"] == "group4"
                and len(imgdata.tag_v2[TiffImagePlugin.STRIPOFFSETS]) == 1
            ):
                photo = imgdata.tag_v2[TiffImagePlugin.PHOTOMETRIC_INTERPRETATION]
                inverted = False
                if photo == 0:
                    inverted = True
                elif photo != 1:
                    raise ValueError(
                        "unsupported photometric interpretation for "
                        "group4 tiff: %d" % photo
                    )
                color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                    imgdata, imgformat, default_dpi, colorspace, rawdata
                )
                offset, length = ccitt_payload_location_from_pil(imgdata)
                im.seek(offset)
                rawdata = im.read(length)
                fillorder = imgdata.tag_v2.get(TiffImagePlugin.FILLORDER)
                if fillorder is None:
                    # no FillOrder: nothing to do
                    pass
                elif fillorder == 1:
                    # msb-to-lsb: nothing to do
                    pass
                elif fillorder == 2:
                    logger.debug("fillorder is lsb-to-msb => reverse bits")
                    # lsb-to-msb: reverse bits of each byte
                    rawdata = bytearray(rawdata)
                    for i in range(len(rawdata)):
                        rawdata[i] = TIFFBitRevTable[rawdata[i]]
                    rawdata = bytes(rawdata)
                else:
                    raise ValueError("unsupported FillOrder: %d" % fillorder)
                logger.debug("read_images() embeds Group4 from TIFF")
                result.append(
                    (
                        color,
                        ndpi,
                        ImageFormat.CCITTGroup4,
                        rawdata,
                        imgwidthpx,
                        imgheightpx,
                        [],
                        inverted,
                        1,
                        rotation,
                        iccp,
                    )
                )
                img_page_count += 1
                continue
    
            logger.debug("Converting frame: %d" % img_page_count)
    
            color, ndpi, imgwidthpx, imgheightpx, rotation, iccp = get_imgmetadata(
                imgdata, imgformat, default_dpi, colorspace
            )
    
            newimg = None
            if color == Colorspace["1"]:
                try:
>                   ccittdata = transcode_monochrome(imgdata)

cleanup    = <function read_images.<locals>.cleanup at 0x7f7d8a916040>
color      = <Colorspace.1: 3>
colorspace = None
f          = <ImageFormat.other: 7>
first_frame_only = False
iccp       = None
im         = <_io.BytesIO object at 0x7f7d8a904c20>
img_page_count = 0
imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>
imgformat  = <ImageFormat.TIFF: 5>
imgheightpx = 48
imgwidthpx = 115
ndpi       = (72, 72)
newimg     = None
rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
result     = []
rotation   = 0

src/img2pdf.py:1614: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

imgdata = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>

    def transcode_monochrome(imgdata):
        """Convert the open PIL.Image imgdata to compressed CCITT Group4 data"""
    
        logger.debug("Converting monochrome to CCITT Group4")
    
        # Convert the image to Group 4 in memory. If libtiff is not installed and
        # Pillow is not compiled against it, .save() will raise an exception.
        newimgio = BytesIO()
    
        # we create a whole new PIL image or otherwise it might happen with some
        # input images, that libtiff fails an assert and the whole process is
        # killed by a SIGABRT:
        #   https://gitlab.mister-muffin.de/josch/img2pdf/issues/46
>       im = Image.frombytes(imgdata.mode, imgdata.size, imgdata.tobytes())

imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>
newimgio   = <_io.BytesIO object at 0x7f7d8a904cc0>

src/img2pdf.py:1316: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>
encoder_name = 'raw', args = '1'

    def tobytes(self, encoder_name="raw", *args):
        """
        Return image as a bytes object.
    
        .. warning::
    
            This method returns the raw image data from the internal
            storage.  For compressed image data (e.g. PNG, JPEG) use
            :meth:`~.save`, with a BytesIO parameter for in-memory
            data.
    
        :param encoder_name: What encoder to use.  The default is to
                             use the standard "raw" encoder.
        :param args: Extra arguments to the encoder.
        :returns: A :py:class:`bytes` object.
        """
    
        # may pass tuple instead of argument list
        if len(args) == 1 and isinstance(args[0], tuple):
            args = args[0]
    
        if encoder_name == "raw" and args == ():
            args = self.mode
    
>       self.load()

args       = '1'
encoder_name = 'raw'
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>

/usr/lib/python3.8/site-packages/PIL/Image.py:744: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>

    def load(self):
        if self.tile and self.use_load_libtiff:
>           return self._load_libtiff()

__class__  = <class 'PIL.TiffImagePlugin.TiffImageFile'>
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>

/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1122: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>

    def _load_libtiff(self):
        """Overload method triggered when we detect a compressed tiff
        Calls out to libtiff"""
    
        Image.Image.load(self)
    
        self.load_prepare()
    
        if not len(self.tile) == 1:
            raise OSError("Not exactly one tile")
    
        # (self._compression, (extents tuple),
        #   0, (rawmode, self._compression, fp))
        extents = self.tile[0][1]
        args = list(self.tile[0][3])
    
        # To be nice on memory footprint, if there's a
        # file descriptor, use that instead of reading
        # into a string in python.
        # libtiff closes the file descriptor, so pass in a dup.
        try:
            fp = hasattr(self.fp, "fileno") and os.dup(self.fp.fileno())
            # flush the file descriptor, prevents error on pypy 2.4+
            # should also eliminate the need for fp.tell
            # in _seek
            if hasattr(self.fp, "flush"):
                self.fp.flush()
        except OSError:
            # io.BytesIO have a fileno, but returns an OSError if
            # it doesn't use a file descriptor.
            fp = False
    
        if fp:
            args[2] = fp
    
>       decoder = Image._getdecoder(
            self.mode, "libtiff", tuple(args), self.decoderconfig
        )

args       = ['1', 'tiff_adobe_deflate', False, 554]
extents    = (0, 0, 115, 48)
fp         = False
self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>

/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1180: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
            decoder = getattr(core, decoder_name + "_decoder")
        except AttributeError as e:
>           raise OSError(f"decoder {decoder_name} not available") from e
E           OSError: decoder libtiff not available

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:432: OSError

During handling of the above exception, another exception occurred:

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
>           decoder = getattr(core, decoder_name + "_decoder")
E           AttributeError: module 'PIL._imaging' has no attribute 'libtiff_decoder'

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:430: AttributeError

The above exception was the direct cause of the following exception:

general_input = 'mono.tif', engine = <Engine.pdfrw: 2>

    @pytest.mark.parametrize("engine", ["internal", "pikepdf", "pdfrw"])
    def test_general(general_input, engine):
        inputf = os.path.join(os.path.dirname(__file__), "tests", "input", general_input)
        outputf = os.path.join(
            os.path.dirname(__file__), "tests", "output", general_input + ".pdf"
        )
        assert os.path.isfile(outputf)
        f = inputf
        out = outputf
    
        engine = getattr(img2pdf.Engine, engine)
    
        # we do not test animation.gif with pdfrw because it doesn't support
        # saving hexadecimal palette data
        if f.endswith(os.path.sep + "animation.gif") and engine == img2pdf.Engine.pdfrw:
            return
        with open(f, "rb") as inf:
            orig_imgdata = inf.read()
>       output = img2pdf.convert(orig_imgdata, nodate=True, engine=engine)

engine     = <Engine.pdfrw: 2>
f          = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'
general_input = 'mono.tif'
inf        = <_io.BufferedReader name='/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'>
inputf     = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/input/mono.tif'
orig_imgdata = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
out        = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/output/mono.tif.pdf'
outputf    = '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1/src/tests/output/mono.tif.pdf'

src/img2pdf_test.py:6303: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
src/img2pdf.py:2102: in convert
    ) in read_images(rawdata, kwargs["colorspace"], kwargs["first_frame_only"]):
        _default_kwargs = {'allow_oversized': True,
 'artborder': None,
 'author': None,
 'bleedborder': None,
 'colorspace': None,
 'creationdate': None,
 'creator': None,
 'cropborder': None,
 'engine': None,
 'first_frame_only': False,
 'keywords': None,
 'layout_fun': <function default_layout_fun at 0x7f7d8abf9940>,
 'moddate': None,
 'nodate': False,
 'outputstream': None,
 'pdfa': None,
 'producer': None,
 'subject': None,
 'title': None,
 'trimborder': None,
 'viewer_center_window': False,
 'viewer_fit_window': False,
 'viewer_fullscreen': False,
 'viewer_initial_page': None,
 'viewer_magnification': None,
 'viewer_page_layout': None,
 'viewer_panes': None}
        default    = None
        images     = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00',)
        img        = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
        kwargs     = {'allow_oversized': True,
 'artborder': None,
 'author': None,
 'bleedborder': None,
 'colorspace': None,
 'creationdate': None,
 'creator': None,
 'cropborder': None,
 'engine': <Engine.pdfrw: 2>,
 'first_frame_only': False,
 'keywords': None,
 'layout_fun': <function default_layout_fun at 0x7f7d8abf9940>,
 'moddate': None,
 'nodate': True,
 'outputstream': None,
 'pdfa': None,
 'producer': None,
 'subject': None,
 'title': None,
 'trimborder': None,
 'viewer_center_window': False,
 'viewer_fit_window': False,
 'viewer_fullscreen': False,
 'viewer_initial_page': None,
 'viewer_magnification': None,
 'viewer_page_layout': None,
 'viewer_panes': None}
        kwname     = 'pdfa'
        pdf        = <img2pdf.pdfdoc object at 0x7f7d8a8fc880>
        rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
src/img2pdf.py:1636: in read_images
    newimg = imgdata.convert("L")
        cleanup    = <function read_images.<locals>.cleanup at 0x7f7d8a916040>
        color      = <Colorspace.1: 3>
        colorspace = None
        f          = <ImageFormat.other: 7>
        first_frame_only = False
        iccp       = None
        im         = <_io.BytesIO object at 0x7f7d8a904c20>
        img_page_count = 0
        imgdata    = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>
        imgformat  = <ImageFormat.TIFF: 5>
        imgheightpx = 48
        imgwidthpx = 115
        ndpi       = (72, 72)
        newimg     = None
        rawdata    = (b'II*\x00*\x02\x00\x00x\x9c\xcd\xd2\xc1\r\xc3 \x0c\x05\xd0\x1fq\xc81#0\n\xa3t'
 b"\x14\x18\r\xa9\x0bt\x84\x8c\xe0\x9e\xea\x03\xe2'\xa4jc_\xabV*\xa7\xff\x0e"
 b'\x18\xd9\x86\xb4g\xe5\x7f\xf1\x16\x0f\n\x10*\x02\xcb4\xd2\x8b\x1d\xb0'
 b'l\xcb\x91V\xf6\xc8+\xa9IGz3wK\xc9t\xe4\xe7T_J\xd3\xc9\x8aY\x83c\xc3'
 b'\xc5\xb2c\xb6w\xf7\x06\x1d\x15\x8e,\xd9Q<59\xb6o\xf11\x86w\xf2\xee\xdf\x95XM'
 b'GA0Y\xea\xbe5C\x96\xf8\xe4\xcf~\xce\x06\x1f~L\xd4\x00\t\x00\x00\x01'
 b'\x03\x00\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00'
 b'\x00\x00\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01'
 b'\x03\x00\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00'
 b'\x00\x00\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01'
 b'\x04\x00\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00'
 b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1c\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x00'
 b'\x00\x00\x00\x00\x0c\x00\x00\x01\x03\x00\x01\x00\x00\x00s\x00'
 b'\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x02\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00\x01\x00'
 b'\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00\x01\x00'
 b'\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00\x16\x01'
 b'\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00\x01\x00'
 b'\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00\x1a\x02'
 b'\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00"\x02\x00\x00\x1c\x01'
 b'\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00\x01\x00'
 b'\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00'
 b'\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0c\x00\x00\x01\x03\x00'
 b'\x01\x00\x00\x00s\x00\x00\x00\x01\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00'
 b'\x02\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x01\x03\x00'
 b'\x01\x00\x00\x00\x08\x00\x00\x00\x06\x01\x03\x00\x01\x00\x00\x00'
 b'\x01\x00\x00\x00\x11\x01\x04\x00\x01\x00\x00\x00\x08\x00\x00\x00'
 b'\x16\x01\x03\x00\x01\x00\x00\x000\x00\x00\x00\x17\x01\x04\x00'
 b'\x01\x00\x00\x00\x8b\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00'
 b'\xc0\x02\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00\xc8\x02\x00\x00'
 b'\x1c\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00(\x01\x03\x00'
 b'\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00'
 b'\x01\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00')
        result     = []
        rotation   = 0
/usr/lib/python3.8/site-packages/PIL/Image.py:915: in convert
    self.load()
        colors     = 256
        dither     = None
        matrix     = None
        mode       = 'L'
        palette    = 0
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>
/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1122: in load
    return self._load_libtiff()
        __class__  = <class 'PIL.TiffImagePlugin.TiffImageFile'>
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>
/usr/lib/python3.8/site-packages/PIL/TiffImagePlugin.py:1180: in _load_libtiff
    decoder = Image._getdecoder(
        args       = ['1', 'tiff_adobe_deflate', False, 554]
        extents    = (0, 0, 115, 48)
        fp         = False
        self       = <PIL.TiffImagePlugin.TiffImageFile image mode=1 size=115x48 at 0x7F7D8A909C10>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

mode = '1', decoder_name = 'libtiff'
args = ('1', 'tiff_adobe_deflate', False, 554), extra = ()

    def _getdecoder(mode, decoder_name, args, extra=()):
    
        # tweak arguments
        if args is None:
            args = ()
        elif not isinstance(args, tuple):
            args = (args,)
    
        try:
            decoder = DECODERS[decoder_name]
        except KeyError:
            pass
        else:
            return decoder(mode, *args + extra)
    
        try:
            # get decoder
            decoder = getattr(core, decoder_name + "_decoder")
        except AttributeError as e:
>           raise OSError(f"decoder {decoder_name} not available") from e
E           OSError: decoder libtiff not available

args       = ('1', 'tiff_adobe_deflate', False, 554)
decoder_name = 'libtiff'
extra      = ()
mode       = '1'

/usr/lib/python3.8/site-packages/PIL/Image.py:432: OSError
=========================== short test summary info ============================
ERROR src/img2pdf_test.py::test_tiff_rgb12[internal] - AssertionError: [{'ver...
ERROR src/img2pdf_test.py::test_tiff_rgb12[pikepdf] - AssertionError: [{'vers...
ERROR src/img2pdf_test.py::test_tiff_float[pdfrw] - AssertionError: [{'versio...
ERROR src/img2pdf_test.py::test_tiff_float[pikepdf] - AssertionError: [{'vers...
ERROR src/img2pdf_test.py::test_tiff_float[internal] - AssertionError: [{'ver...
ERROR src/img2pdf_test.py::test_tiff_rgb12[pdfrw] - AssertionError: [{'versio...
ERROR src/img2pdf_test.py::test_tiff_gray1[internal] - assert 8 == 1
ERROR src/img2pdf_test.py::test_tiff_rgb14[internal] - AssertionError: [{'ver...
ERROR src/img2pdf_test.py::test_tiff_gray1[pikepdf] - assert 8 == 1
ERROR src/img2pdf_test.py::test_tiff_rgb14[pikepdf] - AssertionError: [{'vers...
ERROR src/img2pdf_test.py::test_tiff_rgb14[pdfrw] - AssertionError: [{'versio...
ERROR src/img2pdf_test.py::test_tiff_gray1[pdfrw] - assert 8 == 1
FAILED src/img2pdf_test.py::test_png_icc[pdfrw] - ValueError: could not conve...
FAILED src/img2pdf_test.py::test_png_icc[internal] - ValueError: could not co...
FAILED src/img2pdf_test.py::test_png_icc[pikepdf] - ValueError: could not con...
FAILED src/img2pdf_test.py::test_general[mono.tif-internal] - OSError: decode...
FAILED src/img2pdf_test.py::test_general[mono.tif-pikepdf] - OSError: decoder...
FAILED src/img2pdf_test.py::test_general[mono.tif-pdfrw] - OSError: decoder l...
================== 6 failed, 330 passed, 12 errors in 20.11s ===================
 * ERROR: media-gfx/img2pdf-0.4.1-r1::gentoo failed (test phase):
 *   pytest failed with python3.8
 * 
 * Call stack:
 *     ebuild.sh, line  127:  Called src_test
 *   environment, line 2962:  Called distutils-r1_src_test
 *   environment, line 1278:  Called _distutils-r1_run_foreach_impl 'python_test'
 *   environment, line  533:  Called python_foreach_impl 'distutils-r1_run_phase' 'python_test'
 *   environment, line 2622:  Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test'
 *   environment, line 2095:  Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'python_test'
 *   environment, line 2093:  Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'python_test'
 *   environment, line  834:  Called distutils-r1_run_phase 'python_test'
 *   environment, line 1217:  Called python_test
 *   environment, line 2918:  Called epytest '-n' 'auto'
 *   environment, line 1611:  Called die
 * The specific snippet of code:
 *       "${@}" || die -n "pytest failed with ${EPYTHON}";
 * 
 * If you need support, post the output of `emerge --info '=media-gfx/img2pdf-0.4.1-r1::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=media-gfx/img2pdf-0.4.1-r1::gentoo'`.
 * The complete build log is located at '/var/log/emerge-log/build/media-gfx/img2pdf-0.4.1-r1:20210822-123227.log'.
 * For convenience, a symlink to the build log is located at '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/temp/environment'.
 * Working directory: '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1'
 * S: '/var/tmp/portage/media-gfx/img2pdf-0.4.1-r1/work/img2pdf-0.4.1'