Running as unit: rb-build-i386_11-33933.service ==================================================================================== Fri Nov 22 14:46:34 UTC 2024 - running /srv/jenkins/bin/reproducible_build.sh (for job reproducible_builder_i386_11) on jenkins, called using "ionos6-i386 ionos2-i386" as arguments. Fri Nov 22 14:46:34 UTC 2024 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-rfYorqON" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Fri Nov 22 14:46:34 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos6-i386.debian.net is marked as down. Fri Nov 22 14:46:35 UTC 2024 - checking via ssh if ionos6-i386.debian.net is up. removed '/tmp/read-only-fs-test-BcBosS' Fri Nov 22 14:46:35 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos2-i386.debian.net is marked as down. Fri Nov 22 14:46:35 UTC 2024 - checking via ssh if ionos2-i386.debian.net is up. removed '/tmp/read-only-fs-test-hwcl78' ok, let's check if pypdf2 is building anywhere yet… ok, pypdf2 is not building anywhere… UPDATE 1 ============================================================================= Initialising reproducibly build of pypdf2 in unstable on i386 on jenkins now. 1st build will be done on ionos6-i386.debian.net. 2nd build will be done on ionos2-i386.debian.net. ============================================================================= Fri Nov 22 14:46:47 UTC 2024 I: starting to build pypdf2/unstable/i386 on jenkins on '2024-11-22 14:46' Fri Nov 22 14:46:47 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/i386_11/33933/console.log 1732286807 i386 unstable pypdf2 Fri Nov 22 14:46:47 UTC 2024 I: Downloading source for unstable/pypdf2=2.12.1-4 --2024-11-22 14:46:47-- http://deb.debian.org/debian/pool/main/p/pypdf2/pypdf2_2.12.1-4.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2419 (2.4K) [text/prs.lines.tag] Saving to: ‘pypdf2_2.12.1-4.dsc’ 0K .. 100% 256M=0s 2024-11-22 14:46:47 (256 MB/s) - ‘pypdf2_2.12.1-4.dsc’ saved [2419/2419] --2024-11-22 14:46:47-- http://deb.debian.org/debian/pool/main/p/pypdf2/pypdf2_2.12.1-4.dsc Connecting to 46.16.76.132:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2419 (2.4K) [text/prs.lines.tag] Saving to: ‘pypdf2_2.12.1-4.dsc’ 0K .. 100% 256M=0s 2024-11-22 14:46:47 (256 MB/s) - ‘pypdf2_2.12.1-4.dsc’ saved [2419/2419] Fri Nov 22 14:46:47 UTC 2024 I: pypdf2_2.12.1-4.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 3.0 (quilt) Source: pypdf2 Binary: python3-pypdf2 Architecture: all Version: 2.12.1-4 Maintainer: Debian Python Team Uploaders: Scott Kitterman , Daniel Kahn Gillmor , Homepage: https://pypdf2.readthedocs.io/en/latest/ Standards-Version: 4.6.2 Vcs-Browser: https://salsa.debian.org/python-team/packages/pypdf Vcs-Git: https://salsa.debian.org/python-team/packages/pypdf.git -b debian/pypdf2/unstable Build-Depends: debhelper-compat (= 13), dh-python, flit, pybuild-plugin-pyproject, python3-all, python3-pil , python3-pytest , python3-pytest-cov Package-List: python3-pypdf2 deb python optional arch=all Checksums-Sha1: 04c45da29f76fab7353d05900678524e519a73ed 9021185 pypdf2_2.12.1.orig-sample-files.tar.gz 9f8870f5d40fc30cb115f6cae0756cf883b48339 6581727 pypdf2_2.12.1.orig.tar.gz c7add2ef83c092583f9232dd68f828ecad2258cd 9620 pypdf2_2.12.1-4.debian.tar.xz Checksums-Sha256: 5892980b49fd7eeeae5ef04913f8c89310530cc3e781bf99ac082f29cee81b5f 9021185 pypdf2_2.12.1.orig-sample-files.tar.gz 40743764b367c43357546fd10d39f288a3a9c520e043f75eea7a1b78ccc38d3f 6581727 pypdf2_2.12.1.orig.tar.gz 65e6a9efc5ce2bc3ff5f1d309f70981b3c1d1f11564307d0ca4aefe759a4db18 9620 pypdf2_2.12.1-4.debian.tar.xz Files: 40a55002561295e575b015e55b94da5e 9021185 pypdf2_2.12.1.orig-sample-files.tar.gz d55839e9275df7a615e030eb62246b02 6581727 pypdf2_2.12.1.orig.tar.gz f59a69a68e5c013beb3e349d20e5d25f 9620 pypdf2_2.12.1-4.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE53Kb/76FQA/u7iOxeNfe+5rVmvEFAmWq9dMACgkQeNfe+5rV mvG1+A/8CoW222Qa6vjXfz2QdEIqC0MdC1VSxRRWEZGDPVFSfdiwJAIBTBMuEFvv TeYLdoT8qlz6RJhiVN4NehyaMaykcXikGfFj8TjcMkf65S5aW1XFI0TiLHBFTjTj AJBBRZ237j104SxQOsHoU9sqavRVyi6/Pe0npRkpcmbrX6hpDFrOCFCncRtPtfdF 3gtTPT85F1Z7Imw6NTq0xYen++SjeDByP0eqTON0MZyNKW9kV/j4wtAcW+1rPqsv qZlk/8vE0axXNPTGt0FAqxLd1xfdFawFQjF2rpey2MkAMXI2HhzMNFzWhintAyQC oCnqF8mBZr3Zw03b0F6A2URDXjrPzCyB5T9Alfp7nSXJnaZt/5qCfhRM9lAuy7JX MK1MF2eX5cEHNWv28dLm90RInk2yViZLlol8LwGtYJSoEpxumdHublCPXXa9J6lU 9zraySLzIGMKPnjtsMje3jPzT1f/eqi4hfyuf3eGsaUZOsB76Qo2Cni6FMBCfmca VvRJZ+s6NEXzO8LUCWqBgqG4zZ38A3LNmkqMnOYhjbRD72hsbY3pPUVQF/bFmRTP 7fNe6chmYzY6+g5pagWKfw02J/4nXLET6sh0oEZHwu95TaTC+GcI8h4Op0ptgqRK XEVdAcuBoo2Qo3wOEBnTADC6WkVQmtssZVi47NmF/ma1KFDAvIg= =ssE1 -----END PGP SIGNATURE----- Fri Nov 22 14:46:47 UTC 2024 I: Checking whether the package is not for us Fri Nov 22 14:46:47 UTC 2024 I: Starting 1st build on remote node ionos6-i386.debian.net. Fri Nov 22 14:46:47 UTC 2024 I: Preparing to do remote build '1' on ionos6-i386.debian.net. Fri Nov 22 14:46:47 UTC 2024 - checking /var/lib/jenkins/offline_nodes if ionos6-i386.debian.net is marked as down. Fri Nov 22 14:46:47 UTC 2024 - checking via ssh if ionos6-i386.debian.net is up. removed '/tmp/read-only-fs-test-b1S9qJ' ==================================================================================== Thu Dec 25 21:09:48 UTC 2025 - running /srv/jenkins/bin/reproducible_build.sh (for job /srv/jenkins/bin/reproducible_build.sh) on ionos6-i386, called using "1 pypdf2 unstable /srv/reproducible-results/rbuild-debian/r-b-build.jeIjHnpr 2.12.1-4" as arguments. Thu Dec 25 21:09:48 UTC 2025 - actually running "reproducible_build.sh" (md5sum 68e686e434c9ab7bc3ec047d8b309cbc) as "/tmp/jenkins-script-PVGMgjRs" $ git clone https://salsa.debian.org/qa/jenkins.debian.net.git ; more CONTRIBUTING Thu Dec 25 21:09:48 UTC 2025 I: Downloading source for unstable/pypdf2=2.12.1-4 Reading package lists... NOTICE: 'pypdf2' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/python-team/packages/pypdf.git -b debian/pypdf2/unstable Please use: git clone https://salsa.debian.org/python-team/packages/pypdf.git -b debian/pypdf2/unstable to retrieve the latest (possibly unreleased) updates to the package. Need to get 15.6 MB of source archives. Get:1 http://deb.debian.org/debian unstable/main pypdf2 2.12.1-4 (dsc) [2419 B] Get:2 http://deb.debian.org/debian unstable/main pypdf2 2.12.1-4 (tar) [9021 kB] Get:3 http://deb.debian.org/debian unstable/main pypdf2 2.12.1-4 (tar) [6582 kB] Get:4 http://deb.debian.org/debian unstable/main pypdf2 2.12.1-4 (diff) [9620 B] Fetched 15.6 MB in 0s (73.3 MB/s) Download complete and in download only mode Reading package lists... NOTICE: 'pypdf2' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/python-team/packages/pypdf.git -b debian/pypdf2/unstable Please use: git clone https://salsa.debian.org/python-team/packages/pypdf.git -b debian/pypdf2/unstable to retrieve the latest (possibly unreleased) updates to the package. Need to get 15.6 MB of source archives. Get:1 http://deb.debian.org/debian unstable/main pypdf2 2.12.1-4 (dsc) [2419 B] Get:2 http://deb.debian.org/debian unstable/main pypdf2 2.12.1-4 (tar) [9021 kB] Get:3 http://deb.debian.org/debian unstable/main pypdf2 2.12.1-4 (tar) [6582 kB] Get:4 http://deb.debian.org/debian unstable/main pypdf2 2.12.1-4 (diff) [9620 B] Fetched 15.6 MB in 0s (73.3 MB/s) Download complete and in download only mode ============================================================================= Building pypdf2 in unstable on i386 on ionos6-i386 now. Date: Thu Dec 25 22:09:48 CET 2025 Date UTC: Thu Dec 25 21:09:48 UTC 2025 ============================================================================= W: /root/.pbuilderrc does not exist I: Logging to b1/build.log I: pbuilder: network access will be disabled during build I: Current time: Thu Dec 25 09:09:49 -12 2025 I: pbuilder-time-stamp: 1766696989 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: using eatmydata during job I: Copying source file I: copying [pypdf2_2.12.1-4.dsc] I: copying [./pypdf2_2.12.1.orig-sample-files.tar.gz] I: copying [./pypdf2_2.12.1.orig.tar.gz] I: copying [./pypdf2_2.12.1-4.debian.tar.xz] I: Extracting source gpgv: Signature made Fri Jan 19 22:21:07 2024 gpgv: using RSA key E7729BFFBE85400FEEEE23B178D7DEFB9AD59AF1 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./pypdf2_2.12.1-4.dsc: no acceptable signature found dpkg-source: info: extracting pypdf2 in pypdf2-2.12.1 dpkg-source: info: unpacking pypdf2_2.12.1.orig.tar.gz dpkg-source: info: unpacking pypdf2_2.12.1.orig-sample-files.tar.gz dpkg-source: info: unpacking pypdf2_2.12.1-4.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying disable-network-tests.patch dpkg-source: info: applying 0003-Prevent-infinite-loop-when-no-character-follows-afte.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/122002/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='i386' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=22 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='i386' IFS=' ' INVOCATION_ID='40ad611ae9104a9e8aeaf660ac68f9ef' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' LD_LIBRARY_PATH='/usr/lib/libeatmydata' LD_PRELOAD='libeatmydata.so' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='122002' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.jeIjHnpr/pbuilderrc_n9UN --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.jeIjHnpr/b1 --logfile b1/build.log pypdf2_2.12.1-4.dsc' SUDO_GID='112' SUDO_UID='107' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://213.165.73.152:3128' I: uname -a Linux ionos6-i386 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Aug 4 2024 /bin -> usr/bin I: user script /srv/workspace/pbuilder/122002/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: i386 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), dh-python, flit, pybuild-plugin-pyproject, python3-all, python3-pil, python3-pytest, python3-pytest-cov dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19952 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-python; however: Package dh-python is not installed. pbuilder-satisfydepends-dummy depends on flit; however: Package flit is not installed. pbuilder-satisfydepends-dummy depends on pybuild-plugin-pyproject; however: Package pybuild-plugin-pyproject is not installed. pbuilder-satisfydepends-dummy depends on python3-all; however: Package python3-all is not installed. pbuilder-satisfydepends-dummy depends on python3-pil; however: Package python3-pil is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest-cov; however: Package python3-pytest-cov is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} debhelper{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} docutils-common{a} dwz{a} file{a} flit{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libbrotli1{a} libcom-err2{a} libdebhelper-perl{a} libdeflate0{a} libelf1t64{a} libexpat1{a} libfile-stripnondeterminism-perl{a} libfreetype6{a} libfribidi0{a} libglib2.0-0t64{a} libgraphite2-3{a} libgssapi-krb5-2{a} libharfbuzz0b{a} libicu72{a} libimagequant0{a} libjbig0{a} libjpeg62-turbo{a} libjs-jquery{a} libjs-jquery-hotkeys{a} libjs-jquery-isonscreen{a} libjs-jquery-metadata{a} libjs-jquery-tablesorter{a} libjs-jquery-throttle-debounce{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} liblcms2-2{a} liblerc4{a} libmagic-mgc{a} libmagic1t64{a} libnsl2{a} libopenjp2-7{a} libpipeline1{a} libpng16-16t64{a} libpython3-stdlib{a} libpython3.12-minimal{a} libpython3.12-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libraqm0{a} libreadline8t64{a} libsharpyuv0{a} libtiff6{a} libtirpc-common{a} libtirpc3t64{a} libtool{a} libuchardet0{a} libwebp7{a} libwebpdemux2{a} libwebpmux3{a} libxau6{a} libxcb1{a} libxdmcp6{a} libxml2{a} m4{a} man-db{a} media-types{a} netbase{a} openssl{a} po-debconf{a} pybuild-plugin-pyproject{a} python3{a} python3-all{a} python3-autocommand{a} python3-build{a} python3-certifi{a} python3-chardet{a} python3-charset-normalizer{a} python3-coverage{a} python3-docutils{a} python3-idna{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-minimal{a} python3-more-itertools{a} python3-packaging{a} python3-pil{a} python3-pkg-resources{a} python3-pluggy{a} python3-pyproject-hooks{a} python3-pytest{a} python3-pytest-cov{a} python3-requests{a} python3-roman{a} python3-setuptools{a} python3-toml{a} python3-tomli-w{a} python3-typeguard{a} python3-typing-extensions{a} python3-urllib3{a} python3-wheel{a} python3-zipp{a} python3.12{a} python3.12-minimal{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} sgml-base{a} tzdata{a} xml-core{a} The following packages are RECOMMENDED but will NOT be installed: curl javascript-common krb5-locales libarchive-cpio-perl libglib2.0-data libltdl-dev libmail-sendmail-perl libpaper-utils lynx python3-olefile python3-pygments shared-mime-info wget xdg-user-dirs 0 packages upgraded, 125 newly installed, 0 to remove and 0 not upgraded. Need to get 44.1 MB of archives. After unpacking 163 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main i386 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 2 http://deb.debian.org/debian unstable/main i386 libjs-jquery-hotkeys all 0~20130707+git2d51e3a9+dfsg-2.1 [11.5 kB] Get: 3 http://deb.debian.org/debian unstable/main i386 libpython3.12-minimal i386 3.12.7-3 [814 kB] Get: 4 http://deb.debian.org/debian unstable/main i386 libexpat1 i386 2.6.4-1 [107 kB] Get: 5 http://deb.debian.org/debian unstable/main i386 python3.12-minimal i386 3.12.7-3 [2236 kB] Get: 6 http://deb.debian.org/debian unstable/main i386 python3-minimal i386 3.12.7-1 [26.8 kB] Get: 7 http://deb.debian.org/debian unstable/main i386 media-types all 10.1.0 [26.9 kB] Get: 8 http://deb.debian.org/debian unstable/main i386 netbase all 6.4 [12.8 kB] Get: 9 http://deb.debian.org/debian unstable/main i386 tzdata all 2024b-3 [255 kB] Get: 10 http://deb.debian.org/debian unstable/main i386 libkrb5support0 i386 1.21.3-3 [34.9 kB] Get: 11 http://deb.debian.org/debian unstable/main i386 libcom-err2 i386 1.47.1-1+b1 [23.4 kB] Get: 12 http://deb.debian.org/debian unstable/main i386 libk5crypto3 i386 1.21.3-3 [83.6 kB] Get: 13 http://deb.debian.org/debian unstable/main i386 libkeyutils1 i386 1.6.3-4 [9600 B] Get: 14 http://deb.debian.org/debian unstable/main i386 libkrb5-3 i386 1.21.3-3 [350 kB] Get: 15 http://deb.debian.org/debian unstable/main i386 libgssapi-krb5-2 i386 1.21.3-3 [146 kB] Get: 16 http://deb.debian.org/debian unstable/main i386 libtirpc-common all 1.3.4+ds-1.3 [10.9 kB] Get: 17 http://deb.debian.org/debian unstable/main i386 libtirpc3t64 i386 1.3.4+ds-1.3+b1 [90.5 kB] Get: 18 http://deb.debian.org/debian unstable/main i386 libnsl2 i386 1.3.0-3+b3 [42.7 kB] Get: 19 http://deb.debian.org/debian unstable/main i386 readline-common all 8.2-5 [69.3 kB] Get: 20 http://deb.debian.org/debian unstable/main i386 libreadline8t64 i386 8.2-5 [173 kB] Get: 21 http://deb.debian.org/debian unstable/main i386 libpython3.12-stdlib i386 3.12.7-3 [1964 kB] Get: 22 http://deb.debian.org/debian unstable/main i386 python3.12 i386 3.12.7-3 [671 kB] Get: 23 http://deb.debian.org/debian unstable/main i386 libpython3-stdlib i386 3.12.7-1 [9712 B] Get: 24 http://deb.debian.org/debian unstable/main i386 python3 i386 3.12.7-1 [27.8 kB] Get: 25 http://deb.debian.org/debian unstable/main i386 libpython3.13-minimal i386 3.13.0-2 [856 kB] Get: 26 http://deb.debian.org/debian unstable/main i386 python3.13-minimal i386 3.13.0-2 [2112 kB] Get: 27 http://deb.debian.org/debian unstable/main i386 sgml-base all 1.31 [15.4 kB] Get: 28 http://deb.debian.org/debian unstable/main i386 sensible-utils all 0.0.24 [24.8 kB] Get: 29 http://deb.debian.org/debian unstable/main i386 openssl i386 3.3.2-2 [1387 kB] Get: 30 http://deb.debian.org/debian unstable/main i386 ca-certificates all 20240203 [158 kB] Get: 31 http://deb.debian.org/debian unstable/main i386 libmagic-mgc i386 1:5.45-3+b1 [314 kB] Get: 32 http://deb.debian.org/debian unstable/main i386 libmagic1t64 i386 1:5.45-3+b1 [115 kB] Get: 33 http://deb.debian.org/debian unstable/main i386 file i386 1:5.45-3+b1 [43.2 kB] Get: 34 http://deb.debian.org/debian unstable/main i386 gettext-base i386 0.22.5-2 [201 kB] Get: 35 http://deb.debian.org/debian unstable/main i386 libuchardet0 i386 0.0.8-1+b2 [69.2 kB] Get: 36 http://deb.debian.org/debian unstable/main i386 groff-base i386 1.23.0-5 [1196 kB] Get: 37 http://deb.debian.org/debian unstable/main i386 bsdextrautils i386 2.40.2-11 [95.6 kB] Get: 38 http://deb.debian.org/debian unstable/main i386 libpipeline1 i386 1.5.8-1 [41.2 kB] Get: 39 http://deb.debian.org/debian unstable/main i386 man-db i386 2.13.0-1 [1428 kB] Get: 40 http://deb.debian.org/debian unstable/main i386 m4 i386 1.4.19-4 [293 kB] Get: 41 http://deb.debian.org/debian unstable/main i386 autoconf all 2.72-3 [493 kB] Get: 42 http://deb.debian.org/debian unstable/main i386 autotools-dev all 20220109.1 [51.6 kB] Get: 43 http://deb.debian.org/debian unstable/main i386 automake all 1:1.16.5-1.3 [823 kB] Get: 44 http://deb.debian.org/debian unstable/main i386 autopoint all 0.22.5-2 [723 kB] Get: 45 http://deb.debian.org/debian unstable/main i386 libdebhelper-perl all 13.20 [89.7 kB] Get: 46 http://deb.debian.org/debian unstable/main i386 libtool all 2.4.7-8 [517 kB] Get: 47 http://deb.debian.org/debian unstable/main i386 dh-autoreconf all 20 [17.1 kB] Get: 48 http://deb.debian.org/debian unstable/main i386 libarchive-zip-perl all 1.68-1 [104 kB] Get: 49 http://deb.debian.org/debian unstable/main i386 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 50 http://deb.debian.org/debian unstable/main i386 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 51 http://deb.debian.org/debian unstable/main i386 libelf1t64 i386 0.192-4 [195 kB] Get: 52 http://deb.debian.org/debian unstable/main i386 dwz i386 0.15-1+b1 [116 kB] Get: 53 http://deb.debian.org/debian unstable/main i386 libicu72 i386 72.1-5+b1 [9583 kB] Get: 54 http://deb.debian.org/debian unstable/main i386 libxml2 i386 2.12.7+dfsg+really2.9.14-0.2+b1 [734 kB] Get: 55 http://deb.debian.org/debian unstable/main i386 gettext i386 0.22.5-2 [1631 kB] Get: 56 http://deb.debian.org/debian unstable/main i386 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 57 http://deb.debian.org/debian unstable/main i386 po-debconf all 1.0.21+nmu1 [248 kB] Get: 58 http://deb.debian.org/debian unstable/main i386 debhelper all 13.20 [915 kB] Get: 59 http://deb.debian.org/debian unstable/main i386 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 60 http://deb.debian.org/debian unstable/main i386 python3-more-itertools all 10.5.0-1 [63.8 kB] Get: 61 http://deb.debian.org/debian unstable/main i386 python3-typing-extensions all 4.12.2-2 [73.0 kB] Get: 62 http://deb.debian.org/debian unstable/main i386 python3-typeguard all 4.4.1-1 [37.0 kB] Get: 63 http://deb.debian.org/debian unstable/main i386 python3-inflect all 7.3.1-2 [32.4 kB] Get: 64 http://deb.debian.org/debian unstable/main i386 python3-jaraco.context all 6.0.0-1 [7984 B] Get: 65 http://deb.debian.org/debian unstable/main i386 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 66 http://deb.debian.org/debian unstable/main i386 python3-pkg-resources all 75.2.0-1 [213 kB] Get: 67 http://deb.debian.org/debian unstable/main i386 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 68 http://deb.debian.org/debian unstable/main i386 python3-zipp all 3.21.0-1 [10.6 kB] Get: 69 http://deb.debian.org/debian unstable/main i386 python3-setuptools all 75.2.0-1 [731 kB] Get: 70 http://deb.debian.org/debian unstable/main i386 dh-python all 6.20241024 [109 kB] Get: 71 http://deb.debian.org/debian unstable/main i386 xml-core all 0.19 [20.1 kB] Get: 72 http://deb.debian.org/debian unstable/main i386 docutils-common all 0.21.2+dfsg-2 [128 kB] Get: 73 http://deb.debian.org/debian unstable/main i386 python3-roman all 4.2-1 [10.4 kB] Get: 74 http://deb.debian.org/debian unstable/main i386 python3-docutils all 0.21.2+dfsg-2 [403 kB] Get: 75 http://deb.debian.org/debian unstable/main i386 python3-certifi all 2024.8.30+dfsg-1 [9576 B] Get: 76 http://deb.debian.org/debian unstable/main i386 python3-charset-normalizer i386 3.4.0-1+b1 [139 kB] Get: 77 http://deb.debian.org/debian unstable/main i386 python3-idna all 3.8-2 [41.6 kB] Get: 78 http://deb.debian.org/debian unstable/main i386 python3-urllib3 all 2.0.7-2 [111 kB] Get: 79 http://deb.debian.org/debian unstable/main i386 python3-chardet all 5.2.0+dfsg-1 [107 kB] Get: 80 http://deb.debian.org/debian unstable/main i386 python3-requests all 2.32.3+dfsg-1 [71.9 kB] Get: 81 http://deb.debian.org/debian unstable/main i386 python3-tomli-w all 1.0.0-2 [8012 B] Get: 82 http://deb.debian.org/debian unstable/main i386 flit all 3.9.0-2 [93.4 kB] Get: 83 http://deb.debian.org/debian unstable/main i386 libbrotli1 i386 1.1.0-2+b6 [308 kB] Get: 84 http://deb.debian.org/debian unstable/main i386 libdeflate0 i386 1.22-1 [48.1 kB] Get: 85 http://deb.debian.org/debian unstable/main i386 libpng16-16t64 i386 1.6.44-2 [288 kB] Get: 86 http://deb.debian.org/debian unstable/main i386 libfreetype6 i386 2.13.3+dfsg-1 [464 kB] Get: 87 http://deb.debian.org/debian unstable/main i386 libfribidi0 i386 1.0.15-1 [72.4 kB] Get: 88 http://deb.debian.org/debian unstable/main i386 libglib2.0-0t64 i386 2.82.2-3 [1571 kB] Get: 89 http://deb.debian.org/debian unstable/main i386 libgraphite2-3 i386 1.3.14-2+b1 [77.8 kB] Get: 90 http://deb.debian.org/debian unstable/main i386 libharfbuzz0b i386 10.0.1-1 [503 kB] Get: 91 http://deb.debian.org/debian unstable/main i386 libimagequant0 i386 2.18.0-1+b2 [36.0 kB] Get: 92 http://deb.debian.org/debian unstable/main i386 libjbig0 i386 2.1-6.1+b2 [32.2 kB] Get: 93 http://deb.debian.org/debian unstable/main i386 libjpeg62-turbo i386 1:2.1.5-3+b1 [171 kB] Get: 94 http://deb.debian.org/debian unstable/main i386 libjs-jquery-isonscreen all 1.2.0-1.1 [3196 B] Get: 95 http://deb.debian.org/debian unstable/main i386 libjs-jquery-metadata all 12-4 [6532 B] Get: 96 http://deb.debian.org/debian unstable/main i386 libjs-jquery-tablesorter all 1:2.31.3+dfsg1-4 [184 kB] Get: 97 http://deb.debian.org/debian unstable/main i386 libjs-jquery-throttle-debounce all 1.1+dfsg.1-2 [12.2 kB] Get: 98 http://deb.debian.org/debian unstable/main i386 liblcms2-2 i386 2.16-2 [171 kB] Get: 99 http://deb.debian.org/debian unstable/main i386 liblerc4 i386 4.0.0+ds-5 [191 kB] Get: 100 http://deb.debian.org/debian unstable/main i386 libopenjp2-7 i386 2.5.0-2+b4 [210 kB] Get: 101 http://deb.debian.org/debian unstable/main i386 libpython3.13-stdlib i386 3.13.0-2 [2002 kB] Get: 102 http://deb.debian.org/debian unstable/main i386 libraqm0 i386 0.10.1-1+b2 [14.8 kB] Get: 103 http://deb.debian.org/debian unstable/main i386 libsharpyuv0 i386 1.4.0-0.1+b1 [113 kB] Get: 104 http://deb.debian.org/debian unstable/main i386 libwebp7 i386 1.4.0-0.1+b1 [322 kB] Get: 105 http://deb.debian.org/debian unstable/main i386 libtiff6 i386 4.5.1+git230720-5 [339 kB] Get: 106 http://deb.debian.org/debian unstable/main i386 libwebpdemux2 i386 1.4.0-0.1+b1 [111 kB] Get: 107 http://deb.debian.org/debian unstable/main i386 libwebpmux3 i386 1.4.0-0.1+b1 [125 kB] Get: 108 http://deb.debian.org/debian unstable/main i386 libxau6 i386 1:1.0.11-1 [20.7 kB] Get: 109 http://deb.debian.org/debian unstable/main i386 libxdmcp6 i386 1:1.1.5-1 [28.2 kB] Get: 110 http://deb.debian.org/debian unstable/main i386 libxcb1 i386 1.17.0-2+b1 [148 kB] Get: 111 http://deb.debian.org/debian unstable/main i386 python3-packaging all 24.2-1 [55.3 kB] Get: 112 http://deb.debian.org/debian unstable/main i386 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 113 http://deb.debian.org/debian unstable/main i386 python3-toml all 0.10.2-1 [16.2 kB] Get: 114 http://deb.debian.org/debian unstable/main i386 python3-wheel all 0.45.0-1 [56.7 kB] Get: 115 http://deb.debian.org/debian unstable/main i386 python3-build all 1.2.2-1 [36.0 kB] Get: 116 http://deb.debian.org/debian unstable/main i386 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 117 http://deb.debian.org/debian unstable/main i386 pybuild-plugin-pyproject all 6.20241024 [11.4 kB] Get: 118 http://deb.debian.org/debian unstable/main i386 python3.13 i386 3.13.0-2 [730 kB] Get: 119 http://deb.debian.org/debian unstable/main i386 python3-all i386 3.12.7-1 [1052 B] Get: 120 http://deb.debian.org/debian unstable/main i386 python3-coverage i386 7.6.0+dfsg1-2+b1 [177 kB] Get: 121 http://deb.debian.org/debian unstable/main i386 python3-iniconfig all 1.1.1-2 [6396 B] Get: 122 http://deb.debian.org/debian unstable/main i386 python3-pil i386 10.4.0-1+b1 [513 kB] Get: 123 http://deb.debian.org/debian unstable/main i386 python3-pluggy all 1.5.0-1 [26.9 kB] Get: 124 http://deb.debian.org/debian unstable/main i386 python3-pytest all 8.3.3-1 [249 kB] Get: 125 http://deb.debian.org/debian unstable/main i386 python3-pytest-cov all 5.0.0-1 [26.8 kB] Fetched 44.1 MB in 1s (54.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libjs-jquery. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19952 files and directories currently installed.) Preparing to unpack .../libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package libjs-jquery-hotkeys. Preparing to unpack .../libjs-jquery-hotkeys_0~20130707+git2d51e3a9+dfsg-2.1_all.deb ... Unpacking libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... Selecting previously unselected package libpython3.12-minimal:i386. Preparing to unpack .../libpython3.12-minimal_3.12.7-3_i386.deb ... Unpacking libpython3.12-minimal:i386 (3.12.7-3) ... Selecting previously unselected package libexpat1:i386. Preparing to unpack .../libexpat1_2.6.4-1_i386.deb ... Unpacking libexpat1:i386 (2.6.4-1) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../python3.12-minimal_3.12.7-3_i386.deb ... Unpacking python3.12-minimal (3.12.7-3) ... Setting up libpython3.12-minimal:i386 (3.12.7-3) ... Setting up libexpat1:i386 (2.6.4-1) ... Setting up python3.12-minimal (3.12.7-3) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20298 files and directories currently installed.) Preparing to unpack .../00-python3-minimal_3.12.7-1_i386.deb ... Unpacking python3-minimal (3.12.7-1) ... Selecting previously unselected package media-types. Preparing to unpack .../01-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../02-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../03-tzdata_2024b-3_all.deb ... Unpacking tzdata (2024b-3) ... Selecting previously unselected package libkrb5support0:i386. Preparing to unpack .../04-libkrb5support0_1.21.3-3_i386.deb ... Unpacking libkrb5support0:i386 (1.21.3-3) ... Selecting previously unselected package libcom-err2:i386. Preparing to unpack .../05-libcom-err2_1.47.1-1+b1_i386.deb ... Unpacking libcom-err2:i386 (1.47.1-1+b1) ... Selecting previously unselected package libk5crypto3:i386. Preparing to unpack .../06-libk5crypto3_1.21.3-3_i386.deb ... Unpacking libk5crypto3:i386 (1.21.3-3) ... Selecting previously unselected package libkeyutils1:i386. Preparing to unpack .../07-libkeyutils1_1.6.3-4_i386.deb ... Unpacking libkeyutils1:i386 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:i386. Preparing to unpack .../08-libkrb5-3_1.21.3-3_i386.deb ... Unpacking libkrb5-3:i386 (1.21.3-3) ... Selecting previously unselected package libgssapi-krb5-2:i386. Preparing to unpack .../09-libgssapi-krb5-2_1.21.3-3_i386.deb ... Unpacking libgssapi-krb5-2:i386 (1.21.3-3) ... Selecting previously unselected package libtirpc-common. Preparing to unpack .../10-libtirpc-common_1.3.4+ds-1.3_all.deb ... Unpacking libtirpc-common (1.3.4+ds-1.3) ... Selecting previously unselected package libtirpc3t64:i386. Preparing to unpack .../11-libtirpc3t64_1.3.4+ds-1.3+b1_i386.deb ... Adding 'diversion of /lib/i386-linux-gnu/libtirpc.so.3 to /lib/i386-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' Adding 'diversion of /lib/i386-linux-gnu/libtirpc.so.3.0.0 to /lib/i386-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' Unpacking libtirpc3t64:i386 (1.3.4+ds-1.3+b1) ... Selecting previously unselected package libnsl2:i386. Preparing to unpack .../12-libnsl2_1.3.0-3+b3_i386.deb ... Unpacking libnsl2:i386 (1.3.0-3+b3) ... Selecting previously unselected package readline-common. Preparing to unpack .../13-readline-common_8.2-5_all.deb ... Unpacking readline-common (8.2-5) ... Selecting previously unselected package libreadline8t64:i386. Preparing to unpack .../14-libreadline8t64_8.2-5_i386.deb ... Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8 to /lib/i386-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8.2 to /lib/i386-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8 to /lib/i386-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8.2 to /lib/i386-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:i386 (8.2-5) ... Selecting previously unselected package libpython3.12-stdlib:i386. Preparing to unpack .../15-libpython3.12-stdlib_3.12.7-3_i386.deb ... Unpacking libpython3.12-stdlib:i386 (3.12.7-3) ... Selecting previously unselected package python3.12. Preparing to unpack .../16-python3.12_3.12.7-3_i386.deb ... Unpacking python3.12 (3.12.7-3) ... Selecting previously unselected package libpython3-stdlib:i386. Preparing to unpack .../17-libpython3-stdlib_3.12.7-1_i386.deb ... Unpacking libpython3-stdlib:i386 (3.12.7-1) ... Setting up python3-minimal (3.12.7-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21360 files and directories currently installed.) Preparing to unpack .../000-python3_3.12.7-1_i386.deb ... Unpacking python3 (3.12.7-1) ... Selecting previously unselected package libpython3.13-minimal:i386. Preparing to unpack .../001-libpython3.13-minimal_3.13.0-2_i386.deb ... Unpacking libpython3.13-minimal:i386 (3.13.0-2) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../002-python3.13-minimal_3.13.0-2_i386.deb ... Unpacking python3.13-minimal (3.13.0-2) ... Selecting previously unselected package sgml-base. Preparing to unpack .../003-sgml-base_1.31_all.deb ... Unpacking sgml-base (1.31) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../004-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package openssl. Preparing to unpack .../005-openssl_3.3.2-2_i386.deb ... Unpacking openssl (3.3.2-2) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../006-ca-certificates_20240203_all.deb ... Unpacking ca-certificates (20240203) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../007-libmagic-mgc_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:i386. Preparing to unpack .../008-libmagic1t64_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic1t64:i386 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../009-file_1%3a5.45-3+b1_i386.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../010-gettext-base_0.22.5-2_i386.deb ... Unpacking gettext-base (0.22.5-2) ... Selecting previously unselected package libuchardet0:i386. Preparing to unpack .../011-libuchardet0_0.0.8-1+b2_i386.deb ... Unpacking libuchardet0:i386 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../012-groff-base_1.23.0-5_i386.deb ... Unpacking groff-base (1.23.0-5) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../013-bsdextrautils_2.40.2-11_i386.deb ... Unpacking bsdextrautils (2.40.2-11) ... Selecting previously unselected package libpipeline1:i386. Preparing to unpack .../014-libpipeline1_1.5.8-1_i386.deb ... Unpacking libpipeline1:i386 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../015-man-db_2.13.0-1_i386.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../016-m4_1.4.19-4_i386.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../017-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../018-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../019-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../020-autopoint_0.22.5-2_all.deb ... Unpacking autopoint (0.22.5-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../021-libdebhelper-perl_13.20_all.deb ... Unpacking libdebhelper-perl (13.20) ... Selecting previously unselected package libtool. Preparing to unpack .../022-libtool_2.4.7-8_all.deb ... Unpacking libtool (2.4.7-8) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../023-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../024-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../025-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../026-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:i386. Preparing to unpack .../027-libelf1t64_0.192-4_i386.deb ... Unpacking libelf1t64:i386 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../028-dwz_0.15-1+b1_i386.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:i386. Preparing to unpack .../029-libicu72_72.1-5+b1_i386.deb ... Unpacking libicu72:i386 (72.1-5+b1) ... Selecting previously unselected package libxml2:i386. Preparing to unpack .../030-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_i386.deb ... Unpacking libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../031-gettext_0.22.5-2_i386.deb ... Unpacking gettext (0.22.5-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../032-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../033-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../034-debhelper_13.20_all.deb ... Unpacking debhelper (13.20) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../035-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../036-python3-more-itertools_10.5.0-1_all.deb ... Unpacking python3-more-itertools (10.5.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../037-python3-typing-extensions_4.12.2-2_all.deb ... Unpacking python3-typing-extensions (4.12.2-2) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../038-python3-typeguard_4.4.1-1_all.deb ... Unpacking python3-typeguard (4.4.1-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../039-python3-inflect_7.3.1-2_all.deb ... Unpacking python3-inflect (7.3.1-2) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../040-python3-jaraco.context_6.0.0-1_all.deb ... Unpacking python3-jaraco.context (6.0.0-1) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../041-python3-jaraco.functools_4.1.0-1_all.deb ... Unpacking python3-jaraco.functools (4.1.0-1) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../042-python3-pkg-resources_75.2.0-1_all.deb ... Unpacking python3-pkg-resources (75.2.0-1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../043-python3-jaraco.text_4.0.0-1_all.deb ... Unpacking python3-jaraco.text (4.0.0-1) ... Selecting previously unselected package python3-zipp. Preparing to unpack .../044-python3-zipp_3.21.0-1_all.deb ... Unpacking python3-zipp (3.21.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../045-python3-setuptools_75.2.0-1_all.deb ... Unpacking python3-setuptools (75.2.0-1) ... Selecting previously unselected package dh-python. Preparing to unpack .../046-dh-python_6.20241024_all.deb ... Unpacking dh-python (6.20241024) ... Selecting previously unselected package xml-core. Preparing to unpack .../047-xml-core_0.19_all.deb ... Unpacking xml-core (0.19) ... Selecting previously unselected package docutils-common. Preparing to unpack .../048-docutils-common_0.21.2+dfsg-2_all.deb ... Unpacking docutils-common (0.21.2+dfsg-2) ... Selecting previously unselected package python3-roman. Preparing to unpack .../049-python3-roman_4.2-1_all.deb ... Unpacking python3-roman (4.2-1) ... Selecting previously unselected package python3-docutils. Preparing to unpack .../050-python3-docutils_0.21.2+dfsg-2_all.deb ... Unpacking python3-docutils (0.21.2+dfsg-2) ... Selecting previously unselected package python3-certifi. Preparing to unpack .../051-python3-certifi_2024.8.30+dfsg-1_all.deb ... Unpacking python3-certifi (2024.8.30+dfsg-1) ... Selecting previously unselected package python3-charset-normalizer. Preparing to unpack .../052-python3-charset-normalizer_3.4.0-1+b1_i386.deb ... Unpacking python3-charset-normalizer (3.4.0-1+b1) ... Selecting previously unselected package python3-idna. Preparing to unpack .../053-python3-idna_3.8-2_all.deb ... Unpacking python3-idna (3.8-2) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../054-python3-urllib3_2.0.7-2_all.deb ... Unpacking python3-urllib3 (2.0.7-2) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../055-python3-chardet_5.2.0+dfsg-1_all.deb ... Unpacking python3-chardet (5.2.0+dfsg-1) ... Selecting previously unselected package python3-requests. Preparing to unpack .../056-python3-requests_2.32.3+dfsg-1_all.deb ... Unpacking python3-requests (2.32.3+dfsg-1) ... Selecting previously unselected package python3-tomli-w. Preparing to unpack .../057-python3-tomli-w_1.0.0-2_all.deb ... Unpacking python3-tomli-w (1.0.0-2) ... Selecting previously unselected package flit. Preparing to unpack .../058-flit_3.9.0-2_all.deb ... Unpacking flit (3.9.0-2) ... Selecting previously unselected package libbrotli1:i386. Preparing to unpack .../059-libbrotli1_1.1.0-2+b6_i386.deb ... Unpacking libbrotli1:i386 (1.1.0-2+b6) ... Selecting previously unselected package libdeflate0:i386. Preparing to unpack .../060-libdeflate0_1.22-1_i386.deb ... Unpacking libdeflate0:i386 (1.22-1) ... Selecting previously unselected package libpng16-16t64:i386. Preparing to unpack .../061-libpng16-16t64_1.6.44-2_i386.deb ... Unpacking libpng16-16t64:i386 (1.6.44-2) ... Selecting previously unselected package libfreetype6:i386. Preparing to unpack .../062-libfreetype6_2.13.3+dfsg-1_i386.deb ... Unpacking libfreetype6:i386 (2.13.3+dfsg-1) ... Selecting previously unselected package libfribidi0:i386. Preparing to unpack .../063-libfribidi0_1.0.15-1_i386.deb ... Unpacking libfribidi0:i386 (1.0.15-1) ... Selecting previously unselected package libglib2.0-0t64:i386. Preparing to unpack .../064-libglib2.0-0t64_2.82.2-3_i386.deb ... Unpacking libglib2.0-0t64:i386 (2.82.2-3) ... Selecting previously unselected package libgraphite2-3:i386. Preparing to unpack .../065-libgraphite2-3_1.3.14-2+b1_i386.deb ... Unpacking libgraphite2-3:i386 (1.3.14-2+b1) ... Selecting previously unselected package libharfbuzz0b:i386. Preparing to unpack .../066-libharfbuzz0b_10.0.1-1_i386.deb ... Unpacking libharfbuzz0b:i386 (10.0.1-1) ... Selecting previously unselected package libimagequant0:i386. Preparing to unpack .../067-libimagequant0_2.18.0-1+b2_i386.deb ... Unpacking libimagequant0:i386 (2.18.0-1+b2) ... Selecting previously unselected package libjbig0:i386. Preparing to unpack .../068-libjbig0_2.1-6.1+b2_i386.deb ... Unpacking libjbig0:i386 (2.1-6.1+b2) ... Selecting previously unselected package libjpeg62-turbo:i386. Preparing to unpack .../069-libjpeg62-turbo_1%3a2.1.5-3+b1_i386.deb ... Unpacking libjpeg62-turbo:i386 (1:2.1.5-3+b1) ... Selecting previously unselected package libjs-jquery-isonscreen. Preparing to unpack .../070-libjs-jquery-isonscreen_1.2.0-1.1_all.deb ... Unpacking libjs-jquery-isonscreen (1.2.0-1.1) ... Selecting previously unselected package libjs-jquery-metadata. Preparing to unpack .../071-libjs-jquery-metadata_12-4_all.deb ... Unpacking libjs-jquery-metadata (12-4) ... Selecting previously unselected package libjs-jquery-tablesorter. Preparing to unpack .../072-libjs-jquery-tablesorter_1%3a2.31.3+dfsg1-4_all.deb ... Unpacking libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... Selecting previously unselected package libjs-jquery-throttle-debounce. Preparing to unpack .../073-libjs-jquery-throttle-debounce_1.1+dfsg.1-2_all.deb ... Unpacking libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... Selecting previously unselected package liblcms2-2:i386. Preparing to unpack .../074-liblcms2-2_2.16-2_i386.deb ... Unpacking liblcms2-2:i386 (2.16-2) ... Selecting previously unselected package liblerc4:i386. Preparing to unpack .../075-liblerc4_4.0.0+ds-5_i386.deb ... Unpacking liblerc4:i386 (4.0.0+ds-5) ... Selecting previously unselected package libopenjp2-7:i386. Preparing to unpack .../076-libopenjp2-7_2.5.0-2+b4_i386.deb ... Unpacking libopenjp2-7:i386 (2.5.0-2+b4) ... Selecting previously unselected package libpython3.13-stdlib:i386. Preparing to unpack .../077-libpython3.13-stdlib_3.13.0-2_i386.deb ... Unpacking libpython3.13-stdlib:i386 (3.13.0-2) ... Selecting previously unselected package libraqm0:i386. Preparing to unpack .../078-libraqm0_0.10.1-1+b2_i386.deb ... Unpacking libraqm0:i386 (0.10.1-1+b2) ... Selecting previously unselected package libsharpyuv0:i386. Preparing to unpack .../079-libsharpyuv0_1.4.0-0.1+b1_i386.deb ... Unpacking libsharpyuv0:i386 (1.4.0-0.1+b1) ... Selecting previously unselected package libwebp7:i386. Preparing to unpack .../080-libwebp7_1.4.0-0.1+b1_i386.deb ... Unpacking libwebp7:i386 (1.4.0-0.1+b1) ... Selecting previously unselected package libtiff6:i386. Preparing to unpack .../081-libtiff6_4.5.1+git230720-5_i386.deb ... Unpacking libtiff6:i386 (4.5.1+git230720-5) ... Selecting previously unselected package libwebpdemux2:i386. Preparing to unpack .../082-libwebpdemux2_1.4.0-0.1+b1_i386.deb ... Unpacking libwebpdemux2:i386 (1.4.0-0.1+b1) ... Selecting previously unselected package libwebpmux3:i386. Preparing to unpack .../083-libwebpmux3_1.4.0-0.1+b1_i386.deb ... Unpacking libwebpmux3:i386 (1.4.0-0.1+b1) ... Selecting previously unselected package libxau6:i386. Preparing to unpack .../084-libxau6_1%3a1.0.11-1_i386.deb ... Unpacking libxau6:i386 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp6:i386. Preparing to unpack .../085-libxdmcp6_1%3a1.1.5-1_i386.deb ... Unpacking libxdmcp6:i386 (1:1.1.5-1) ... Selecting previously unselected package libxcb1:i386. Preparing to unpack .../086-libxcb1_1.17.0-2+b1_i386.deb ... Unpacking libxcb1:i386 (1.17.0-2+b1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../087-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../088-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-toml. Preparing to unpack .../089-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../090-python3-wheel_0.45.0-1_all.deb ... Unpacking python3-wheel (0.45.0-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../091-python3-build_1.2.2-1_all.deb ... Unpacking python3-build (1.2.2-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../092-python3-installer_0.7.0+dfsg1-3_all.deb ... Unpacking python3-installer (0.7.0+dfsg1-3) ... Selecting previously unselected package pybuild-plugin-pyproject. Preparing to unpack .../093-pybuild-plugin-pyproject_6.20241024_all.deb ... Unpacking pybuild-plugin-pyproject (6.20241024) ... Selecting previously unselected package python3.13. Preparing to unpack .../094-python3.13_3.13.0-2_i386.deb ... Unpacking python3.13 (3.13.0-2) ... Selecting previously unselected package python3-all. Preparing to unpack .../095-python3-all_3.12.7-1_i386.deb ... Unpacking python3-all (3.12.7-1) ... Selecting previously unselected package python3-coverage. Preparing to unpack .../096-python3-coverage_7.6.0+dfsg1-2+b1_i386.deb ... Unpacking python3-coverage (7.6.0+dfsg1-2+b1) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../097-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-pil:i386. Preparing to unpack .../098-python3-pil_10.4.0-1+b1_i386.deb ... Unpacking python3-pil:i386 (10.4.0-1+b1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../099-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../100-python3-pytest_8.3.3-1_all.deb ... Unpacking python3-pytest (8.3.3-1) ... Selecting previously unselected package python3-pytest-cov. Preparing to unpack .../101-python3-pytest-cov_5.0.0-1_all.deb ... Unpacking python3-pytest-cov (5.0.0-1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:i386 (1.5.8-1) ... Setting up libgraphite2-3:i386 (1.3.14-2+b1) ... Setting up liblcms2-2:i386 (2.16-2) ... Setting up libsharpyuv0:i386 (1.4.0-0.1+b1) ... Setting up libxau6:i386 (1:1.0.11-1) ... Setting up libxdmcp6:i386 (1:1.1.5-1) ... Setting up libkeyutils1:i386 (1.6.3-4) ... Setting up libxcb1:i386 (1.17.0-2+b1) ... Setting up libicu72:i386 (72.1-5+b1) ... Setting up liblerc4:i386 (4.0.0+ds-5) ... Setting up bsdextrautils (2.40.2-11) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libtirpc-common (1.3.4+ds-1.3) ... Setting up libdebhelper-perl (13.20) ... Setting up libbrotli1:i386 (1.1.0-2+b6) ... Setting up libmagic1t64:i386 (1:5.45-3+b1) ... Setting up libdeflate0:i386 (1.22-1) ... Setting up gettext-base (0.22.5-2) ... Setting up m4 (1.4.19-4) ... Setting up libcom-err2:i386 (1.47.1-1+b1) ... Setting up file (1:5.45-3+b1) ... Setting up libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... Setting up libjbig0:i386 (2.1-6.1+b2) ... Setting up libelf1t64:i386 (0.192-4) ... Setting up libkrb5support0:i386 (1.21.3-3) ... Setting up tzdata (2024b-3) ... Current default time zone: 'Etc/UTC' Local time is now: Thu Dec 25 21:10:23 UTC 2025. Universal Time is now: Thu Dec 25 21:10:23 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libpython3.13-minimal:i386 (3.13.0-2) ... Setting up autotools-dev (20220109.1) ... Setting up libglib2.0-0t64:i386 (2.82.2-3) ... No schema files found: doing nothing. Setting up libjpeg62-turbo:i386 (1:2.1.5-3+b1) ... Setting up libfribidi0:i386 (1.0.15-1) ... Setting up libimagequant0:i386 (2.18.0-1+b2) ... Setting up libpng16-16t64:i386 (1.6.44-2) ... Setting up autopoint (0.22.5-2) ... Setting up libk5crypto3:i386 (1.21.3-3) ... Setting up autoconf (2.72-3) ... Setting up libwebp7:i386 (1.4.0-0.1+b1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libtiff6:i386 (4.5.1+git230720-5) ... Setting up libuchardet0:i386 (0.0.8-1+b2) ... Setting up libopenjp2-7:i386 (2.5.0-2+b4) ... Setting up python3.13-minimal (3.13.0-2) ... Setting up netbase (6.4) ... Setting up sgml-base (1.31) ... Setting up libkrb5-3:i386 (1.21.3-3) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... Setting up openssl (3.3.2-2) ... Setting up libwebpmux3:i386 (1.4.0-0.1+b1) ... Setting up readline-common (8.2-5) ... Setting up libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up gettext (0.22.5-2) ... Setting up libtool (2.4.7-8) ... Setting up libwebpdemux2:i386 (1.4.0-0.1+b1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 146 added, 0 removed; done. Setting up libfreetype6:i386 (2.13.3+dfsg-1) ... Setting up libjs-jquery-metadata (12-4) ... Setting up libjs-jquery-isonscreen (1.2.0-1.1) ... Setting up libgssapi-krb5-2:i386 (1.21.3-3) ... Setting up libreadline8t64:i386 (8.2-5) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... Setting up groff-base (1.23.0-5) ... Setting up xml-core (0.19) ... Setting up libharfbuzz0b:i386 (10.0.1-1) ... Setting up libpython3.13-stdlib:i386 (3.13.0-2) ... Setting up libtirpc3t64:i386 (1.3.4+ds-1.3+b1) ... Setting up python3.13 (3.13.0-2) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up libraqm0:i386 (0.10.1-1+b2) ... Setting up libnsl2:i386 (1.3.0-3+b3) ... Setting up libpython3.12-stdlib:i386 (3.12.7-3) ... Setting up python3.12 (3.12.7-3) ... Setting up debhelper (13.20) ... Setting up libpython3-stdlib:i386 (3.12.7-1) ... Setting up python3 (3.12.7-1) ... Setting up python3-zipp (3.21.0-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up python3-wheel (0.45.0-1) ... Setting up python3-pil:i386 (10.4.0-1+b1) ... Setting up python3-roman (4.2-1) ... Setting up python3-packaging (24.2-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up python3-certifi (2024.8.30+dfsg-1) ... Setting up python3-idna (3.8-2) ... Setting up python3-typing-extensions (4.12.2-2) ... Setting up python3-toml (0.10.2-1) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-urllib3 (2.0.7-2) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-build (1.2.2-1) ... Setting up python3-tomli-w (1.0.0-2) ... Setting up python3-more-itertools (10.5.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up python3-jaraco.context (6.0.0-1) ... Setting up python3-charset-normalizer (3.4.0-1+b1) ... Setting up python3-pytest (8.3.3-1) ... Setting up python3-typeguard (4.4.1-1) ... Setting up python3-all (3.12.7-1) ... Setting up python3-coverage (7.6.0+dfsg1-2+b1) ... Setting up python3-pytest-cov (5.0.0-1) ... Setting up python3-inflect (7.3.1-2) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-pkg-resources (75.2.0-1) ... Setting up python3-setuptools (75.2.0-1) ... Setting up python3-chardet (5.2.0+dfsg-1) ... Setting up python3-requests (2.32.3+dfsg-1) ... Setting up dh-python (6.20241024) ... Setting up pybuild-plugin-pyproject (6.20241024) ... Processing triggers for libc-bin (2.40-3) ... Processing triggers for sgml-base (1.31) ... Setting up docutils-common (0.21.2+dfsg-2) ... Processing triggers for sgml-base (1.31) ... Setting up python3-docutils (0.21.2+dfsg-2) ... Setting up flit (3.9.0-2) ... Processing triggers for ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/pypdf2-2.12.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../pypdf2_2.12.1-4_source.changes dpkg-buildpackage: info: source package pypdf2 dpkg-buildpackage: info: source version 2.12.1-4 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Scott Kitterman dpkg-source --before-build . dpkg-buildpackage: info: host architecture i386 debian/rules clean py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions dh clean --with python3 --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild debian/rules override_dh_clean make[1]: Entering directory '/build/reproducible-path/pypdf2-2.12.1' py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions dh_clean rm -rf /build/reproducible-path/pypdf2-2.12.1/dist/ \ /build/reproducible-path/pypdf2-2.12.1/tests/pdf_cache/ make[1]: Leaving directory '/build/reproducible-path/pypdf2-2.12.1' debian/rules binary py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions dh binary --with python3 --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/pypdf2-2.12.1' py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions python3.13 -m build --wheel --no-isolation * Getting build dependencies for wheel... * Building wheel... Successfully built pypdf2-2.12.1-py3-none-any.whl python3.12 -m build --wheel --no-isolation * Getting build dependencies for wheel... * Building wheel... Successfully built pypdf2-2.12.1-py3-none-any.whl dh_auto_build I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/pypdf2-2.12.1/.pybuild/cpython3_3.13_pypdf2 * Building wheel... Successfully built pypdf2-2.12.1-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module I: pybuild plugin_pyproject:129: Building wheel for python3.12 with "build" module I: pybuild base:311: python3.12 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/pypdf2-2.12.1/.pybuild/cpython3_3.12_pypdf2 * Building wheel... Successfully built pypdf2-2.12.1-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module make[1]: Leaving directory '/build/reproducible-path/pypdf2-2.12.1' debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/pypdf2-2.12.1' py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions pytest-3 tests --cov --cov-report term-missing -vv ============================= test session starts ============================== platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3 cachedir: .pytest_cache rootdir: /build/reproducible-path/pypdf2-2.12.1 configfile: pyproject.toml plugins: typeguard-4.4.1, cov-5.0.0 collecting ... collected 592 items tests/test_cmap.py::test_compute_space_width PASSED [ 0%] tests/test_cmap.py::test_parse_to_unicode_process_rg PASSED [ 0%] tests/test_cmap.py::test_parse_encoding_advanced_encoding_not_implemented PASSED [ 0%] tests/test_cmap.py::test_get_font_width_from_default PASSED [ 0%] tests/test_cmap.py::test_multiline_bfrange PASSED [ 0%] tests/test_cmap.py::test_bfchar_on_2_chars PASSED [ 1%] tests/test_cmap.py::test_ascii_charset PASSED [ 1%] tests/test_cmap.py::test_iss1370 PASSED [ 1%] tests/test_cmap.py::test_iss1379 PASSED [ 1%] tests/test_constants.py::test_slash_prefix PASSED [ 1%] tests/test_encryption.py::test_encryption[unencrypted.pdf-False] PASSED [ 1%] tests/test_encryption.py::test_encryption[r2-empty-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r3-empty-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r2-user-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r2-owner-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r3-user-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r4-user-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r4-owner-password.pdf-False] PASSED [ 3%] tests/test_encryption.py::test_encryption[r4-aes-user-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r5-empty-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r5-user-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r5-owner-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r6-empty-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r6-user-password.pdf-True] PASSED [ 4%] tests/test_encryption.py::test_encryption[r6-owner-password.pdf-True] PASSED [ 4%] tests/test_encryption.py::test_both_password[r6-both-passwords.pdf-foo-bar] SKIPPED [ 4%] tests/test_encryption.py::test_get_page_of_encrypted_file_new_algorithm[crazyones-encrypted-256.pdf-password0] SKIPPED [ 4%] tests/test_encryption.py::test_get_page_of_encrypted_file_new_algorithm[crazyones-encrypted-256.pdf-password1] SKIPPED [ 4%] tests/test_encryption.py::test_encryption_merge[names0] SKIPPED (No pycryptodome) [ 4%] tests/test_encryption.py::test_encrypt_decrypt_class[CryptRC4] PASSED [ 5%] tests/test_encryption.py::test_decrypt_not_decrypted_pdf PASSED [ 5%] tests/test_encryption.py::test_generate_values PASSED [ 5%] tests/test_filters.py::test_FlateDecode[1-abcdefghijklmnopqrstuvwxyz] PASSED [ 5%] tests/test_filters.py::test_FlateDecode[1-ABCDEFGHIJKLMNOPQRSTUVWXYZ] PASSED [ 5%] tests/test_filters.py::test_FlateDecode[1-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] PASSED [ 5%] tests/test_filters.py::test_FlateDecode[1-0123456789] PASSED [ 6%] tests/test_filters.py::test_FlateDecode[1-0123456789abcdefABCDEF] PASSED [ 6%] tests/test_filters.py::test_FlateDecode[1-!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~] PASSED [ 6%] tests/test_filters.py::test_FlateDecode[1- \t\n\r\x0b\x0c] PASSED [ 6%] tests/test_filters.py::test_FlateDecode_unsupported_predictor PASSED [ 6%] tests/test_filters.py::test_FlateDecode_decompress_array_params[params0] PASSED [ 6%] tests/test_filters.py::test_FlateDecode_decompress_array_params[params1] PASSED [ 7%] tests/test_filters.py::test_FlateDecode_decompress_array_params[a] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[empty] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[ascii_lowercase] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[ascii_uppercase] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[ascii_letters] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[digits] PASSED [ 8%] tests/test_filters.py::test_ASCIIHexDecode[digits_whitespace] PASSED [ 8%] tests/test_filters.py::test_ASCIIHexDecode[hexdigits] PASSED [ 8%] tests/test_filters.py::test_ASCIIHexDecode[whitespace] PASSED [ 8%] tests/test_filters.py::test_ASCIIHexDecode_no_eod PASSED [ 8%] tests/test_filters.py::test_ASCII85Decode_with_overflow XFAIL [ 8%] tests/test_filters.py::test_ASCII85Decode_five_zero_bytes PASSED [ 9%] tests/test_filters.py::test_CCITParameters PASSED [ 9%] tests/test_filters.py::test_CCIT_get_parameters[None-0] PASSED [ 9%] tests/test_filters.py::test_CCIT_get_parameters[parameters1-1] PASSED [ 9%] tests/test_filters.py::test_CCITTFaxDecode PASSED [ 9%] tests/test_filters.py::test_decompress_zlib_error PASSED [ 9%] tests/test_filters.py::test_lzw_decode_neg1 PASSED [ 10%] tests/test_filters.py::test_issue_399 PASSED [ 10%] tests/test_filters.py::test_image_without_imagemagic PASSED [ 10%] tests/test_generic.py::test_float_object_exception PASSED [ 10%] tests/test_generic.py::test_number_object_exception PASSED [ 10%] tests/test_generic.py::test_number_object_no_exception PASSED [ 10%] tests/test_generic.py::test_create_string_object_exception PASSED [ 11%] tests/test_generic.py::test_boolean_object[true-true-4] PASSED [ 11%] tests/test_generic.py::test_boolean_object[false-false-5] PASSED [ 11%] tests/test_generic.py::test_boolean_object_write PASSED [ 11%] tests/test_generic.py::test_boolean_eq PASSED [ 11%] tests/test_generic.py::test_boolean_object_exception PASSED [ 11%] tests/test_generic.py::test_array_object_exception PASSED [ 12%] tests/test_generic.py::test_null_object_exception PASSED [ 12%] tests/test_generic.py::test_indirect_object_premature[] PASSED [ 12%] tests/test_generic.py::test_indirect_object_premature[False] PASSED [ 12%] tests/test_generic.py::test_indirect_object_premature[foo ] PASSED [ 12%] tests/test_generic.py::test_indirect_object_premature[foo ] PASSED [ 13%] tests/test_generic.py::test_indirect_object_premature[foo bar] PASSED [ 13%] tests/test_generic.py::test_readHexStringFromStream PASSED [ 13%] tests/test_generic.py::test_readHexStringFromStream_exception PASSED [ 13%] tests/test_generic.py::test_readStringFromStream_exception PASSED [ 13%] tests/test_generic.py::test_readStringFromStream_not_in_escapedict_no_digit PASSED [ 13%] tests/test_generic.py::test_readStringFromStream_multichar_eol PASSED [ 14%] tests/test_generic.py::test_readStringFromStream_multichar_eol2 PASSED [ 14%] tests/test_generic.py::test_readStringFromStream_excape_digit PASSED [ 14%] tests/test_generic.py::test_readStringFromStream_excape_digit2 PASSED [ 14%] tests/test_generic.py::test_NameObject PASSED [ 14%] tests/test_generic.py::test_destination_fit_r PASSED [ 14%] tests/test_generic.py::test_destination_fit_v PASSED [ 15%] tests/test_generic.py::test_destination_exception PASSED [ 15%] tests/test_generic.py::test_outline_item_write_to_stream PASSED [ 15%] tests/test_generic.py::test_encode_pdfdocencoding_keyerror PASSED [ 15%] tests/test_generic.py::test_read_object_comment_exception PASSED [ 15%] tests/test_generic.py::test_read_object_empty PASSED [ 15%] tests/test_generic.py::test_read_object_invalid PASSED [ 16%] tests/test_generic.py::test_read_object_comment PASSED [ 16%] tests/test_generic.py::test_ByteStringObject PASSED [ 16%] tests/test_generic.py::test_DictionaryObject_key_is_no_pdfobject PASSED [ 16%] tests/test_generic.py::test_DictionaryObject_xmp_meta PASSED [ 16%] tests/test_generic.py::test_DictionaryObject_value_is_no_pdfobject PASSED [ 16%] tests/test_generic.py::test_DictionaryObject_setdefault_key_is_no_pdfobject PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_setdefault_value_is_no_pdfobject PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_setdefault_value PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_read_from_stream PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_read_from_stream_broken PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_read_from_stream_unexpected_end PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_no_newline PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_no_stream_length[True] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_no_stream_length[False] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[True-6-False] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[True-10-False] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[True-4-True] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[False-6-False] PASSED [ 19%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[False-10-False] PASSED [ 19%] tests/test_generic.py::test_RectangleObject PASSED [ 19%] tests/test_generic.py::test_TextStringObject_exc PASSED [ 19%] tests/test_generic.py::test_TextStringObject_autodetect_utf16 PASSED [ 19%] tests/test_generic.py::test_remove_child_not_in_tree PASSED [ 19%] tests/test_generic.py::test_remove_child_not_in_that_tree PASSED [ 20%] tests/test_generic.py::test_remove_child_not_found_in_tree PASSED [ 20%] tests/test_generic.py::test_remove_child_found_in_tree PASSED [ 20%] tests/test_generic.py::test_remove_child_in_tree PASSED [ 20%] tests/test_generic.py::test_dict_read_from_stream PASSED [ 20%] tests/test_generic.py::test_parse_content_stream_peek_percentage PASSED [ 20%] tests/test_generic.py::test_read_inline_image_no_has_q PASSED [ 21%] tests/test_generic.py::test_read_inline_image_loc_neg_1 PASSED [ 21%] tests/test_generic.py::test_text_string_write_to_stream PASSED [ 21%] tests/test_generic.py::test_name_object_read_from_stream_unicode_error PASSED [ 21%] tests/test_generic.py::test_bool_repr PASSED [ 21%] tests/test_generic.py::test_issue_997 PASSED [ 21%] tests/test_generic.py::test_annotation_builder_free_text PASSED [ 22%] tests/test_generic.py::test_annotation_builder_line PASSED [ 22%] tests/test_generic.py::test_annotation_builder_square PASSED [ 22%] tests/test_generic.py::test_annotation_builder_link PASSED [ 22%] tests/test_generic.py::test_annotation_builder_text PASSED [ 22%] tests/test_generic.py::test_CheckboxRadioButtonAttributes_opt PASSED [ 22%] tests/test_generic.py::test_name_object_invalid_decode PASSED [ 23%] tests/test_generic.py::test_indirect_object_invalid_read PASSED [ 23%] tests/test_generic.py::test_create_string_object_force PASSED [ 23%] tests/test_generic.py::test_float_object_decimal_to_string[0.000000-0] PASSED [ 23%] tests/test_generic.py::test_float_object_decimal_to_string[0.0-0_0] PASSED [ 23%] tests/test_generic.py::test_float_object_decimal_to_string[1.0-1_0] PASSED [ 23%] tests/test_generic.py::test_float_object_decimal_to_string[0.123000-0.123] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[0.000123000-0.000123] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[0.0-0_1] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[0-0] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[1-1] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[1.0-1_1] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[1.01-1.01] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[1.010-1.01] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[0000.0000-0] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[0.10101010-0.1010101] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[50000000000-50000000000] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[99900000000000000123-99900000000000000123] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[99900000000000000123.456000-99900000000000000123.456] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[0.00000000000000000000123-0.00000000000000000000123] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[0.00000000000000000000123000-0.00000000000000000000123] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[50032481330523882508234.00000000000000000000123000-50032481330523882508234.00000000000000000000123] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[928457298572093487502198745102973402987412908743.75249875981374981237498213740000-928457298572093487502198745102973402987412908743.7524987598137498123749821374] PASSED [ 26%] tests/test_javascript.py::test_add_js PASSED [ 27%] tests/test_javascript.py::test_added_js PASSED [ 27%] tests/test_merger.py::test_merger_operations_by_traditional_usage PASSED [ 27%] tests/test_merger.py::test_merger_operations_by_semi_traditional_usage PASSED [ 27%] tests/test_merger.py::test_merger_operation_by_new_usage PASSED [ 27%] tests/test_merger.py::test_merge_page_exception PASSED [ 27%] tests/test_merger.py::test_merge_page_tuple PASSED [ 28%] tests/test_merger.py::test_merge_write_closed_fh PASSED [ 28%] tests/test_merger.py::test_trim_outline_list PASSED [ 28%] tests/test_merger.py::test_zoom PASSED [ 28%] tests/test_merger.py::test_zoom_xyz_no_left PASSED [ 28%] tests/test_merger.py::test_outline_item PASSED [ 28%] tests/test_merger.py::test_trim_outline PASSED [ 29%] tests/test_merger.py::test1 PASSED [ 29%] tests/test_merger.py::test_sweep_recursion1 PASSED [ 29%] tests/test_merger.py::test_sweep_recursion2[https://corpora.tika.apache.org/base/docs/govdocs1/924/924794.pdf-tika-924794.pdf] PASSED [ 29%] tests/test_merger.py::test_sweep_recursion2[https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf-tika-924546.pdf] PASSED [ 29%] tests/test_merger.py::test_sweep_indirect_list_newobj_is_None PASSED [ 29%] tests/test_merger.py::test_iss1145 PASSED [ 30%] tests/test_merger.py::test_deprecate_bookmark_decorator_warning PASSED [ 30%] tests/test_merger.py::test_deprecate_bookmark_decorator_output PASSED [ 30%] tests/test_merger.py::test_iss1344 PASSED [ 30%] tests/test_page.py::test_read[001-trivial/minimal-document.pdf] PASSED [ 30%] tests/test_page.py::test_read[002-trivial-libre-office-writer/002-trivial-libre-office-writer.pdf] PASSED [ 30%] tests/test_page.py::test_read[003-pdflatex-image/pdflatex-image.pdf] PASSED [ 31%] tests/test_page.py::test_read[004-pdflatex-4-pages/pdflatex-4-pages.pdf] PASSED [ 31%] tests/test_page.py::test_read[006-pdflatex-outline/pdflatex-outline.pdf] PASSED [ 31%] tests/test_page.py::test_read[007-imagemagick-images/imagemagick-ASCII85Decode.pdf] PASSED [ 31%] tests/test_page.py::test_read[007-imagemagick-images/imagemagick-images.pdf] PASSED [ 31%] tests/test_page.py::test_read[007-imagemagick-images/imagemagick-CCITTFaxDecode.pdf] PASSED [ 31%] tests/test_page.py::test_read[007-imagemagick-images/imagemagick-lzw.pdf] PASSED [ 32%] tests/test_page.py::test_read[008-reportlab-inline-image/inline-image.pdf] PASSED [ 32%] tests/test_page.py::test_read[009-pdflatex-geotopo/GeoTopo.pdf] PASSED [ 32%] tests/test_page.py::test_read[010-pdflatex-forms/pdflatex-forms.pdf] PASSED [ 32%] tests/test_page.py::test_read[011-google-doc-document/google-doc-document.pdf] PASSED [ 32%] tests/test_page.py::test_read[012-libreoffice-form/libreoffice-form.pdf] PASSED [ 32%] tests/test_page.py::test_read[013-reportlab-overlay/reportlab-overlay.pdf] PASSED [ 33%] tests/test_page.py::test_read[014-outlines/mistitled_outlines_example.pdf] PASSED [ 33%] tests/test_page.py::test_read[015-arabic/habibi.pdf] PASSED [ 33%] tests/test_page.py::test_read[015-arabic/habibi-oneline-cmap.pdf] PASSED [ 33%] tests/test_page.py::test_read[016-libre-office-link/libre-office-link.pdf] PASSED [ 33%] tests/test_page.py::test_read[017-unreadable-meta-data/unreadablemetadata.pdf] PASSED [ 33%] tests/test_page.py::test_read[018-base64-image/base64image.pdf] PASSED [ 34%] tests/test_page.py::test_read[019-grayscale-image/grayscale-image.pdf] PASSED [ 34%] tests/test_page.py::test_page_operations[crazyones.pdf-None] PASSED [ 34%] tests/test_page.py::test_page_operations[attachment.pdf-None] PASSED [ 34%] tests/test_page.py::test_page_operations[libreoffice-writer-password.pdf-openpassword] PASSED [ 34%] tests/test_page.py::test_page_operations[imagemagick-images.pdf-None] PASSED [ 34%] tests/test_page.py::test_page_operations[imagemagick-lzw.pdf-None] PASSED [ 35%] tests/test_page.py::test_page_operations[reportlab-inline-image.pdf-None] PASSED [ 35%] tests/test_page.py::test_page_operations[https://arxiv.org/pdf/2201.00029.pdf-None] PASSED [ 35%] tests/test_page.py::test_transformation_equivalence PASSED [ 35%] tests/test_page.py::test_get_user_unit_property PASSED [ 35%] tests/test_page.py::test_page_transformations PASSED [ 35%] tests/test_page.py::test_compress_content_streams[pdf_path0-None] PASSED [ 36%] tests/test_page.py::test_compress_content_streams[pdf_path1-None] PASSED [ 36%] tests/test_page.py::test_compress_content_streams[pdf_path2-None] PASSED [ 36%] tests/test_page.py::test_compress_content_streams[pdf_path3-openpassword] PASSED [ 36%] tests/test_page.py::test_page_properties PASSED [ 36%] tests/test_page.py::test_page_rotation PASSED [ 36%] tests/test_page.py::test_page_scale PASSED [ 37%] tests/test_page.py::test_add_transformation_on_page_without_contents PASSED [ 37%] tests/test_page.py::test_multi_language PASSED [ 37%] tests/test_page.py::test_extract_text_single_quote_op PASSED [ 37%] tests/test_page.py::test_no_ressources_on_text_extract PASSED [ 37%] tests/test_page.py::test_iss_1142 PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf[https://corpora.tika.apache.org/base/docs/govdocs1/964/964029.pdf-tika-964029.pdf] PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf[https://corpora.tika.apache.org/base/docs/govdocs1/932/932446.pdf-tika-932446.pdf] PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf[https://github.com/py-pdf/PyPDF2/files/9150656/ST.2019.PDF-iss_1134.pdf] PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf[https://github.com/py-pdf/PyPDF2/files/9432350/Work.Flow.From.Check.to.QA.pdf-WFCA.pdf] PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf_impossible_decode_xform PASSED [ 38%] tests/test_page.py::test_extract_text_operator_t_star PASSED [ 39%] tests/test_page.py::test_extract_text_visitor_callbacks PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path0-None-embedded0-unembedded0] PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path1-None-embedded1-unembedded1] PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path2-openpassword-embedded2-unembedded2] PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path3-None-embedded3-unembedded3] PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path4-None-embedded4-unembedded4] PASSED [ 40%] tests/test_page.py::test_get_fonts[pdf_path5-None-embedded5-unembedded5] PASSED [ 40%] tests/test_page.py::test_annotation_getter PASSED [ 40%] tests/test_page.py::test_annotation_setter PASSED [ 40%] tests/test_page.py::test_text_extraction_issue_1091 XFAIL (#1091) [ 40%] tests/test_page.py::test_empyt_password_1088 PASSED [ 40%] tests/test_page.py::test_arab_text_extraction XFAIL (#1088 / #1126) [ 41%] tests/test_page.py::test_read_link_annotation PASSED [ 41%] tests/test_page.py::test_no_resources PASSED [ 41%] tests/test_pagerange.py::test_equality PASSED [ 41%] tests/test_pagerange.py::test_str[page_range0-0:5] PASSED [ 41%] tests/test_pagerange.py::test_str[page_range1-0:5:2] PASSED [ 41%] tests/test_pagerange.py::test_str[-1--1:] PASSED [ 42%] tests/test_pagerange.py::test_str[0-0] PASSED [ 42%] tests/test_pagerange.py::test_repr[page_range0-PageRange('0:5')] PASSED [ 42%] tests/test_pagerange.py::test_repr[page_range1-PageRange('0:5:2')] PASSED [ 42%] tests/test_pagerange.py::test_equality_other_objectc PASSED [ 42%] tests/test_pagerange.py::test_idempotency PASSED [ 42%] tests/test_pagerange.py::test_str_init[42-expected0] PASSED [ 43%] tests/test_pagerange.py::test_str_init[1:2-expected1] PASSED [ 43%] tests/test_pagerange.py::test_str_init_error PASSED [ 43%] tests/test_pagerange.py::test_parse_filename_page_ranges[params0-expected0] PASSED [ 43%] tests/test_pagerange.py::test_parse_filename_page_ranges[params1-expected1] PASSED [ 43%] tests/test_pagerange.py::test_parse_filename_page_ranges_err PASSED [ 43%] tests/test_pagerange.py::test_addition[a0-b0-expected0] PASSED [ 44%] tests/test_pagerange.py::test_addition[a1-b1-expected1] PASSED [ 44%] tests/test_pagerange.py::test_addition[a2-b2-expected2] PASSED [ 44%] tests/test_pagerange.py::test_addition_gap[a0-b0] PASSED [ 44%] tests/test_pagerange.py::test_addition_gap[a1-b1] PASSED [ 44%] tests/test_pagerange.py::test_addition_non_page_range PASSED [ 44%] tests/test_pagerange.py::test_addition_stride PASSED [ 45%] tests/test_papersizes.py::test_din_a0 PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions0] PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions1] PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions2] PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions3] PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions4] PASSED [ 46%] tests/test_papersizes.py::test_din_a_ratio[dimensions5] PASSED [ 46%] tests/test_papersizes.py::test_din_a_ratio[dimensions6] PASSED [ 46%] tests/test_papersizes.py::test_din_a_ratio[dimensions7] PASSED [ 46%] tests/test_papersizes.py::test_din_a_ratio[dimensions8] PASSED [ 46%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a0-dimensions_b0] PASSED [ 46%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a1-dimensions_b1] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a2-dimensions_b2] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a3-dimensions_b3] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a4-dimensions_b4] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a5-dimensions_b5] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a6-dimensions_b6] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a7-dimensions_b7] PASSED [ 48%] tests/test_reader.py::test_get_num_pages[selenium-PyPDF2-issue-177.pdf-1] PASSED [ 48%] tests/test_reader.py::test_get_num_pages[pdflatex-outline.pdf-4] PASSED [ 48%] tests/test_reader.py::test_read_metadata[crazyones] PASSED [ 48%] tests/test_reader.py::test_read_metadata[metadata] PASSED [ 48%] tests/test_reader.py::test_broken_meta_data[pdf_path0] PASSED [ 48%] tests/test_reader.py::test_get_annotations[src0] PASSED [ 49%] tests/test_reader.py::test_get_annotations[src1] PASSED [ 49%] tests/test_reader.py::test_get_attachments[src0-1] PASSED [ 49%] tests/test_reader.py::test_get_attachments[src1-0] PASSED [ 49%] tests/test_reader.py::test_get_outline[src0-9] PASSED [ 49%] tests/test_reader.py::test_get_outline[src1-0] PASSED [ 50%] tests/test_reader.py::test_get_images[pdflatex-outline.pdf-expected_images0] PASSED [ 50%] tests/test_reader.py::test_get_images[crazyones.pdf-expected_images1] PASSED [ 50%] tests/test_reader.py::test_get_images[git.pdf-expected_images2] PASSED [ 50%] tests/test_reader.py::test_get_images[imagemagick-lzw.pdf-expected_images3] XFAIL [ 50%] tests/test_reader.py::test_get_images[imagemagick-ASCII85Decode.pdf-expected_images4] XFAIL [ 50%] tests/test_reader.py::test_get_images[imagemagick-CCITTFaxDecode.pdf-expected_images5] PASSED [ 51%] tests/test_reader.py::test_get_images[src6-expected_images6] PASSED [ 51%] tests/test_reader.py::test_get_images_raw[True-False--1-False-warning_msgs0] PASSED [ 51%] tests/test_reader.py::test_get_images_raw[True-True--1-True-] FAILED [ 51%] tests/test_reader.py::test_get_images_raw[False-False--1-False-warning_msgs2] PASSED [ 51%] tests/test_reader.py::test_get_images_raw[False-True--1-False-warning_msgs3] PASSED [ 51%] tests/test_reader.py::test_get_images_raw[True-False-0-True-] FAILED [ 52%] tests/test_reader.py::test_get_images_raw[True-True-0-True-] FAILED [ 52%] tests/test_reader.py::test_get_images_raw[False-False-0-False-warning_msgs6] PASSED [ 52%] tests/test_reader.py::test_get_images_raw[False-True-0-False-warning_msgs7] PASSED [ 52%] tests/test_reader.py::test_issue297 PASSED [ 52%] tests/test_reader.py::test_get_page_of_encrypted_file[encrypted-file.pdf-test-False0] PASSED [ 52%] tests/test_reader.py::test_get_page_of_encrypted_file[encrypted-file.pdf-test-False1] PASSED [ 53%] tests/test_reader.py::test_get_page_of_encrypted_file[encrypted-file.pdf-qwerty-True0] PASSED [ 53%] tests/test_reader.py::test_get_page_of_encrypted_file[encrypted-file.pdf-qwerty-True1] PASSED [ 53%] tests/test_reader.py::test_get_form[form.pdf-expected0-expected_get_fields0] PASSED [ 53%] tests/test_reader.py::test_get_form[form_acrobatReader.pdf-expected1-expected_get_fields1] PASSED [ 53%] tests/test_reader.py::test_get_form[form_evince.pdf-expected2-expected_get_fields2] PASSED [ 53%] tests/test_reader.py::test_get_form[crazyones.pdf-expected3-None] PASSED [ 54%] tests/test_reader.py::test_get_page_number[form.pdf-0] PASSED [ 54%] tests/test_reader.py::test_get_page_number[pdflatex-outline.pdf-2] PASSED [ 54%] tests/test_reader.py::test_get_page_layout[form.pdf-None] PASSED [ 54%] tests/test_reader.py::test_get_page_layout[AutoCad_Simple.pdf-/SinglePage] PASSED [ 54%] tests/test_reader.py::test_get_page_mode[form.pdf-/UseNone] PASSED [ 54%] tests/test_reader.py::test_get_page_mode[crazyones.pdf-None] PASSED [ 55%] tests/test_reader.py::test_read_empty PASSED [ 55%] tests/test_reader.py::test_read_malformed_header PASSED [ 55%] tests/test_reader.py::test_read_malformed_body PASSED [ 55%] tests/test_reader.py::test_read_prev_0_trailer FAILED [ 55%] tests/test_reader.py::test_read_missing_startxref PASSED [ 55%] tests/test_reader.py::test_read_unknown_zero_pages FAILED [ 56%] tests/test_reader.py::test_read_encrypted_without_decryption PASSED [ 56%] tests/test_reader.py::test_get_destination_page_number PASSED [ 56%] tests/test_reader.py::test_do_not_get_stuck_on_large_files_without_start_xref PASSED [ 56%] tests/test_reader.py::test_decrypt_when_no_id PASSED [ 56%] tests/test_reader.py::test_reader_properties PASSED [ 56%] tests/test_reader.py::test_issue604[True] FAILED [ 57%] tests/test_reader.py::test_issue604[False] PASSED [ 57%] tests/test_reader.py::test_decode_permissions PASSED [ 57%] tests/test_reader.py::test_pages_attribute PASSED [ 57%] tests/test_reader.py::test_convert_to_int PASSED [ 57%] tests/test_reader.py::test_convert_to_int_error PASSED [ 57%] tests/test_reader.py::test_convertToInt_deprecated PASSED [ 58%] tests/test_reader.py::test_iss925 PASSED [ 58%] tests/test_reader.py::test_get_object PASSED [ 58%] tests/test_reader.py::test_extract_text_hello_world PASSED [ 58%] tests/test_reader.py::test_read_path PASSED [ 58%] tests/test_reader.py::test_read_not_binary_mode PASSED [ 58%] tests/test_reader.py::test_read_form_416 SKIPPED (No pycryptodome) [ 59%] tests/test_reader.py::test_extract_text_xref_issue_2 PASSED [ 59%] tests/test_reader.py::test_extract_text_xref_issue_3 PASSED [ 59%] tests/test_reader.py::test_extract_text_pdf15 PASSED [ 59%] tests/test_reader.py::test_extract_text_xref_table_21_bytes_clrf PASSED [ 59%] tests/test_reader.py::test_get_fields PASSED [ 59%] tests/test_reader.py::test_get_fields_read_else_block PASSED [ 60%] tests/test_reader.py::test_get_fields_read_else_block2 PASSED [ 60%] tests/test_reader.py::test_get_fields_read_else_block3 PASSED [ 60%] tests/test_reader.py::test_metadata_is_none PASSED [ 60%] tests/test_reader.py::test_get_fields_read_write_report PASSED [ 60%] tests/test_reader.py::test_xfa[src0] PASSED [ 60%] tests/test_reader.py::test_xfa[src1] PASSED [ 61%] tests/test_reader.py::test_xfa_non_empty PASSED [ 61%] tests/test_reader.py::test_header[src0-%PDF-1.5] PASSED [ 61%] tests/test_reader.py::test_header[src1-%PDF-1.5] PASSED [ 61%] tests/test_reader.py::test_outline_color PASSED [ 61%] tests/test_reader.py::test_outline_font_format PASSED [ 61%] tests/test_reader.py::test_outline_title_issue_1121 PASSED [ 62%] tests/test_reader.py::test_outline_count PASSED [ 62%] tests/test_reader.py::test_outline_missing_title PASSED [ 62%] tests/test_reader.py::test_named_destination PASSED [ 62%] tests/test_reader.py::test_outline_with_missing_named_destination PASSED [ 62%] tests/test_reader.py::test_outline_with_empty_action PASSED [ 63%] tests/test_reader.py::test_outline_with_invalid_destinations PASSED [ 63%] tests/test_reader.py::test_PdfReaderMultipleDefinitions PASSED [ 63%] tests/test_reader.py::test_wrong_password_error PASSED [ 63%] tests/test_reader.py::test_get_page_number_by_indirect PASSED [ 63%] tests/test_reader.py::test_corrupted_xref_table PASSED [ 63%] tests/test_reader.py::test_reader PASSED [ 64%] tests/test_reader.py::test_zeroing_xref PASSED [ 64%] tests/test_reader.py::test_thread PASSED [ 64%] tests/test_reader.py::test_build_outline_item PASSED [ 64%] tests/test_security.py::test_alg32_metadata_encrypt PASSED [ 64%] tests/test_security.py::test_alg32_no_metadata_encrypt PASSED [ 64%] tests/test_utils.py::test_skip_over_whitespace[stream0-False] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream1-False] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream2-True] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream3-True] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream4-True] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream5-True] PASSED [ 65%] tests/test_utils.py::test_read_until_whitespace PASSED [ 66%] tests/test_utils.py::test_skip_over_comment[stream0-] PASSED [ 66%] tests/test_utils.py::test_skip_over_comment[stream1-] PASSED [ 66%] tests/test_utils.py::test_skip_over_comment[stream2- ] PASSED [ 66%] tests/test_utils.py::test_skip_over_comment[stream3-bar] PASSED [ 66%] tests/test_utils.py::test_read_until_regex_premature_ending_raise PASSED [ 66%] tests/test_utils.py::test_read_until_regex_premature_ending_name PASSED [ 67%] tests/test_utils.py::test_matrix_multiply[a0-b0-expected0] PASSED [ 67%] tests/test_utils.py::test_matrix_multiply[a1-b1-expected1] PASSED [ 67%] tests/test_utils.py::test_matrix_multiply[a2-b2-expected2] PASSED [ 67%] tests/test_utils.py::test_mark_location PASSED [ 67%] tests/test_utils.py::test_hex_str PASSED [ 67%] tests/test_utils.py::test_b PASSED [ 68%] tests/test_utils.py::test_deprecate_no_replacement PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[0-0-0-0] PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[1-0-0-1] PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[0-1-0-1] PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[0-0-1-0] PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[1-2-3-1] PASSED [ 69%] tests/test_utils.py::test_paeth_predictor[2-1-3-1] PASSED [ 69%] tests/test_utils.py::test_paeth_predictor[1-3-2-2] PASSED [ 69%] tests/test_utils.py::test_paeth_predictor[3-1-2-2] PASSED [ 69%] tests/test_utils.py::test_paeth_predictor[3-2-1-3] PASSED [ 69%] tests/test_utils.py::test_read_block_backwards_errs[-0-1] PASSED [ 69%] tests/test_utils.py::test_read_block_backwards_errs[a-0-1] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards_errs[abc-0-10] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-1-0--1] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-1-1-a-0] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-2-1-b-1] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-2-2-ab-0] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-3-1-c-2] PASSED [ 71%] tests/test_utils.py::test_read_block_backwards[abc-3-2-bc-1] PASSED [ 71%] tests/test_utils.py::test_read_block_backwards[abc-3-3-abc-0] PASSED [ 71%] tests/test_utils.py::test_read_block_backwards_at_start PASSED [ 71%] tests/test_utils.py::test_read_previous_line[0] PASSED [ 71%] tests/test_utils.py::test_read_previous_line[1] PASSED [ 71%] tests/test_utils.py::test_read_previous_line[2] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[3] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[4] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[5] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[6] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[7] PASSED [ 72%] tests/test_utils.py::test_read_previous_line2 PASSED [ 73%] tests/test_utils.py::test_get_max_pdf_version_header PASSED [ 73%] tests/test_utils.py::test_read_block_backwards_exception PASSED [ 73%] tests/test_utils.py::test_deprecate_bookmark PASSED [ 73%] tests/test_utils.py::test_escapedcode_followed_by_int PASSED [ 73%] tests/test_utils.py::test_human_readable_bytes[123-123 Byte] PASSED [ 73%] tests/test_utils.py::test_human_readable_bytes[1234-1.2 kB] PASSED [ 74%] tests/test_utils.py::test_human_readable_bytes[123456-123.5 kB] PASSED [ 74%] tests/test_utils.py::test_human_readable_bytes[1234567-1.2 MB] PASSED [ 74%] tests/test_utils.py::test_human_readable_bytes[1234567890-1.2 GB] PASSED [ 74%] tests/test_utils.py::test_human_readable_bytes[1234567890000-1234.6 GB] PASSED [ 74%] tests/test_utils.py::test_file PASSED [ 75%] tests/test_workflows.py::test_basic_features PASSED [ 75%] tests/test_workflows.py::test_dropdown_items PASSED [ 75%] tests/test_workflows.py::test_PdfReaderFileLoad PASSED [ 75%] tests/test_workflows.py::test_PdfReaderJpegImage PASSED [ 75%] tests/test_workflows.py::test_decrypt PASSED [ 75%] tests/test_workflows.py::test_text_extraction_encrypted PASSED [ 76%] tests/test_workflows.py::test_rotate[0] PASSED [ 76%] tests/test_workflows.py::test_rotate[90] PASSED [ 76%] tests/test_workflows.py::test_rotate[180] PASSED [ 76%] tests/test_workflows.py::test_rotate[270] PASSED [ 76%] tests/test_workflows.py::test_rotate[360] PASSED [ 76%] tests/test_workflows.py::test_rotate[-90] PASSED [ 77%] tests/test_workflows.py::test_rotate_45 PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00214.pdf-pages0] PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/sample-files/raw/main/009-pdflatex-geotopo/GeoTopo.pdf-pages1] PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00151.pdf-pages2] PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/1707.09725.pdf-pages3] PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00021.pdf-pages4] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00037.pdf-pages5] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00069.pdf-pages6] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00178.pdf-pages7] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00201.pdf-pages8] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/1602.06541.pdf-pages9] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00200.pdf-pages10] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00022.pdf-pages11] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00029.pdf-pages12] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/9174594/2017.pdf-pages13] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/9175966/2015._pb_decode_pg0.pdf-pages14] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/1601.03642.pdf-pages15] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/3796761/17343_2008_Order_09-Jan-2019.pdf-pages16] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/8884471/ssi_manwaring.pdf-pages17] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/8884469/999092.pdf-pages18] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-file:///build/reproducible-path/pypdf2-2.12.1/resources/test Orient.pdf-pages19] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/8884470/fdocuments.in_sweet-fundamentals-of-crystallography.pdf-pages20] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/8884493/998167.pdf-pages21] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://corpora.tika.apache.org/base/docs/govdocs1/971/971703.pdf-pages22] PASSED [ 81%] tests/test_workflows.py::test_extract_textbench[True-https://corpora.tika.apache.org/base/docs/govdocs1/989/989691.pdf-pages23] PASSED [ 81%] tests/test_workflows.py::test_orientations PASSED [ 81%] tests/test_workflows.py::test_overlay[resources/crazyones.pdf-sample-files/013-reportlab-overlay/reportlab-overlay.pdf] PASSED [ 81%] tests/test_workflows.py::test_overlay[https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf-sample-files/013-reportlab-overlay/reportlab-overlay.pdf] PASSED [ 81%] tests/test_workflows.py::test_merge_with_warning[https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf-tika-924546.pdf] PASSED [ 81%] tests/test_workflows.py::test_merge[https://corpora.tika.apache.org/base/docs/govdocs1/980/980613.pdf-tika-980613.pdf] PASSED [ 82%] tests/test_workflows.py::test_get_metadata[https://corpora.tika.apache.org/base/docs/govdocs1/935/935996.pdf-tika-935996.pdf] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/938/938702.pdf-tika-938702.pdf-False-None] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/942/942358.pdf-tika-942358.pdf-False-None] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/911/911260.pdf-tika-911260.pdf-False-None] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/992/992472.pdf-tika-992472.pdf-False-None] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/978/978477.pdf-tika-978477.pdf-False-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/960/960317.pdf-tika-960317.pdf-False-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/930/930513.pdf-tika-930513.pdf-False-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/918/918113.pdf-tika-918113.pdf-True-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/940/940704.pdf-tika-940704.pdf-True-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/976/976488.pdf-tika-976488.pdf-True-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/948/948176.pdf-tika-948176.pdf-True-None] PASSED [ 84%] tests/test_workflows.py::test_compress_raised[https://corpora.tika.apache.org/base/docs/govdocs1/938/938702.pdf-tika-938702.pdf] PASSED [ 84%] tests/test_workflows.py::test_compress_raised[https://corpora.tika.apache.org/base/docs/govdocs1/957/957304.pdf-tika-957304.pdf] PASSED [ 84%] tests/test_workflows.py::test_compress[https://corpora.tika.apache.org/base/docs/govdocs1/915/915194.pdf-tika-915194.pdf-False] PASSED [ 84%] tests/test_workflows.py::test_compress[https://corpora.tika.apache.org/base/docs/govdocs1/950/950337.pdf-tika-950337.pdf-False] PASSED [ 84%] tests/test_workflows.py::test_compress[https://corpora.tika.apache.org/base/docs/govdocs1/962/962292.pdf-tika-962292.pdf-True] PASSED [ 84%] tests/test_workflows.py::test_get_fields_warns[https://corpora.tika.apache.org/base/docs/govdocs1/961/961883.pdf-tika-961883.pdf] PASSED [ 85%] tests/test_workflows.py::test_get_fields_no_warning[https://corpora.tika.apache.org/base/docs/govdocs1/942/942050.pdf-tika-942050.pdf] PASSED [ 85%] tests/test_workflows.py::test_scale_rectangle_indirect_object PASSED [ 85%] tests/test_workflows.py::test_merge_output PASSED [ 85%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/994/994636.pdf-tika-994636.pdf] PASSED [ 85%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/952/952133.pdf-tika-952133.pdf] PASSED [ 85%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/914/914568.pdf-tika-914568.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/952/952016.pdf-tika-952016.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/965/965118.pdf-tika-952016.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/959/959184.pdf-tika-959184.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/958/958496.pdf-tika-958496.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/972/972174.pdf-tika-972174.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/972/972243.pdf-tika-972243.pdf] PASSED [ 87%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/969/969502.pdf-tika-969502.pdf] PASSED [ 87%] tests/test_workflows.py::test_image_extraction[https://arxiv.org/pdf/2201.00214.pdf-arxiv-2201.00214.pdf] PASSED [ 87%] tests/test_workflows.py::test_image_extraction_strict PASSED [ 87%] tests/test_workflows.py::test_image_extraction2[https://corpora.tika.apache.org/base/docs/govdocs1/977/977609.pdf-tika-977609.pdf] PASSED [ 87%] tests/test_workflows.py::test_get_outline[https://corpora.tika.apache.org/base/docs/govdocs1/918/918137.pdf-tika-918137.pdf] PASSED [ 88%] tests/test_workflows.py::test_get_outline[https://unglueit-files.s3.amazonaws.com/ebf/7552c42e9280b4476e59e77acc0bc812.pdf-7552c42e9280b4476e59e77acc0bc812.pdf] PASSED [ 88%] tests/test_workflows.py::test_get_xfa[https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf-tika-935981.pdf] PASSED [ 88%] tests/test_workflows.py::test_get_xfa[https://corpora.tika.apache.org/base/docs/govdocs1/937/937334.pdf-tika-937334.pdf] PASSED [ 88%] tests/test_workflows.py::test_get_fonts[https://corpora.tika.apache.org/base/docs/govdocs1/988/988698.pdf-tika-988698.pdf-False] PASSED [ 88%] tests/test_workflows.py::test_get_fonts[https://corpora.tika.apache.org/base/docs/govdocs1/914/914133.pdf-tika-988698.pdf-False] PASSED [ 88%] tests/test_workflows.py::test_get_fonts[https://corpora.tika.apache.org/base/docs/govdocs1/912/912552.pdf-tika-912552.pdf-False] PASSED [ 89%] tests/test_workflows.py::test_get_fonts[https://corpora.tika.apache.org/base/docs/govdocs1/914/914102.pdf-tika-914102.pdf-True] PASSED [ 89%] tests/test_workflows.py::test_get_xmp[https://corpora.tika.apache.org/base/docs/govdocs1/942/942303.pdf-tika-942303.pdf-True] PASSED [ 89%] tests/test_workflows.py::test_get_xmp[https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf-tika-935981.pdf-True] PASSED [ 89%] tests/test_workflows.py::test_get_xmp[https://corpora.tika.apache.org/base/docs/govdocs1/967/967399.pdf-tika-967399.pdf-True] PASSED [ 89%] tests/test_workflows.py::test_get_xmp[https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf-tika-935981.pdf-False] PASSED [ 89%] tests/test_workflows.py::test_tounicode_is_identity PASSED [ 90%] tests/test_writer.py::test_writer_exception_non_binary PASSED [ 90%] tests/test_writer.py::test_writer_clone PASSED [ 90%] tests/test_writer.py::test_writer_operations_by_traditional_usage[dont_commit_writer.pdf-True] PASSED [ 90%] tests/test_writer.py::test_writer_operations_by_traditional_usage[write_data_here1-True] PASSED [ 90%] tests/test_writer.py::test_writer_operations_by_traditional_usage[write_data_here2-False] PASSED [ 90%] tests/test_writer.py::test_writer_operations_by_semi_traditional_usage[dont_commit_writer.pdf-True] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_traditional_usage[write_data_here1-True] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_traditional_usage[write_data_here2-False] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_new_traditional_usage[dont_commit_writer.pdf-True] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_new_traditional_usage[write_data_here1-True] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_new_traditional_usage[write_data_here2-False] PASSED [ 91%] tests/test_writer.py::test_writer_operation_by_new_usage[dont_commit_writer.pdf-True] PASSED [ 92%] tests/test_writer.py::test_writer_operation_by_new_usage[write_data_here1-True] PASSED [ 92%] tests/test_writer.py::test_writer_operation_by_new_usage[write_data_here2-False] PASSED [ 92%] tests/test_writer.py::test_remove_images[side-by-side-subfig.pdf-False] PASSED [ 92%] tests/test_writer.py::test_remove_images[reportlab-inline-image.pdf-True] PASSED [ 92%] tests/test_writer.py::test_remove_text[side-by-side-subfig.pdf-False] PASSED [ 92%] tests/test_writer.py::test_remove_text[side-by-side-subfig.pdf-True] PASSED [ 93%] tests/test_writer.py::test_remove_text[reportlab-inline-image.pdf-False] PASSED [ 93%] tests/test_writer.py::test_remove_text[reportlab-inline-image.pdf-True] PASSED [ 93%] tests/test_writer.py::test_remove_text_all_operators[False] PASSED [ 93%] tests/test_writer.py::test_remove_text_all_operators[True] PASSED [ 93%] tests/test_writer.py::test_write_metadata PASSED [ 93%] tests/test_writer.py::test_fill_form PASSED [ 94%] tests/test_writer.py::test_encrypt[True-userpwd-ownerpwd] PASSED [ 94%] tests/test_writer.py::test_encrypt[False-userpwd-ownerpwd] PASSED [ 94%] tests/test_writer.py::test_add_outline_item PASSED [ 94%] tests/test_writer.py::test_add_named_destination PASSED [ 94%] tests/test_writer.py::test_add_uri PASSED [ 94%] tests/test_writer.py::test_add_link PASSED [ 95%] tests/test_writer.py::test_io_streams PASSED [ 95%] tests/test_writer.py::test_regression_issue670 PASSED [ 95%] tests/test_writer.py::test_issue301 PASSED [ 95%] tests/test_writer.py::test_append_pages_from_reader_append PASSED [ 95%] tests/test_writer.py::test_sweep_indirect_references_nullobject_exception PASSED [ 95%] tests/test_writer.py::test_write_outline_item_on_page_fitv PASSED [ 96%] tests/test_writer.py::test_pdf_header PASSED [ 96%] tests/test_writer.py::test_write_dict_stream_object PASSED [ 96%] tests/test_writer.py::test_add_single_annotation PASSED [ 96%] tests/test_writer.py::test_deprecate_bookmark_decorator PASSED [ 96%] tests/test_writer.py::test_colors_in_outline_item PASSED [ 96%] tests/test_writer.py::test_write_empty_stream PASSED [ 97%] tests/test_writer.py::test_startup_dest PASSED [ 97%] tests/test_writer.py::test_threads_empty PASSED [ 97%] tests/test_xmp.py::test_read_xmp[src0-True] PASSED [ 97%] tests/test_xmp.py::test_read_xmp[src1-False] PASSED [ 97%] tests/test_xmp.py::test_regression_issue774 PASSED [ 97%] tests/test_xmp.py::test_regression_issue914 PASSED [ 98%] tests/test_xmp.py::test_identity[a] PASSED [ 98%] tests/test_xmp.py::test_identity[42] PASSED [ 98%] tests/test_xmp.py::test_identity[3.141] PASSED [ 98%] tests/test_xmp.py::test_identity[False] PASSED [ 98%] tests/test_xmp.py::test_identity[True] PASSED [ 98%] tests/test_xmp.py::test_xmpmm[https://corpora.tika.apache.org/base/docs/govdocs1/955/955562.pdf-tika-955562.pdf-uuid:ca96e032-c2af-49bd-a71c-95889bafbf1d] PASSED [ 99%] tests/test_xmp.py::test_dc_description PASSED [ 99%] tests/test_xmp.py::test_dc_creator PASSED [ 99%] tests/test_xmp.py::test_custom_properties PASSED [ 99%] tests/test_xmp.py::test_dc_subject PASSED [ 99%] tests/test_xmp.py::test_issue585 PASSED [100%] =================================== FAILURES =================================== ___________________ test_get_images_raw[True-True--1-True-] ____________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf574d180>, strict = True with_prev_0 = True, startx_correction = -1, should_fail = True warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > PdfReader(pdf_stream, strict=strict) tests/test_reader.py:316: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:317: in __init__ self.read(stream) PyPDF2/_reader.py:1420: in read self._read_xref_tables_and_trailers(stream, startxref, xref_issue_nr) PyPDF2/_reader.py:1641: in _read_xref_tables_and_trailers startxref = self._read_xref_other_error(stream, startxref) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = <_io.BytesIO object at 0xf47b7438>, startxref = 0 def _read_xref_other_error( self, stream: StreamType, startxref: int ) -> Optional[int]: # some PDFs have /Prev=0 in the trailer, instead of no /Prev if startxref == 0: if self.strict: > raise PdfReadError( "/Prev=0 in the trailer (try opening with strict=False)" ) E PyPDF2.errors.PdfReadError: /Prev=0 in the trailer (try opening with strict=False) PyPDF2/_reader.py:1674: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf574d180>, strict = True with_prev_0 = True, startx_correction = -1, should_fail = True warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:315: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset WARNING PyPDF2._reader:_utils.py:375 Xref table not zero-indexed. ID numbers for objects will be corrected. ___________________ test_get_images_raw[True-False-0-True-] ____________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf47fda80>, strict = True with_prev_0 = False, startx_correction = 0, should_fail = True warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > PdfReader(pdf_stream, strict=strict) tests/test_reader.py:316: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:317: in __init__ self.read(stream) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = <_io.BytesIO object at 0xf47b92a8> def read(self, stream: StreamType) -> None: self._basic_validation(stream) self._find_eof_marker(stream) startxref = self._find_startxref_pos(stream) # check and eventually correct the startxref only in not strict xref_issue_nr = self._get_xref_issues(stream, startxref) if xref_issue_nr != 0: if self.strict and xref_issue_nr: > raise PdfReadError("Broken xref table") E PyPDF2.errors.PdfReadError: Broken xref table PyPDF2/_reader.py:1416: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf47fda80>, strict = True with_prev_0 = False, startx_correction = 0, should_fail = True warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:315: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset ____________________ test_get_images_raw[True-True-0-True-] ____________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf4d82ae0>, strict = True with_prev_0 = True, startx_correction = 0, should_fail = True, warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > PdfReader(pdf_stream, strict=strict) tests/test_reader.py:316: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:317: in __init__ self.read(stream) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = <_io.BytesIO object at 0xf5747d20> def read(self, stream: StreamType) -> None: self._basic_validation(stream) self._find_eof_marker(stream) startxref = self._find_startxref_pos(stream) # check and eventually correct the startxref only in not strict xref_issue_nr = self._get_xref_issues(stream, startxref) if xref_issue_nr != 0: if self.strict and xref_issue_nr: > raise PdfReadError("Broken xref table") E PyPDF2.errors.PdfReadError: Broken xref table PyPDF2/_reader.py:1416: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf4d82ae0>, strict = True with_prev_0 = True, startx_correction = 0, should_fail = True, warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:315: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset ___________________________ test_read_prev_0_trailer ___________________________ def test_read_prev_0_trailer(): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) with_prev_0 = True pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", pdf_data.find(b"xref") - 1, ) pdf_stream = io.BytesIO(pdf_data) with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > PdfReader(pdf_stream, strict=True) tests/test_reader.py:508: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:317: in __init__ self.read(stream) PyPDF2/_reader.py:1420: in read self._read_xref_tables_and_trailers(stream, startxref, xref_issue_nr) PyPDF2/_reader.py:1641: in _read_xref_tables_and_trailers startxref = self._read_xref_other_error(stream, startxref) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = <_io.BytesIO object at 0xf647e848>, startxref = 0 def _read_xref_other_error( self, stream: StreamType, startxref: int ) -> Optional[int]: # some PDFs have /Prev=0 in the trailer, instead of no /Prev if startxref == 0: if self.strict: > raise PdfReadError( "/Prev=0 in the trailer (try opening with strict=False)" ) E PyPDF2.errors.PdfReadError: /Prev=0 in the trailer (try opening with strict=False) PyPDF2/_reader.py:1674: PdfReadError During handling of the above exception, another exception occurred: def test_read_prev_0_trailer(): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) with_prev_0 = True pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", pdf_data.find(b"xref") - 1, ) pdf_stream = io.BytesIO(pdf_data) > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:507: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset WARNING PyPDF2._reader:_utils.py:375 Xref table not zero-indexed. ID numbers for objects will be corrected. _________________________ test_read_unknown_zero_pages _________________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf4db41c8> def test_read_unknown_zero_pages(caplog): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" # Pages 0 0 is the key point: b"5 0 obj << /Pages 0 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << /Root 5 1 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), pdf_data.find(b"xref") - 1, ) pdf_stream = io.BytesIO(pdf_data) reader = PdfReader(pdf_stream, strict=True) warnings = [ "startxref on same line as offset", "Xref table not zero-indexed. ID numbers for objects will be corrected.", ] assert normalize_warnings(caplog.text) == warnings with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > len(reader.pages) tests/test_reader.py:585: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_page.py:2047: in __len__ return self.length_function() PyPDF2/_reader.py:446: in _get_num_pages self._flatten() PyPDF2/_reader.py:1097: in _flatten catalog = self.trailer[TK.ROOT].get_object() PyPDF2/generic/_data_structures.py:150: in __getitem__ return dict.__getitem__(self, key).get_object() PyPDF2/generic/_base.py:164: in get_object obj = self.pdf.get_object(self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = indirect_reference = IndirectObject(5, 1, 4108009736) def get_object( self, indirect_reference: Union[int, IndirectObject] ) -> Optional[PdfObject]: if isinstance(indirect_reference, int): indirect_reference = IndirectObject(indirect_reference, 0, self) retval = self.cache_get_indirect_object( indirect_reference.generation, indirect_reference.idnum ) if retval is not None: return retval if ( indirect_reference.generation == 0 and indirect_reference.idnum in self.xref_objStm ): retval = self._get_object_from_stream(indirect_reference) # type: ignore elif ( indirect_reference.generation in self.xref and indirect_reference.idnum in self.xref[indirect_reference.generation] ): if self.xref_free_entry.get(indirect_reference.generation, {}).get( indirect_reference.idnum, False ): return NullObject() start = self.xref[indirect_reference.generation][indirect_reference.idnum] self.stream.seek(start, 0) try: idnum, generation = self.read_object_header(self.stream) except Exception: if hasattr(self.stream, "getbuffer"): buf = bytes(self.stream.getbuffer()) # type: ignore else: p = self.stream.tell() self.stream.seek(0, 0) buf = self.stream.read(-1) self.stream.seek(p, 0) m = re.search( rf"\s{indirect_reference.idnum}\s+{indirect_reference.generation}\s+obj".encode(), buf, ) if m is not None: logger_warning( f"Object ID {indirect_reference.idnum},{indirect_reference.generation} ref repaired", __name__, ) self.xref[indirect_reference.generation][ indirect_reference.idnum ] = (m.start(0) + 1) self.stream.seek(m.start(0) + 1) idnum, generation = self.read_object_header(self.stream) else: idnum = -1 # exception will be raised below if idnum != indirect_reference.idnum and self.xref_index: # Xref table probably had bad indexes due to not being zero-indexed if self.strict: raise PdfReadError( f"Expected object ID ({indirect_reference.idnum} {indirect_reference.generation}) " f"does not match actual ({idnum} {generation}); " "xref table not zero-indexed." ) # xref table is corrected in non-strict mode elif idnum != indirect_reference.idnum and self.strict: # some other problem raise PdfReadError( f"Expected object ID ({indirect_reference.idnum} " f"{indirect_reference.generation}) does not match actual " f"({idnum} {generation})." ) if self.strict: assert generation == indirect_reference.generation retval = read_object(self.stream, self) # type: ignore # override encryption is used for the /Encrypt dictionary if not self._override_encryption and self._encryption is not None: # if we don't have the encryption key: if not self._encryption.is_decrypted(): raise FileNotDecryptedError("File has not been decrypted") # otherwise, decrypt here... retval = cast(PdfObject, retval) retval = self._encryption.decrypt_object( retval, indirect_reference.idnum, indirect_reference.generation ) else: if hasattr(self.stream, "getbuffer"): buf = bytes(self.stream.getbuffer()) # type: ignore else: p = self.stream.tell() self.stream.seek(0, 0) buf = self.stream.read(-1) self.stream.seek(p, 0) m = re.search( rf"\s{indirect_reference.idnum}\s+{indirect_reference.generation}\s+obj".encode(), buf, ) if m is not None: logger_warning( f"Object {indirect_reference.idnum} {indirect_reference.generation} found", __name__, ) if indirect_reference.generation not in self.xref: self.xref[indirect_reference.generation] = {} self.xref[indirect_reference.generation][indirect_reference.idnum] = ( m.start(0) + 1 ) self.stream.seek(m.end(0) + 1) skip_over_whitespace(self.stream) self.stream.seek(-1, 1) retval = read_object(self.stream, self) # type: ignore # override encryption is used for the /Encrypt dictionary if not self._override_encryption and self._encryption is not None: # if we don't have the encryption key: if not self._encryption.is_decrypted(): raise FileNotDecryptedError("File has not been decrypted") # otherwise, decrypt here... retval = cast(PdfObject, retval) retval = self._encryption.decrypt_object( retval, indirect_reference.idnum, indirect_reference.generation ) else: logger_warning( f"Object {indirect_reference.idnum} {indirect_reference.generation} not defined.", __name__, ) if self.strict: > raise PdfReadError("Could not find object.") E PyPDF2.errors.PdfReadError: Could not find object. PyPDF2/_reader.py:1311: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf4db41c8> def test_read_unknown_zero_pages(caplog): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" # Pages 0 0 is the key point: b"5 0 obj << /Pages 0 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << /Root 5 1 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), pdf_data.find(b"xref") - 1, ) pdf_stream = io.BytesIO(pdf_data) reader = PdfReader(pdf_stream, strict=True) warnings = [ "startxref on same line as offset", "Xref table not zero-indexed. ID numbers for objects will be corrected.", ] assert normalize_warnings(caplog.text) == warnings > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:584: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset WARNING PyPDF2._reader:_utils.py:375 Xref table not zero-indexed. ID numbers for objects will be corrected. WARNING PyPDF2._reader:_utils.py:375 Object 5 1 not defined. _____________________________ test_issue604[True] ______________________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf4e94300>, strict = True @pytest.mark.parametrize( "strict", [True, False], ) def test_issue604(caplog, strict): """Test with invalid destinations""" # todo with open(RESOURCE_ROOT / "issue-604.pdf", "rb") as f: pdf = None outline = None if strict: pdf = PdfReader(f, strict=strict) with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > outline = pdf.outline tests/test_reader.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:739: in outline return self._get_outline() PyPDF2/_reader.py:775: in _get_outline outline_obj = self._build_outline_item(node) PyPDF2/_reader.py:939: in _build_outline_item outline_item = self._build_destination(title, dest) PyPDF2/_reader.py:901: in _build_destination return Destination(title, page, typ, *array) # type: ignore _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = {'/Title': 'ms_Thyroid_2_2020_071520_watermarked.pdf', '/Page': NullObject, '/Type': 0} title = 'ms_Thyroid_2_2020_071520_watermarked.pdf', page = NullObject, typ = 0 args = (0, 1) def __init__( self, title: str, page: Union[NumberObject, IndirectObject, NullObject, DictionaryObject], typ: Union[str, NumberObject], *args: Any, # ZoomArgType ) -> None: DictionaryObject.__init__(self) self[NameObject("/Title")] = TextStringObject(title) self[NameObject("/Page")] = page self[NameObject("/Type")] = typ # from table 8.2 of the PDF 1.7 reference. if typ == "/XYZ": ( self[NameObject(TA.LEFT)], self[NameObject(TA.TOP)], self[NameObject("/Zoom")], ) = args elif typ == TF.FIT_R: ( self[NameObject(TA.LEFT)], self[NameObject(TA.BOTTOM)], self[NameObject(TA.RIGHT)], self[NameObject(TA.TOP)], ) = args elif typ in [TF.FIT_H, TF.FIT_BH]: try: # Prefered to be more robust not only to null parameters (self[NameObject(TA.TOP)],) = args except Exception: (self[NameObject(TA.TOP)],) = (NullObject(),) elif typ in [TF.FIT_V, TF.FIT_BV]: try: # Prefered to be more robust not only to null parameters (self[NameObject(TA.LEFT)],) = args except Exception: (self[NameObject(TA.LEFT)],) = (NullObject(),) elif typ in [TF.FIT, TF.FIT_B]: pass else: > raise PdfReadError(f"Unknown Destination Type: {typ!r}") E PyPDF2.errors.PdfReadError: Unknown Destination Type: 0 PyPDF2/generic/_data_structures.py:1089: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf4e94300>, strict = True @pytest.mark.parametrize( "strict", [True, False], ) def test_issue604(caplog, strict): """Test with invalid destinations""" # todo with open(RESOURCE_ROOT / "issue-604.pdf", "rb") as f: pdf = None outline = None if strict: pdf = PdfReader(f, strict=strict) > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:663: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 Unknown destination: ms_Thyroid_2_2020_071520_watermarked.pdf [0, 1] ---------- coverage: platform linux, python 3.12.7-final-0 ----------- Name Stmts Miss Branch BrPart Cover Missing -------------------------------------------------------------------------------- PyPDF2/__init__.py 9 0 0 0 100% PyPDF2/_cmap.py 231 41 114 13 81% 38, 43->42, 54-56, 120, 140-146, 150-157, 167-170, 211-212, 214, 282-295, 300-311, 364, 370, 378-382, 403 PyPDF2/_codecs/__init__.py 32 0 6 0 100% PyPDF2/_codecs/adobe_glyphs.py 6 0 2 0 100% PyPDF2/_codecs/pdfdoc.py 2 0 0 0 100% PyPDF2/_codecs/std.py 1 0 0 0 100% PyPDF2/_codecs/symbol.py 2 0 0 0 100% PyPDF2/_codecs/zapfding.py 2 0 0 0 100% PyPDF2/_encryption.py 371 101 140 8 73% 61-112, 144, 156, 159, 178, 298, 352-358, 537, 546, 562-570, 577-580, 590-593, 614-622, 641-651, 668-672, 768, 772, 780-781, 842-853, 879->881, 881->883, 883->886 PyPDF2/_merger.py 217 12 122 10 92% 481-485, 490, 505->511, 511->503, 534->538, 590, 617->602, 635, 770-777, 779 PyPDF2/_page.py 658 91 366 43 85% 121->125, 126, 407->406, 409->406, 532-538, 637-638, 641-642, 648->645, 650, 680->685, 686->715, 752-753, 1074-1113, 1122, 1141-1143, 1163->exit, 1164->1166, 1324, 1327-1328, 1329->1332, 1344->1352, 1346-1347, 1440-1441, 1446, 1462, 1464, 1466, 1471, 1486-1488, 1496-1497, 1519-1520, 1541-1542, 1579, 1589, 1608->exit, 1627->exit, 1630, 1642->exit, 1646->exit, 1649, 1661->exit, 1663->exit, 1665->exit, 1668, 1680->exit, 1682-1683, 1690-1691, 1693-1696, 1698-1699, 1714, 1719, 1726-1738, 1750, 1804->1809, 1864, 2092->2095 PyPDF2/_reader.py 858 128 410 41 83% 241, 368, 544, 625->609, 633, 686, 689->692, 708->702, 711-715, 763, 766->768, 776->780, 783->786, 811-815, 955-962, 965->977, 1102->1105, 1111->1113, 1114->exit, 1151, 1160-1173, 1176-1178, 1209, 1214-1237, 1240-1241, 1249, 1281-1302, 1350, 1389-1392, 1439-1440, 1482, 1489, 1521-1522, 1538-1562, 1606, 1613-1614, 1618-1626, 1632-1635, 1656-1657, 1689-1690, 1696-1697, 1705-1707, 1725, 1736-1739, 1763, 1766, 1827-1828, 1894, 1950-1963 PyPDF2/_security.py 78 2 24 0 98% 41-44 PyPDF2/_utils.py 189 2 76 1 99% 59-60, 274->276 PyPDF2/_version.py 1 0 0 0 100% PyPDF2/_writer.py 569 28 246 26 93% 224, 240->245, 269-270, 474->exit, 693, 697, 719-720, 949->946, 1086->1080, 1099, 1105-1110, 1206-1213, 1597->1600, 1608, 1610-1614, 1620, 1629, 1658->1660, 1664->1660, 1667->1660, 1672->1660, 1675->1660, 1726, 1989, 1992, 2028, 2032, 2134->2136, 2136->2138 PyPDF2/constants.py 278 0 8 0 100% PyPDF2/errors.py 21 0 0 0 100% PyPDF2/filters.py 334 53 178 21 81% 47-50, 73-74, 105->104, 117-123, 152, 161, 163-164, 168-182, 263, 295, 317, 395, 446->448, 448->451, 516, 522->550, 527, 535, 539-542, 569-570, 590->600, 605->609, 611, 632-643 PyPDF2/generic/__init__.py 12 0 0 0 100% PyPDF2/generic/_annotations.py 60 0 30 0 100% PyPDF2/generic/_base.py 217 2 64 0 99% 379-380 PyPDF2/generic/_data_structures.py 604 32 238 13 94% 170->173, 238, 254, 271-277, 283-289, 298, 304, 442->exit, 604-611, 700->698, 766, 770, 794-798, 823, 1079-1080, 1180 PyPDF2/generic/_outline.py 20 0 2 0 100% PyPDF2/generic/_rectangle.py 69 1 38 0 99% 33 PyPDF2/generic/_utils.py 99 0 50 0 100% PyPDF2/pagerange.py 61 0 28 0 100% PyPDF2/papersizes.py 14 0 0 0 100% PyPDF2/types.py 22 4 0 0 82% 8-9, 14-15 PyPDF2/xmp.py 215 60 78 11 64% 118, 121-126, 138-155, 164-179, 190, 192->198, 194, 198->200, 220-221, 235, 250->249, 253, 269->268, 273, 292->291, 500-519 -------------------------------------------------------------------------------- TOTAL 5252 557 2220 187 88% =========================== short test summary info ============================ FAILED tests/test_reader.py::test_get_images_raw[True-True--1-True-] - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_get_images_raw[True-False-0-True-] - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_get_images_raw[True-True-0-True-] - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_read_prev_0_trailer - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_read_unknown_zero_pages - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_issue604[True] - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. ======== 6 failed, 576 passed, 5 skipped, 5 xfailed in 76.98s (0:01:16) ======== make[1]: *** [debian/rules:35: override_dh_auto_test] Error 1 make[1]: Leaving directory '/build/reproducible-path/pypdf2-2.12.1' make: *** [debian/rules:39: binary] Error 2 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration E: Failed autobuilding of package I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/122002 and its subdirectories Starting cleanup. All cleanup done. Thu Dec 25 21:12:27 UTC 2025 - reproducible_build.sh stopped running as /tmp/jenkins-script-PVGMgjRs, removing. /srv/reproducible-results/rbuild-debian/r-b-build.jeIjHnpr: total 16 drwxr-xr-x 2 jenkins jenkins 4096 Nov 22 14:49 b1 drwxr-xr-x 2 jenkins jenkins 4096 Nov 22 14:46 b2 -rw-r--r-- 1 jenkins jenkins 2419 Jan 19 2024 pypdf2_2.12.1-4.dsc -rw------- 1 jenkins jenkins 3513 Nov 22 14:46 rbuildlog.jRJC14R /srv/reproducible-results/rbuild-debian/r-b-build.jeIjHnpr/b1: total 156 -rw-r--r-- 1 jenkins jenkins 159402 Nov 22 14:49 build.log /srv/reproducible-results/rbuild-debian/r-b-build.jeIjHnpr/b2: total 0 Fri Nov 22 14:49:28 UTC 2024 I: Deleting $TMPDIR on ionos6-i386.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Thu Dec 25 09:09:49 -12 2025 I: pbuilder-time-stamp: 1766696989 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: using eatmydata during job I: Copying source file I: copying [pypdf2_2.12.1-4.dsc] I: copying [./pypdf2_2.12.1.orig-sample-files.tar.gz] I: copying [./pypdf2_2.12.1.orig.tar.gz] I: copying [./pypdf2_2.12.1-4.debian.tar.xz] I: Extracting source gpgv: Signature made Fri Jan 19 22:21:07 2024 gpgv: using RSA key E7729BFFBE85400FEEEE23B178D7DEFB9AD59AF1 gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./pypdf2_2.12.1-4.dsc: no acceptable signature found dpkg-source: info: extracting pypdf2 in pypdf2-2.12.1 dpkg-source: info: unpacking pypdf2_2.12.1.orig.tar.gz dpkg-source: info: unpacking pypdf2_2.12.1.orig-sample-files.tar.gz dpkg-source: info: unpacking pypdf2_2.12.1-4.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying disable-network-tests.patch dpkg-source: info: applying 0003-Prevent-infinite-loop-when-no-character-follows-afte.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/122002/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='i386' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=22 ' DISTRIBUTION='unstable' HOME='/root' HOST_ARCH='i386' IFS=' ' INVOCATION_ID='40ad611ae9104a9e8aeaf660ac68f9ef' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' LD_LIBRARY_PATH='/usr/lib/libeatmydata' LD_PRELOAD='libeatmydata.so' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='122002' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.jeIjHnpr/pbuilderrc_n9UN --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.jeIjHnpr/b1 --logfile b1/build.log pypdf2_2.12.1-4.dsc' SUDO_GID='112' SUDO_UID='107' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://213.165.73.152:3128' I: uname -a Linux ionos6-i386 6.1.0-27-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.115-1 (2024-11-01) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Aug 4 2024 /bin -> usr/bin I: user script /srv/workspace/pbuilder/122002/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: i386 Maintainer: Debian Pbuilder Team Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), dh-python, flit, pybuild-plugin-pyproject, python3-all, python3-pil, python3-pytest, python3-pytest-cov dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19952 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on dh-python; however: Package dh-python is not installed. pbuilder-satisfydepends-dummy depends on flit; however: Package flit is not installed. pbuilder-satisfydepends-dummy depends on pybuild-plugin-pyproject; however: Package pybuild-plugin-pyproject is not installed. pbuilder-satisfydepends-dummy depends on python3-all; however: Package python3-all is not installed. pbuilder-satisfydepends-dummy depends on python3-pil; however: Package python3-pil is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest; however: Package python3-pytest is not installed. pbuilder-satisfydepends-dummy depends on python3-pytest-cov; however: Package python3-pytest-cov is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} ca-certificates{a} debhelper{a} dh-autoreconf{a} dh-python{a} dh-strip-nondeterminism{a} docutils-common{a} dwz{a} file{a} flit{a} gettext{a} gettext-base{a} groff-base{a} intltool-debian{a} libarchive-zip-perl{a} libbrotli1{a} libcom-err2{a} libdebhelper-perl{a} libdeflate0{a} libelf1t64{a} libexpat1{a} libfile-stripnondeterminism-perl{a} libfreetype6{a} libfribidi0{a} libglib2.0-0t64{a} libgraphite2-3{a} libgssapi-krb5-2{a} libharfbuzz0b{a} libicu72{a} libimagequant0{a} libjbig0{a} libjpeg62-turbo{a} libjs-jquery{a} libjs-jquery-hotkeys{a} libjs-jquery-isonscreen{a} libjs-jquery-metadata{a} libjs-jquery-tablesorter{a} libjs-jquery-throttle-debounce{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} liblcms2-2{a} liblerc4{a} libmagic-mgc{a} libmagic1t64{a} libnsl2{a} libopenjp2-7{a} libpipeline1{a} libpng16-16t64{a} libpython3-stdlib{a} libpython3.12-minimal{a} libpython3.12-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libraqm0{a} libreadline8t64{a} libsharpyuv0{a} libtiff6{a} libtirpc-common{a} libtirpc3t64{a} libtool{a} libuchardet0{a} libwebp7{a} libwebpdemux2{a} libwebpmux3{a} libxau6{a} libxcb1{a} libxdmcp6{a} libxml2{a} m4{a} man-db{a} media-types{a} netbase{a} openssl{a} po-debconf{a} pybuild-plugin-pyproject{a} python3{a} python3-all{a} python3-autocommand{a} python3-build{a} python3-certifi{a} python3-chardet{a} python3-charset-normalizer{a} python3-coverage{a} python3-docutils{a} python3-idna{a} python3-inflect{a} python3-iniconfig{a} python3-installer{a} python3-jaraco.context{a} python3-jaraco.functools{a} python3-jaraco.text{a} python3-minimal{a} python3-more-itertools{a} python3-packaging{a} python3-pil{a} python3-pkg-resources{a} python3-pluggy{a} python3-pyproject-hooks{a} python3-pytest{a} python3-pytest-cov{a} python3-requests{a} python3-roman{a} python3-setuptools{a} python3-toml{a} python3-tomli-w{a} python3-typeguard{a} python3-typing-extensions{a} python3-urllib3{a} python3-wheel{a} python3-zipp{a} python3.12{a} python3.12-minimal{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} sgml-base{a} tzdata{a} xml-core{a} The following packages are RECOMMENDED but will NOT be installed: curl javascript-common krb5-locales libarchive-cpio-perl libglib2.0-data libltdl-dev libmail-sendmail-perl libpaper-utils lynx python3-olefile python3-pygments shared-mime-info wget xdg-user-dirs 0 packages upgraded, 125 newly installed, 0 to remove and 0 not upgraded. Need to get 44.1 MB of archives. After unpacking 163 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main i386 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 2 http://deb.debian.org/debian unstable/main i386 libjs-jquery-hotkeys all 0~20130707+git2d51e3a9+dfsg-2.1 [11.5 kB] Get: 3 http://deb.debian.org/debian unstable/main i386 libpython3.12-minimal i386 3.12.7-3 [814 kB] Get: 4 http://deb.debian.org/debian unstable/main i386 libexpat1 i386 2.6.4-1 [107 kB] Get: 5 http://deb.debian.org/debian unstable/main i386 python3.12-minimal i386 3.12.7-3 [2236 kB] Get: 6 http://deb.debian.org/debian unstable/main i386 python3-minimal i386 3.12.7-1 [26.8 kB] Get: 7 http://deb.debian.org/debian unstable/main i386 media-types all 10.1.0 [26.9 kB] Get: 8 http://deb.debian.org/debian unstable/main i386 netbase all 6.4 [12.8 kB] Get: 9 http://deb.debian.org/debian unstable/main i386 tzdata all 2024b-3 [255 kB] Get: 10 http://deb.debian.org/debian unstable/main i386 libkrb5support0 i386 1.21.3-3 [34.9 kB] Get: 11 http://deb.debian.org/debian unstable/main i386 libcom-err2 i386 1.47.1-1+b1 [23.4 kB] Get: 12 http://deb.debian.org/debian unstable/main i386 libk5crypto3 i386 1.21.3-3 [83.6 kB] Get: 13 http://deb.debian.org/debian unstable/main i386 libkeyutils1 i386 1.6.3-4 [9600 B] Get: 14 http://deb.debian.org/debian unstable/main i386 libkrb5-3 i386 1.21.3-3 [350 kB] Get: 15 http://deb.debian.org/debian unstable/main i386 libgssapi-krb5-2 i386 1.21.3-3 [146 kB] Get: 16 http://deb.debian.org/debian unstable/main i386 libtirpc-common all 1.3.4+ds-1.3 [10.9 kB] Get: 17 http://deb.debian.org/debian unstable/main i386 libtirpc3t64 i386 1.3.4+ds-1.3+b1 [90.5 kB] Get: 18 http://deb.debian.org/debian unstable/main i386 libnsl2 i386 1.3.0-3+b3 [42.7 kB] Get: 19 http://deb.debian.org/debian unstable/main i386 readline-common all 8.2-5 [69.3 kB] Get: 20 http://deb.debian.org/debian unstable/main i386 libreadline8t64 i386 8.2-5 [173 kB] Get: 21 http://deb.debian.org/debian unstable/main i386 libpython3.12-stdlib i386 3.12.7-3 [1964 kB] Get: 22 http://deb.debian.org/debian unstable/main i386 python3.12 i386 3.12.7-3 [671 kB] Get: 23 http://deb.debian.org/debian unstable/main i386 libpython3-stdlib i386 3.12.7-1 [9712 B] Get: 24 http://deb.debian.org/debian unstable/main i386 python3 i386 3.12.7-1 [27.8 kB] Get: 25 http://deb.debian.org/debian unstable/main i386 libpython3.13-minimal i386 3.13.0-2 [856 kB] Get: 26 http://deb.debian.org/debian unstable/main i386 python3.13-minimal i386 3.13.0-2 [2112 kB] Get: 27 http://deb.debian.org/debian unstable/main i386 sgml-base all 1.31 [15.4 kB] Get: 28 http://deb.debian.org/debian unstable/main i386 sensible-utils all 0.0.24 [24.8 kB] Get: 29 http://deb.debian.org/debian unstable/main i386 openssl i386 3.3.2-2 [1387 kB] Get: 30 http://deb.debian.org/debian unstable/main i386 ca-certificates all 20240203 [158 kB] Get: 31 http://deb.debian.org/debian unstable/main i386 libmagic-mgc i386 1:5.45-3+b1 [314 kB] Get: 32 http://deb.debian.org/debian unstable/main i386 libmagic1t64 i386 1:5.45-3+b1 [115 kB] Get: 33 http://deb.debian.org/debian unstable/main i386 file i386 1:5.45-3+b1 [43.2 kB] Get: 34 http://deb.debian.org/debian unstable/main i386 gettext-base i386 0.22.5-2 [201 kB] Get: 35 http://deb.debian.org/debian unstable/main i386 libuchardet0 i386 0.0.8-1+b2 [69.2 kB] Get: 36 http://deb.debian.org/debian unstable/main i386 groff-base i386 1.23.0-5 [1196 kB] Get: 37 http://deb.debian.org/debian unstable/main i386 bsdextrautils i386 2.40.2-11 [95.6 kB] Get: 38 http://deb.debian.org/debian unstable/main i386 libpipeline1 i386 1.5.8-1 [41.2 kB] Get: 39 http://deb.debian.org/debian unstable/main i386 man-db i386 2.13.0-1 [1428 kB] Get: 40 http://deb.debian.org/debian unstable/main i386 m4 i386 1.4.19-4 [293 kB] Get: 41 http://deb.debian.org/debian unstable/main i386 autoconf all 2.72-3 [493 kB] Get: 42 http://deb.debian.org/debian unstable/main i386 autotools-dev all 20220109.1 [51.6 kB] Get: 43 http://deb.debian.org/debian unstable/main i386 automake all 1:1.16.5-1.3 [823 kB] Get: 44 http://deb.debian.org/debian unstable/main i386 autopoint all 0.22.5-2 [723 kB] Get: 45 http://deb.debian.org/debian unstable/main i386 libdebhelper-perl all 13.20 [89.7 kB] Get: 46 http://deb.debian.org/debian unstable/main i386 libtool all 2.4.7-8 [517 kB] Get: 47 http://deb.debian.org/debian unstable/main i386 dh-autoreconf all 20 [17.1 kB] Get: 48 http://deb.debian.org/debian unstable/main i386 libarchive-zip-perl all 1.68-1 [104 kB] Get: 49 http://deb.debian.org/debian unstable/main i386 libfile-stripnondeterminism-perl all 1.14.0-1 [19.5 kB] Get: 50 http://deb.debian.org/debian unstable/main i386 dh-strip-nondeterminism all 1.14.0-1 [8448 B] Get: 51 http://deb.debian.org/debian unstable/main i386 libelf1t64 i386 0.192-4 [195 kB] Get: 52 http://deb.debian.org/debian unstable/main i386 dwz i386 0.15-1+b1 [116 kB] Get: 53 http://deb.debian.org/debian unstable/main i386 libicu72 i386 72.1-5+b1 [9583 kB] Get: 54 http://deb.debian.org/debian unstable/main i386 libxml2 i386 2.12.7+dfsg+really2.9.14-0.2+b1 [734 kB] Get: 55 http://deb.debian.org/debian unstable/main i386 gettext i386 0.22.5-2 [1631 kB] Get: 56 http://deb.debian.org/debian unstable/main i386 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 57 http://deb.debian.org/debian unstable/main i386 po-debconf all 1.0.21+nmu1 [248 kB] Get: 58 http://deb.debian.org/debian unstable/main i386 debhelper all 13.20 [915 kB] Get: 59 http://deb.debian.org/debian unstable/main i386 python3-autocommand all 2.2.2-3 [13.6 kB] Get: 60 http://deb.debian.org/debian unstable/main i386 python3-more-itertools all 10.5.0-1 [63.8 kB] Get: 61 http://deb.debian.org/debian unstable/main i386 python3-typing-extensions all 4.12.2-2 [73.0 kB] Get: 62 http://deb.debian.org/debian unstable/main i386 python3-typeguard all 4.4.1-1 [37.0 kB] Get: 63 http://deb.debian.org/debian unstable/main i386 python3-inflect all 7.3.1-2 [32.4 kB] Get: 64 http://deb.debian.org/debian unstable/main i386 python3-jaraco.context all 6.0.0-1 [7984 B] Get: 65 http://deb.debian.org/debian unstable/main i386 python3-jaraco.functools all 4.1.0-1 [12.0 kB] Get: 66 http://deb.debian.org/debian unstable/main i386 python3-pkg-resources all 75.2.0-1 [213 kB] Get: 67 http://deb.debian.org/debian unstable/main i386 python3-jaraco.text all 4.0.0-1 [11.4 kB] Get: 68 http://deb.debian.org/debian unstable/main i386 python3-zipp all 3.21.0-1 [10.6 kB] Get: 69 http://deb.debian.org/debian unstable/main i386 python3-setuptools all 75.2.0-1 [731 kB] Get: 70 http://deb.debian.org/debian unstable/main i386 dh-python all 6.20241024 [109 kB] Get: 71 http://deb.debian.org/debian unstable/main i386 xml-core all 0.19 [20.1 kB] Get: 72 http://deb.debian.org/debian unstable/main i386 docutils-common all 0.21.2+dfsg-2 [128 kB] Get: 73 http://deb.debian.org/debian unstable/main i386 python3-roman all 4.2-1 [10.4 kB] Get: 74 http://deb.debian.org/debian unstable/main i386 python3-docutils all 0.21.2+dfsg-2 [403 kB] Get: 75 http://deb.debian.org/debian unstable/main i386 python3-certifi all 2024.8.30+dfsg-1 [9576 B] Get: 76 http://deb.debian.org/debian unstable/main i386 python3-charset-normalizer i386 3.4.0-1+b1 [139 kB] Get: 77 http://deb.debian.org/debian unstable/main i386 python3-idna all 3.8-2 [41.6 kB] Get: 78 http://deb.debian.org/debian unstable/main i386 python3-urllib3 all 2.0.7-2 [111 kB] Get: 79 http://deb.debian.org/debian unstable/main i386 python3-chardet all 5.2.0+dfsg-1 [107 kB] Get: 80 http://deb.debian.org/debian unstable/main i386 python3-requests all 2.32.3+dfsg-1 [71.9 kB] Get: 81 http://deb.debian.org/debian unstable/main i386 python3-tomli-w all 1.0.0-2 [8012 B] Get: 82 http://deb.debian.org/debian unstable/main i386 flit all 3.9.0-2 [93.4 kB] Get: 83 http://deb.debian.org/debian unstable/main i386 libbrotli1 i386 1.1.0-2+b6 [308 kB] Get: 84 http://deb.debian.org/debian unstable/main i386 libdeflate0 i386 1.22-1 [48.1 kB] Get: 85 http://deb.debian.org/debian unstable/main i386 libpng16-16t64 i386 1.6.44-2 [288 kB] Get: 86 http://deb.debian.org/debian unstable/main i386 libfreetype6 i386 2.13.3+dfsg-1 [464 kB] Get: 87 http://deb.debian.org/debian unstable/main i386 libfribidi0 i386 1.0.15-1 [72.4 kB] Get: 88 http://deb.debian.org/debian unstable/main i386 libglib2.0-0t64 i386 2.82.2-3 [1571 kB] Get: 89 http://deb.debian.org/debian unstable/main i386 libgraphite2-3 i386 1.3.14-2+b1 [77.8 kB] Get: 90 http://deb.debian.org/debian unstable/main i386 libharfbuzz0b i386 10.0.1-1 [503 kB] Get: 91 http://deb.debian.org/debian unstable/main i386 libimagequant0 i386 2.18.0-1+b2 [36.0 kB] Get: 92 http://deb.debian.org/debian unstable/main i386 libjbig0 i386 2.1-6.1+b2 [32.2 kB] Get: 93 http://deb.debian.org/debian unstable/main i386 libjpeg62-turbo i386 1:2.1.5-3+b1 [171 kB] Get: 94 http://deb.debian.org/debian unstable/main i386 libjs-jquery-isonscreen all 1.2.0-1.1 [3196 B] Get: 95 http://deb.debian.org/debian unstable/main i386 libjs-jquery-metadata all 12-4 [6532 B] Get: 96 http://deb.debian.org/debian unstable/main i386 libjs-jquery-tablesorter all 1:2.31.3+dfsg1-4 [184 kB] Get: 97 http://deb.debian.org/debian unstable/main i386 libjs-jquery-throttle-debounce all 1.1+dfsg.1-2 [12.2 kB] Get: 98 http://deb.debian.org/debian unstable/main i386 liblcms2-2 i386 2.16-2 [171 kB] Get: 99 http://deb.debian.org/debian unstable/main i386 liblerc4 i386 4.0.0+ds-5 [191 kB] Get: 100 http://deb.debian.org/debian unstable/main i386 libopenjp2-7 i386 2.5.0-2+b4 [210 kB] Get: 101 http://deb.debian.org/debian unstable/main i386 libpython3.13-stdlib i386 3.13.0-2 [2002 kB] Get: 102 http://deb.debian.org/debian unstable/main i386 libraqm0 i386 0.10.1-1+b2 [14.8 kB] Get: 103 http://deb.debian.org/debian unstable/main i386 libsharpyuv0 i386 1.4.0-0.1+b1 [113 kB] Get: 104 http://deb.debian.org/debian unstable/main i386 libwebp7 i386 1.4.0-0.1+b1 [322 kB] Get: 105 http://deb.debian.org/debian unstable/main i386 libtiff6 i386 4.5.1+git230720-5 [339 kB] Get: 106 http://deb.debian.org/debian unstable/main i386 libwebpdemux2 i386 1.4.0-0.1+b1 [111 kB] Get: 107 http://deb.debian.org/debian unstable/main i386 libwebpmux3 i386 1.4.0-0.1+b1 [125 kB] Get: 108 http://deb.debian.org/debian unstable/main i386 libxau6 i386 1:1.0.11-1 [20.7 kB] Get: 109 http://deb.debian.org/debian unstable/main i386 libxdmcp6 i386 1:1.1.5-1 [28.2 kB] Get: 110 http://deb.debian.org/debian unstable/main i386 libxcb1 i386 1.17.0-2+b1 [148 kB] Get: 111 http://deb.debian.org/debian unstable/main i386 python3-packaging all 24.2-1 [55.3 kB] Get: 112 http://deb.debian.org/debian unstable/main i386 python3-pyproject-hooks all 1.2.0-1 [11.7 kB] Get: 113 http://deb.debian.org/debian unstable/main i386 python3-toml all 0.10.2-1 [16.2 kB] Get: 114 http://deb.debian.org/debian unstable/main i386 python3-wheel all 0.45.0-1 [56.7 kB] Get: 115 http://deb.debian.org/debian unstable/main i386 python3-build all 1.2.2-1 [36.0 kB] Get: 116 http://deb.debian.org/debian unstable/main i386 python3-installer all 0.7.0+dfsg1-3 [18.6 kB] Get: 117 http://deb.debian.org/debian unstable/main i386 pybuild-plugin-pyproject all 6.20241024 [11.4 kB] Get: 118 http://deb.debian.org/debian unstable/main i386 python3.13 i386 3.13.0-2 [730 kB] Get: 119 http://deb.debian.org/debian unstable/main i386 python3-all i386 3.12.7-1 [1052 B] Get: 120 http://deb.debian.org/debian unstable/main i386 python3-coverage i386 7.6.0+dfsg1-2+b1 [177 kB] Get: 121 http://deb.debian.org/debian unstable/main i386 python3-iniconfig all 1.1.1-2 [6396 B] Get: 122 http://deb.debian.org/debian unstable/main i386 python3-pil i386 10.4.0-1+b1 [513 kB] Get: 123 http://deb.debian.org/debian unstable/main i386 python3-pluggy all 1.5.0-1 [26.9 kB] Get: 124 http://deb.debian.org/debian unstable/main i386 python3-pytest all 8.3.3-1 [249 kB] Get: 125 http://deb.debian.org/debian unstable/main i386 python3-pytest-cov all 5.0.0-1 [26.8 kB] Fetched 44.1 MB in 1s (54.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libjs-jquery. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19952 files and directories currently installed.) Preparing to unpack .../libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package libjs-jquery-hotkeys. Preparing to unpack .../libjs-jquery-hotkeys_0~20130707+git2d51e3a9+dfsg-2.1_all.deb ... Unpacking libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... Selecting previously unselected package libpython3.12-minimal:i386. Preparing to unpack .../libpython3.12-minimal_3.12.7-3_i386.deb ... Unpacking libpython3.12-minimal:i386 (3.12.7-3) ... Selecting previously unselected package libexpat1:i386. Preparing to unpack .../libexpat1_2.6.4-1_i386.deb ... Unpacking libexpat1:i386 (2.6.4-1) ... Selecting previously unselected package python3.12-minimal. Preparing to unpack .../python3.12-minimal_3.12.7-3_i386.deb ... Unpacking python3.12-minimal (3.12.7-3) ... Setting up libpython3.12-minimal:i386 (3.12.7-3) ... Setting up libexpat1:i386 (2.6.4-1) ... Setting up python3.12-minimal (3.12.7-3) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20298 files and directories currently installed.) Preparing to unpack .../00-python3-minimal_3.12.7-1_i386.deb ... Unpacking python3-minimal (3.12.7-1) ... Selecting previously unselected package media-types. Preparing to unpack .../01-media-types_10.1.0_all.deb ... Unpacking media-types (10.1.0) ... Selecting previously unselected package netbase. Preparing to unpack .../02-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../03-tzdata_2024b-3_all.deb ... Unpacking tzdata (2024b-3) ... Selecting previously unselected package libkrb5support0:i386. Preparing to unpack .../04-libkrb5support0_1.21.3-3_i386.deb ... Unpacking libkrb5support0:i386 (1.21.3-3) ... Selecting previously unselected package libcom-err2:i386. Preparing to unpack .../05-libcom-err2_1.47.1-1+b1_i386.deb ... Unpacking libcom-err2:i386 (1.47.1-1+b1) ... Selecting previously unselected package libk5crypto3:i386. Preparing to unpack .../06-libk5crypto3_1.21.3-3_i386.deb ... Unpacking libk5crypto3:i386 (1.21.3-3) ... Selecting previously unselected package libkeyutils1:i386. Preparing to unpack .../07-libkeyutils1_1.6.3-4_i386.deb ... Unpacking libkeyutils1:i386 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:i386. Preparing to unpack .../08-libkrb5-3_1.21.3-3_i386.deb ... Unpacking libkrb5-3:i386 (1.21.3-3) ... Selecting previously unselected package libgssapi-krb5-2:i386. Preparing to unpack .../09-libgssapi-krb5-2_1.21.3-3_i386.deb ... Unpacking libgssapi-krb5-2:i386 (1.21.3-3) ... Selecting previously unselected package libtirpc-common. Preparing to unpack .../10-libtirpc-common_1.3.4+ds-1.3_all.deb ... Unpacking libtirpc-common (1.3.4+ds-1.3) ... Selecting previously unselected package libtirpc3t64:i386. Preparing to unpack .../11-libtirpc3t64_1.3.4+ds-1.3+b1_i386.deb ... Adding 'diversion of /lib/i386-linux-gnu/libtirpc.so.3 to /lib/i386-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' Adding 'diversion of /lib/i386-linux-gnu/libtirpc.so.3.0.0 to /lib/i386-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' Unpacking libtirpc3t64:i386 (1.3.4+ds-1.3+b1) ... Selecting previously unselected package libnsl2:i386. Preparing to unpack .../12-libnsl2_1.3.0-3+b3_i386.deb ... Unpacking libnsl2:i386 (1.3.0-3+b3) ... Selecting previously unselected package readline-common. Preparing to unpack .../13-readline-common_8.2-5_all.deb ... Unpacking readline-common (8.2-5) ... Selecting previously unselected package libreadline8t64:i386. Preparing to unpack .../14-libreadline8t64_8.2-5_i386.deb ... Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8 to /lib/i386-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libhistory.so.8.2 to /lib/i386-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8 to /lib/i386-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/i386-linux-gnu/libreadline.so.8.2 to /lib/i386-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:i386 (8.2-5) ... Selecting previously unselected package libpython3.12-stdlib:i386. Preparing to unpack .../15-libpython3.12-stdlib_3.12.7-3_i386.deb ... Unpacking libpython3.12-stdlib:i386 (3.12.7-3) ... Selecting previously unselected package python3.12. Preparing to unpack .../16-python3.12_3.12.7-3_i386.deb ... Unpacking python3.12 (3.12.7-3) ... Selecting previously unselected package libpython3-stdlib:i386. Preparing to unpack .../17-libpython3-stdlib_3.12.7-1_i386.deb ... Unpacking libpython3-stdlib:i386 (3.12.7-1) ... Setting up python3-minimal (3.12.7-1) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21360 files and directories currently installed.) Preparing to unpack .../000-python3_3.12.7-1_i386.deb ... Unpacking python3 (3.12.7-1) ... Selecting previously unselected package libpython3.13-minimal:i386. Preparing to unpack .../001-libpython3.13-minimal_3.13.0-2_i386.deb ... Unpacking libpython3.13-minimal:i386 (3.13.0-2) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../002-python3.13-minimal_3.13.0-2_i386.deb ... Unpacking python3.13-minimal (3.13.0-2) ... Selecting previously unselected package sgml-base. Preparing to unpack .../003-sgml-base_1.31_all.deb ... Unpacking sgml-base (1.31) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../004-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package openssl. Preparing to unpack .../005-openssl_3.3.2-2_i386.deb ... Unpacking openssl (3.3.2-2) ... Selecting previously unselected package ca-certificates. Preparing to unpack .../006-ca-certificates_20240203_all.deb ... Unpacking ca-certificates (20240203) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../007-libmagic-mgc_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:i386. Preparing to unpack .../008-libmagic1t64_1%3a5.45-3+b1_i386.deb ... Unpacking libmagic1t64:i386 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../009-file_1%3a5.45-3+b1_i386.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../010-gettext-base_0.22.5-2_i386.deb ... Unpacking gettext-base (0.22.5-2) ... Selecting previously unselected package libuchardet0:i386. Preparing to unpack .../011-libuchardet0_0.0.8-1+b2_i386.deb ... Unpacking libuchardet0:i386 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../012-groff-base_1.23.0-5_i386.deb ... Unpacking groff-base (1.23.0-5) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../013-bsdextrautils_2.40.2-11_i386.deb ... Unpacking bsdextrautils (2.40.2-11) ... Selecting previously unselected package libpipeline1:i386. Preparing to unpack .../014-libpipeline1_1.5.8-1_i386.deb ... Unpacking libpipeline1:i386 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../015-man-db_2.13.0-1_i386.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../016-m4_1.4.19-4_i386.deb ... Unpacking m4 (1.4.19-4) ... Selecting previously unselected package autoconf. Preparing to unpack .../017-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../018-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../019-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../020-autopoint_0.22.5-2_all.deb ... Unpacking autopoint (0.22.5-2) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../021-libdebhelper-perl_13.20_all.deb ... Unpacking libdebhelper-perl (13.20) ... Selecting previously unselected package libtool. Preparing to unpack .../022-libtool_2.4.7-8_all.deb ... Unpacking libtool (2.4.7-8) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../023-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../024-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../025-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../026-dh-strip-nondeterminism_1.14.0-1_all.deb ... Unpacking dh-strip-nondeterminism (1.14.0-1) ... Selecting previously unselected package libelf1t64:i386. Preparing to unpack .../027-libelf1t64_0.192-4_i386.deb ... Unpacking libelf1t64:i386 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../028-dwz_0.15-1+b1_i386.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libicu72:i386. Preparing to unpack .../029-libicu72_72.1-5+b1_i386.deb ... Unpacking libicu72:i386 (72.1-5+b1) ... Selecting previously unselected package libxml2:i386. Preparing to unpack .../030-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_i386.deb ... Unpacking libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package gettext. Preparing to unpack .../031-gettext_0.22.5-2_i386.deb ... Unpacking gettext (0.22.5-2) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../032-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../033-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../034-debhelper_13.20_all.deb ... Unpacking debhelper (13.20) ... Selecting previously unselected package python3-autocommand. Preparing to unpack .../035-python3-autocommand_2.2.2-3_all.deb ... Unpacking python3-autocommand (2.2.2-3) ... Selecting previously unselected package python3-more-itertools. Preparing to unpack .../036-python3-more-itertools_10.5.0-1_all.deb ... Unpacking python3-more-itertools (10.5.0-1) ... Selecting previously unselected package python3-typing-extensions. Preparing to unpack .../037-python3-typing-extensions_4.12.2-2_all.deb ... Unpacking python3-typing-extensions (4.12.2-2) ... Selecting previously unselected package python3-typeguard. Preparing to unpack .../038-python3-typeguard_4.4.1-1_all.deb ... Unpacking python3-typeguard (4.4.1-1) ... Selecting previously unselected package python3-inflect. Preparing to unpack .../039-python3-inflect_7.3.1-2_all.deb ... Unpacking python3-inflect (7.3.1-2) ... Selecting previously unselected package python3-jaraco.context. Preparing to unpack .../040-python3-jaraco.context_6.0.0-1_all.deb ... Unpacking python3-jaraco.context (6.0.0-1) ... Selecting previously unselected package python3-jaraco.functools. Preparing to unpack .../041-python3-jaraco.functools_4.1.0-1_all.deb ... Unpacking python3-jaraco.functools (4.1.0-1) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../042-python3-pkg-resources_75.2.0-1_all.deb ... Unpacking python3-pkg-resources (75.2.0-1) ... Selecting previously unselected package python3-jaraco.text. Preparing to unpack .../043-python3-jaraco.text_4.0.0-1_all.deb ... Unpacking python3-jaraco.text (4.0.0-1) ... Selecting previously unselected package python3-zipp. Preparing to unpack .../044-python3-zipp_3.21.0-1_all.deb ... Unpacking python3-zipp (3.21.0-1) ... Selecting previously unselected package python3-setuptools. Preparing to unpack .../045-python3-setuptools_75.2.0-1_all.deb ... Unpacking python3-setuptools (75.2.0-1) ... Selecting previously unselected package dh-python. Preparing to unpack .../046-dh-python_6.20241024_all.deb ... Unpacking dh-python (6.20241024) ... Selecting previously unselected package xml-core. Preparing to unpack .../047-xml-core_0.19_all.deb ... Unpacking xml-core (0.19) ... Selecting previously unselected package docutils-common. Preparing to unpack .../048-docutils-common_0.21.2+dfsg-2_all.deb ... Unpacking docutils-common (0.21.2+dfsg-2) ... Selecting previously unselected package python3-roman. Preparing to unpack .../049-python3-roman_4.2-1_all.deb ... Unpacking python3-roman (4.2-1) ... Selecting previously unselected package python3-docutils. Preparing to unpack .../050-python3-docutils_0.21.2+dfsg-2_all.deb ... Unpacking python3-docutils (0.21.2+dfsg-2) ... Selecting previously unselected package python3-certifi. Preparing to unpack .../051-python3-certifi_2024.8.30+dfsg-1_all.deb ... Unpacking python3-certifi (2024.8.30+dfsg-1) ... Selecting previously unselected package python3-charset-normalizer. Preparing to unpack .../052-python3-charset-normalizer_3.4.0-1+b1_i386.deb ... Unpacking python3-charset-normalizer (3.4.0-1+b1) ... Selecting previously unselected package python3-idna. Preparing to unpack .../053-python3-idna_3.8-2_all.deb ... Unpacking python3-idna (3.8-2) ... Selecting previously unselected package python3-urllib3. Preparing to unpack .../054-python3-urllib3_2.0.7-2_all.deb ... Unpacking python3-urllib3 (2.0.7-2) ... Selecting previously unselected package python3-chardet. Preparing to unpack .../055-python3-chardet_5.2.0+dfsg-1_all.deb ... Unpacking python3-chardet (5.2.0+dfsg-1) ... Selecting previously unselected package python3-requests. Preparing to unpack .../056-python3-requests_2.32.3+dfsg-1_all.deb ... Unpacking python3-requests (2.32.3+dfsg-1) ... Selecting previously unselected package python3-tomli-w. Preparing to unpack .../057-python3-tomli-w_1.0.0-2_all.deb ... Unpacking python3-tomli-w (1.0.0-2) ... Selecting previously unselected package flit. Preparing to unpack .../058-flit_3.9.0-2_all.deb ... Unpacking flit (3.9.0-2) ... Selecting previously unselected package libbrotli1:i386. Preparing to unpack .../059-libbrotli1_1.1.0-2+b6_i386.deb ... Unpacking libbrotli1:i386 (1.1.0-2+b6) ... Selecting previously unselected package libdeflate0:i386. Preparing to unpack .../060-libdeflate0_1.22-1_i386.deb ... Unpacking libdeflate0:i386 (1.22-1) ... Selecting previously unselected package libpng16-16t64:i386. Preparing to unpack .../061-libpng16-16t64_1.6.44-2_i386.deb ... Unpacking libpng16-16t64:i386 (1.6.44-2) ... Selecting previously unselected package libfreetype6:i386. Preparing to unpack .../062-libfreetype6_2.13.3+dfsg-1_i386.deb ... Unpacking libfreetype6:i386 (2.13.3+dfsg-1) ... Selecting previously unselected package libfribidi0:i386. Preparing to unpack .../063-libfribidi0_1.0.15-1_i386.deb ... Unpacking libfribidi0:i386 (1.0.15-1) ... Selecting previously unselected package libglib2.0-0t64:i386. Preparing to unpack .../064-libglib2.0-0t64_2.82.2-3_i386.deb ... Unpacking libglib2.0-0t64:i386 (2.82.2-3) ... Selecting previously unselected package libgraphite2-3:i386. Preparing to unpack .../065-libgraphite2-3_1.3.14-2+b1_i386.deb ... Unpacking libgraphite2-3:i386 (1.3.14-2+b1) ... Selecting previously unselected package libharfbuzz0b:i386. Preparing to unpack .../066-libharfbuzz0b_10.0.1-1_i386.deb ... Unpacking libharfbuzz0b:i386 (10.0.1-1) ... Selecting previously unselected package libimagequant0:i386. Preparing to unpack .../067-libimagequant0_2.18.0-1+b2_i386.deb ... Unpacking libimagequant0:i386 (2.18.0-1+b2) ... Selecting previously unselected package libjbig0:i386. Preparing to unpack .../068-libjbig0_2.1-6.1+b2_i386.deb ... Unpacking libjbig0:i386 (2.1-6.1+b2) ... Selecting previously unselected package libjpeg62-turbo:i386. Preparing to unpack .../069-libjpeg62-turbo_1%3a2.1.5-3+b1_i386.deb ... Unpacking libjpeg62-turbo:i386 (1:2.1.5-3+b1) ... Selecting previously unselected package libjs-jquery-isonscreen. Preparing to unpack .../070-libjs-jquery-isonscreen_1.2.0-1.1_all.deb ... Unpacking libjs-jquery-isonscreen (1.2.0-1.1) ... Selecting previously unselected package libjs-jquery-metadata. Preparing to unpack .../071-libjs-jquery-metadata_12-4_all.deb ... Unpacking libjs-jquery-metadata (12-4) ... Selecting previously unselected package libjs-jquery-tablesorter. Preparing to unpack .../072-libjs-jquery-tablesorter_1%3a2.31.3+dfsg1-4_all.deb ... Unpacking libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... Selecting previously unselected package libjs-jquery-throttle-debounce. Preparing to unpack .../073-libjs-jquery-throttle-debounce_1.1+dfsg.1-2_all.deb ... Unpacking libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... Selecting previously unselected package liblcms2-2:i386. Preparing to unpack .../074-liblcms2-2_2.16-2_i386.deb ... Unpacking liblcms2-2:i386 (2.16-2) ... Selecting previously unselected package liblerc4:i386. Preparing to unpack .../075-liblerc4_4.0.0+ds-5_i386.deb ... Unpacking liblerc4:i386 (4.0.0+ds-5) ... Selecting previously unselected package libopenjp2-7:i386. Preparing to unpack .../076-libopenjp2-7_2.5.0-2+b4_i386.deb ... Unpacking libopenjp2-7:i386 (2.5.0-2+b4) ... Selecting previously unselected package libpython3.13-stdlib:i386. Preparing to unpack .../077-libpython3.13-stdlib_3.13.0-2_i386.deb ... Unpacking libpython3.13-stdlib:i386 (3.13.0-2) ... Selecting previously unselected package libraqm0:i386. Preparing to unpack .../078-libraqm0_0.10.1-1+b2_i386.deb ... Unpacking libraqm0:i386 (0.10.1-1+b2) ... Selecting previously unselected package libsharpyuv0:i386. Preparing to unpack .../079-libsharpyuv0_1.4.0-0.1+b1_i386.deb ... Unpacking libsharpyuv0:i386 (1.4.0-0.1+b1) ... Selecting previously unselected package libwebp7:i386. Preparing to unpack .../080-libwebp7_1.4.0-0.1+b1_i386.deb ... Unpacking libwebp7:i386 (1.4.0-0.1+b1) ... Selecting previously unselected package libtiff6:i386. Preparing to unpack .../081-libtiff6_4.5.1+git230720-5_i386.deb ... Unpacking libtiff6:i386 (4.5.1+git230720-5) ... Selecting previously unselected package libwebpdemux2:i386. Preparing to unpack .../082-libwebpdemux2_1.4.0-0.1+b1_i386.deb ... Unpacking libwebpdemux2:i386 (1.4.0-0.1+b1) ... Selecting previously unselected package libwebpmux3:i386. Preparing to unpack .../083-libwebpmux3_1.4.0-0.1+b1_i386.deb ... Unpacking libwebpmux3:i386 (1.4.0-0.1+b1) ... Selecting previously unselected package libxau6:i386. Preparing to unpack .../084-libxau6_1%3a1.0.11-1_i386.deb ... Unpacking libxau6:i386 (1:1.0.11-1) ... Selecting previously unselected package libxdmcp6:i386. Preparing to unpack .../085-libxdmcp6_1%3a1.1.5-1_i386.deb ... Unpacking libxdmcp6:i386 (1:1.1.5-1) ... Selecting previously unselected package libxcb1:i386. Preparing to unpack .../086-libxcb1_1.17.0-2+b1_i386.deb ... Unpacking libxcb1:i386 (1.17.0-2+b1) ... Selecting previously unselected package python3-packaging. Preparing to unpack .../087-python3-packaging_24.2-1_all.deb ... Unpacking python3-packaging (24.2-1) ... Selecting previously unselected package python3-pyproject-hooks. Preparing to unpack .../088-python3-pyproject-hooks_1.2.0-1_all.deb ... Unpacking python3-pyproject-hooks (1.2.0-1) ... Selecting previously unselected package python3-toml. Preparing to unpack .../089-python3-toml_0.10.2-1_all.deb ... Unpacking python3-toml (0.10.2-1) ... Selecting previously unselected package python3-wheel. Preparing to unpack .../090-python3-wheel_0.45.0-1_all.deb ... Unpacking python3-wheel (0.45.0-1) ... Selecting previously unselected package python3-build. Preparing to unpack .../091-python3-build_1.2.2-1_all.deb ... Unpacking python3-build (1.2.2-1) ... Selecting previously unselected package python3-installer. Preparing to unpack .../092-python3-installer_0.7.0+dfsg1-3_all.deb ... Unpacking python3-installer (0.7.0+dfsg1-3) ... Selecting previously unselected package pybuild-plugin-pyproject. Preparing to unpack .../093-pybuild-plugin-pyproject_6.20241024_all.deb ... Unpacking pybuild-plugin-pyproject (6.20241024) ... Selecting previously unselected package python3.13. Preparing to unpack .../094-python3.13_3.13.0-2_i386.deb ... Unpacking python3.13 (3.13.0-2) ... Selecting previously unselected package python3-all. Preparing to unpack .../095-python3-all_3.12.7-1_i386.deb ... Unpacking python3-all (3.12.7-1) ... Selecting previously unselected package python3-coverage. Preparing to unpack .../096-python3-coverage_7.6.0+dfsg1-2+b1_i386.deb ... Unpacking python3-coverage (7.6.0+dfsg1-2+b1) ... Selecting previously unselected package python3-iniconfig. Preparing to unpack .../097-python3-iniconfig_1.1.1-2_all.deb ... Unpacking python3-iniconfig (1.1.1-2) ... Selecting previously unselected package python3-pil:i386. Preparing to unpack .../098-python3-pil_10.4.0-1+b1_i386.deb ... Unpacking python3-pil:i386 (10.4.0-1+b1) ... Selecting previously unselected package python3-pluggy. Preparing to unpack .../099-python3-pluggy_1.5.0-1_all.deb ... Unpacking python3-pluggy (1.5.0-1) ... Selecting previously unselected package python3-pytest. Preparing to unpack .../100-python3-pytest_8.3.3-1_all.deb ... Unpacking python3-pytest (8.3.3-1) ... Selecting previously unselected package python3-pytest-cov. Preparing to unpack .../101-python3-pytest-cov_5.0.0-1_all.deb ... Unpacking python3-pytest-cov (5.0.0-1) ... Setting up media-types (10.1.0) ... Setting up libpipeline1:i386 (1.5.8-1) ... Setting up libgraphite2-3:i386 (1.3.14-2+b1) ... Setting up liblcms2-2:i386 (2.16-2) ... Setting up libsharpyuv0:i386 (1.4.0-0.1+b1) ... Setting up libxau6:i386 (1:1.0.11-1) ... Setting up libxdmcp6:i386 (1:1.1.5-1) ... Setting up libkeyutils1:i386 (1.6.3-4) ... Setting up libxcb1:i386 (1.17.0-2+b1) ... Setting up libicu72:i386 (72.1-5+b1) ... Setting up liblerc4:i386 (4.0.0+ds-5) ... Setting up bsdextrautils (2.40.2-11) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libtirpc-common (1.3.4+ds-1.3) ... Setting up libdebhelper-perl (13.20) ... Setting up libbrotli1:i386 (1.1.0-2+b6) ... Setting up libmagic1t64:i386 (1:5.45-3+b1) ... Setting up libdeflate0:i386 (1.22-1) ... Setting up gettext-base (0.22.5-2) ... Setting up m4 (1.4.19-4) ... Setting up libcom-err2:i386 (1.47.1-1+b1) ... Setting up file (1:5.45-3+b1) ... Setting up libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... Setting up libjbig0:i386 (2.1-6.1+b2) ... Setting up libelf1t64:i386 (0.192-4) ... Setting up libkrb5support0:i386 (1.21.3-3) ... Setting up tzdata (2024b-3) ... Current default time zone: 'Etc/UTC' Local time is now: Thu Dec 25 21:10:23 UTC 2025. Universal Time is now: Thu Dec 25 21:10:23 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libpython3.13-minimal:i386 (3.13.0-2) ... Setting up autotools-dev (20220109.1) ... Setting up libglib2.0-0t64:i386 (2.82.2-3) ... No schema files found: doing nothing. Setting up libjpeg62-turbo:i386 (1:2.1.5-3+b1) ... Setting up libfribidi0:i386 (1.0.15-1) ... Setting up libimagequant0:i386 (2.18.0-1+b2) ... Setting up libpng16-16t64:i386 (1.6.44-2) ... Setting up autopoint (0.22.5-2) ... Setting up libk5crypto3:i386 (1.21.3-3) ... Setting up autoconf (2.72-3) ... Setting up libwebp7:i386 (1.4.0-0.1+b1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libtiff6:i386 (4.5.1+git230720-5) ... Setting up libuchardet0:i386 (0.0.8-1+b2) ... Setting up libopenjp2-7:i386 (2.5.0-2+b4) ... Setting up python3.13-minimal (3.13.0-2) ... Setting up netbase (6.4) ... Setting up sgml-base (1.31) ... Setting up libkrb5-3:i386 (1.21.3-3) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... Setting up openssl (3.3.2-2) ... Setting up libwebpmux3:i386 (1.4.0-0.1+b1) ... Setting up readline-common (8.2-5) ... Setting up libxml2:i386 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... Setting up gettext (0.22.5-2) ... Setting up libtool (2.4.7-8) ... Setting up libwebpdemux2:i386 (1.4.0-0.1+b1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 146 added, 0 removed; done. Setting up libfreetype6:i386 (2.13.3+dfsg-1) ... Setting up libjs-jquery-metadata (12-4) ... Setting up libjs-jquery-isonscreen (1.2.0-1.1) ... Setting up libgssapi-krb5-2:i386 (1.21.3-3) ... Setting up libreadline8t64:i386 (8.2-5) ... Setting up dh-strip-nondeterminism (1.14.0-1) ... Setting up libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... Setting up groff-base (1.23.0-5) ... Setting up xml-core (0.19) ... Setting up libharfbuzz0b:i386 (10.0.1-1) ... Setting up libpython3.13-stdlib:i386 (3.13.0-2) ... Setting up libtirpc3t64:i386 (1.3.4+ds-1.3+b1) ... Setting up python3.13 (3.13.0-2) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up libraqm0:i386 (0.10.1-1+b2) ... Setting up libnsl2:i386 (1.3.0-3+b3) ... Setting up libpython3.12-stdlib:i386 (3.12.7-3) ... Setting up python3.12 (3.12.7-3) ... Setting up debhelper (13.20) ... Setting up libpython3-stdlib:i386 (3.12.7-1) ... Setting up python3 (3.12.7-1) ... Setting up python3-zipp (3.21.0-1) ... Setting up python3-autocommand (2.2.2-3) ... Setting up python3-wheel (0.45.0-1) ... Setting up python3-pil:i386 (10.4.0-1+b1) ... Setting up python3-roman (4.2-1) ... Setting up python3-packaging (24.2-1) ... Setting up python3-pyproject-hooks (1.2.0-1) ... Setting up python3-certifi (2024.8.30+dfsg-1) ... Setting up python3-idna (3.8-2) ... Setting up python3-typing-extensions (4.12.2-2) ... Setting up python3-toml (0.10.2-1) ... Setting up python3-installer (0.7.0+dfsg1-3) ... Setting up python3-urllib3 (2.0.7-2) ... Setting up python3-pluggy (1.5.0-1) ... Setting up python3-build (1.2.2-1) ... Setting up python3-tomli-w (1.0.0-2) ... Setting up python3-more-itertools (10.5.0-1) ... Setting up python3-iniconfig (1.1.1-2) ... Setting up python3-jaraco.functools (4.1.0-1) ... Setting up python3-jaraco.context (6.0.0-1) ... Setting up python3-charset-normalizer (3.4.0-1+b1) ... Setting up python3-pytest (8.3.3-1) ... Setting up python3-typeguard (4.4.1-1) ... Setting up python3-all (3.12.7-1) ... Setting up python3-coverage (7.6.0+dfsg1-2+b1) ... Setting up python3-pytest-cov (5.0.0-1) ... Setting up python3-inflect (7.3.1-2) ... Setting up python3-jaraco.text (4.0.0-1) ... Setting up python3-pkg-resources (75.2.0-1) ... Setting up python3-setuptools (75.2.0-1) ... Setting up python3-chardet (5.2.0+dfsg-1) ... Setting up python3-requests (2.32.3+dfsg-1) ... Setting up dh-python (6.20241024) ... Setting up pybuild-plugin-pyproject (6.20241024) ... Processing triggers for libc-bin (2.40-3) ... Processing triggers for sgml-base (1.31) ... Setting up docutils-common (0.21.2+dfsg-2) ... Processing triggers for sgml-base (1.31) ... Setting up python3-docutils (0.21.2+dfsg-2) ... Setting up flit (3.9.0-2) ... Processing triggers for ca-certificates (20240203) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: Running cd /build/reproducible-path/pypdf2-2.12.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../pypdf2_2.12.1-4_source.changes dpkg-buildpackage: info: source package pypdf2 dpkg-buildpackage: info: source version 2.12.1-4 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Scott Kitterman dpkg-source --before-build . dpkg-buildpackage: info: host architecture i386 debian/rules clean py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions dh clean --with python3 --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild debian/rules override_dh_clean make[1]: Entering directory '/build/reproducible-path/pypdf2-2.12.1' py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions dh_clean rm -rf /build/reproducible-path/pypdf2-2.12.1/dist/ \ /build/reproducible-path/pypdf2-2.12.1/tests/pdf_cache/ make[1]: Leaving directory '/build/reproducible-path/pypdf2-2.12.1' debian/rules binary py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions dh binary --with python3 --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/pypdf2-2.12.1' py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions python3.13 -m build --wheel --no-isolation * Getting build dependencies for wheel... * Building wheel... Successfully built pypdf2-2.12.1-py3-none-any.whl python3.12 -m build --wheel --no-isolation * Getting build dependencies for wheel... * Building wheel... Successfully built pypdf2-2.12.1-py3-none-any.whl dh_auto_build I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/pypdf2-2.12.1/.pybuild/cpython3_3.13_pypdf2 * Building wheel... Successfully built pypdf2-2.12.1-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module I: pybuild plugin_pyproject:129: Building wheel for python3.12 with "build" module I: pybuild base:311: python3.12 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/pypdf2-2.12.1/.pybuild/cpython3_3.12_pypdf2 * Building wheel... Successfully built pypdf2-2.12.1-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module make[1]: Leaving directory '/build/reproducible-path/pypdf2-2.12.1' debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/pypdf2-2.12.1' py3versions: no X-Python3-Version in control file, using supported versions py3versions: no X-Python3-Version in control file, using supported versions pytest-3 tests --cov --cov-report term-missing -vv ============================= test session starts ============================== platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3 cachedir: .pytest_cache rootdir: /build/reproducible-path/pypdf2-2.12.1 configfile: pyproject.toml plugins: typeguard-4.4.1, cov-5.0.0 collecting ... collected 592 items tests/test_cmap.py::test_compute_space_width PASSED [ 0%] tests/test_cmap.py::test_parse_to_unicode_process_rg PASSED [ 0%] tests/test_cmap.py::test_parse_encoding_advanced_encoding_not_implemented PASSED [ 0%] tests/test_cmap.py::test_get_font_width_from_default PASSED [ 0%] tests/test_cmap.py::test_multiline_bfrange PASSED [ 0%] tests/test_cmap.py::test_bfchar_on_2_chars PASSED [ 1%] tests/test_cmap.py::test_ascii_charset PASSED [ 1%] tests/test_cmap.py::test_iss1370 PASSED [ 1%] tests/test_cmap.py::test_iss1379 PASSED [ 1%] tests/test_constants.py::test_slash_prefix PASSED [ 1%] tests/test_encryption.py::test_encryption[unencrypted.pdf-False] PASSED [ 1%] tests/test_encryption.py::test_encryption[r2-empty-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r3-empty-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r2-user-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r2-owner-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r3-user-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r4-user-password.pdf-False] PASSED [ 2%] tests/test_encryption.py::test_encryption[r4-owner-password.pdf-False] PASSED [ 3%] tests/test_encryption.py::test_encryption[r4-aes-user-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r5-empty-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r5-user-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r5-owner-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r6-empty-password.pdf-True] PASSED [ 3%] tests/test_encryption.py::test_encryption[r6-user-password.pdf-True] PASSED [ 4%] tests/test_encryption.py::test_encryption[r6-owner-password.pdf-True] PASSED [ 4%] tests/test_encryption.py::test_both_password[r6-both-passwords.pdf-foo-bar] SKIPPED [ 4%] tests/test_encryption.py::test_get_page_of_encrypted_file_new_algorithm[crazyones-encrypted-256.pdf-password0] SKIPPED [ 4%] tests/test_encryption.py::test_get_page_of_encrypted_file_new_algorithm[crazyones-encrypted-256.pdf-password1] SKIPPED [ 4%] tests/test_encryption.py::test_encryption_merge[names0] SKIPPED (No pycryptodome) [ 4%] tests/test_encryption.py::test_encrypt_decrypt_class[CryptRC4] PASSED [ 5%] tests/test_encryption.py::test_decrypt_not_decrypted_pdf PASSED [ 5%] tests/test_encryption.py::test_generate_values PASSED [ 5%] tests/test_filters.py::test_FlateDecode[1-abcdefghijklmnopqrstuvwxyz] PASSED [ 5%] tests/test_filters.py::test_FlateDecode[1-ABCDEFGHIJKLMNOPQRSTUVWXYZ] PASSED [ 5%] tests/test_filters.py::test_FlateDecode[1-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] PASSED [ 5%] tests/test_filters.py::test_FlateDecode[1-0123456789] PASSED [ 6%] tests/test_filters.py::test_FlateDecode[1-0123456789abcdefABCDEF] PASSED [ 6%] tests/test_filters.py::test_FlateDecode[1-!"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~] PASSED [ 6%] tests/test_filters.py::test_FlateDecode[1- \t\n\r\x0b\x0c] PASSED [ 6%] tests/test_filters.py::test_FlateDecode_unsupported_predictor PASSED [ 6%] tests/test_filters.py::test_FlateDecode_decompress_array_params[params0] PASSED [ 6%] tests/test_filters.py::test_FlateDecode_decompress_array_params[params1] PASSED [ 7%] tests/test_filters.py::test_FlateDecode_decompress_array_params[a] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[empty] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[ascii_lowercase] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[ascii_uppercase] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[ascii_letters] PASSED [ 7%] tests/test_filters.py::test_ASCIIHexDecode[digits] PASSED [ 8%] tests/test_filters.py::test_ASCIIHexDecode[digits_whitespace] PASSED [ 8%] tests/test_filters.py::test_ASCIIHexDecode[hexdigits] PASSED [ 8%] tests/test_filters.py::test_ASCIIHexDecode[whitespace] PASSED [ 8%] tests/test_filters.py::test_ASCIIHexDecode_no_eod PASSED [ 8%] tests/test_filters.py::test_ASCII85Decode_with_overflow XFAIL [ 8%] tests/test_filters.py::test_ASCII85Decode_five_zero_bytes PASSED [ 9%] tests/test_filters.py::test_CCITParameters PASSED [ 9%] tests/test_filters.py::test_CCIT_get_parameters[None-0] PASSED [ 9%] tests/test_filters.py::test_CCIT_get_parameters[parameters1-1] PASSED [ 9%] tests/test_filters.py::test_CCITTFaxDecode PASSED [ 9%] tests/test_filters.py::test_decompress_zlib_error PASSED [ 9%] tests/test_filters.py::test_lzw_decode_neg1 PASSED [ 10%] tests/test_filters.py::test_issue_399 PASSED [ 10%] tests/test_filters.py::test_image_without_imagemagic PASSED [ 10%] tests/test_generic.py::test_float_object_exception PASSED [ 10%] tests/test_generic.py::test_number_object_exception PASSED [ 10%] tests/test_generic.py::test_number_object_no_exception PASSED [ 10%] tests/test_generic.py::test_create_string_object_exception PASSED [ 11%] tests/test_generic.py::test_boolean_object[true-true-4] PASSED [ 11%] tests/test_generic.py::test_boolean_object[false-false-5] PASSED [ 11%] tests/test_generic.py::test_boolean_object_write PASSED [ 11%] tests/test_generic.py::test_boolean_eq PASSED [ 11%] tests/test_generic.py::test_boolean_object_exception PASSED [ 11%] tests/test_generic.py::test_array_object_exception PASSED [ 12%] tests/test_generic.py::test_null_object_exception PASSED [ 12%] tests/test_generic.py::test_indirect_object_premature[] PASSED [ 12%] tests/test_generic.py::test_indirect_object_premature[False] PASSED [ 12%] tests/test_generic.py::test_indirect_object_premature[foo ] PASSED [ 12%] tests/test_generic.py::test_indirect_object_premature[foo ] PASSED [ 13%] tests/test_generic.py::test_indirect_object_premature[foo bar] PASSED [ 13%] tests/test_generic.py::test_readHexStringFromStream PASSED [ 13%] tests/test_generic.py::test_readHexStringFromStream_exception PASSED [ 13%] tests/test_generic.py::test_readStringFromStream_exception PASSED [ 13%] tests/test_generic.py::test_readStringFromStream_not_in_escapedict_no_digit PASSED [ 13%] tests/test_generic.py::test_readStringFromStream_multichar_eol PASSED [ 14%] tests/test_generic.py::test_readStringFromStream_multichar_eol2 PASSED [ 14%] tests/test_generic.py::test_readStringFromStream_excape_digit PASSED [ 14%] tests/test_generic.py::test_readStringFromStream_excape_digit2 PASSED [ 14%] tests/test_generic.py::test_NameObject PASSED [ 14%] tests/test_generic.py::test_destination_fit_r PASSED [ 14%] tests/test_generic.py::test_destination_fit_v PASSED [ 15%] tests/test_generic.py::test_destination_exception PASSED [ 15%] tests/test_generic.py::test_outline_item_write_to_stream PASSED [ 15%] tests/test_generic.py::test_encode_pdfdocencoding_keyerror PASSED [ 15%] tests/test_generic.py::test_read_object_comment_exception PASSED [ 15%] tests/test_generic.py::test_read_object_empty PASSED [ 15%] tests/test_generic.py::test_read_object_invalid PASSED [ 16%] tests/test_generic.py::test_read_object_comment PASSED [ 16%] tests/test_generic.py::test_ByteStringObject PASSED [ 16%] tests/test_generic.py::test_DictionaryObject_key_is_no_pdfobject PASSED [ 16%] tests/test_generic.py::test_DictionaryObject_xmp_meta PASSED [ 16%] tests/test_generic.py::test_DictionaryObject_value_is_no_pdfobject PASSED [ 16%] tests/test_generic.py::test_DictionaryObject_setdefault_key_is_no_pdfobject PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_setdefault_value_is_no_pdfobject PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_setdefault_value PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_read_from_stream PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_read_from_stream_broken PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_read_from_stream_unexpected_end PASSED [ 17%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_no_newline PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_no_stream_length[True] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_no_stream_length[False] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[True-6-False] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[True-10-False] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[True-4-True] PASSED [ 18%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[False-6-False] PASSED [ 19%] tests/test_generic.py::test_DictionaryObject_read_from_stream_stream_stream_valid[False-10-False] PASSED [ 19%] tests/test_generic.py::test_RectangleObject PASSED [ 19%] tests/test_generic.py::test_TextStringObject_exc PASSED [ 19%] tests/test_generic.py::test_TextStringObject_autodetect_utf16 PASSED [ 19%] tests/test_generic.py::test_remove_child_not_in_tree PASSED [ 19%] tests/test_generic.py::test_remove_child_not_in_that_tree PASSED [ 20%] tests/test_generic.py::test_remove_child_not_found_in_tree PASSED [ 20%] tests/test_generic.py::test_remove_child_found_in_tree PASSED [ 20%] tests/test_generic.py::test_remove_child_in_tree PASSED [ 20%] tests/test_generic.py::test_dict_read_from_stream PASSED [ 20%] tests/test_generic.py::test_parse_content_stream_peek_percentage PASSED [ 20%] tests/test_generic.py::test_read_inline_image_no_has_q PASSED [ 21%] tests/test_generic.py::test_read_inline_image_loc_neg_1 PASSED [ 21%] tests/test_generic.py::test_text_string_write_to_stream PASSED [ 21%] tests/test_generic.py::test_name_object_read_from_stream_unicode_error PASSED [ 21%] tests/test_generic.py::test_bool_repr PASSED [ 21%] tests/test_generic.py::test_issue_997 PASSED [ 21%] tests/test_generic.py::test_annotation_builder_free_text PASSED [ 22%] tests/test_generic.py::test_annotation_builder_line PASSED [ 22%] tests/test_generic.py::test_annotation_builder_square PASSED [ 22%] tests/test_generic.py::test_annotation_builder_link PASSED [ 22%] tests/test_generic.py::test_annotation_builder_text PASSED [ 22%] tests/test_generic.py::test_CheckboxRadioButtonAttributes_opt PASSED [ 22%] tests/test_generic.py::test_name_object_invalid_decode PASSED [ 23%] tests/test_generic.py::test_indirect_object_invalid_read PASSED [ 23%] tests/test_generic.py::test_create_string_object_force PASSED [ 23%] tests/test_generic.py::test_float_object_decimal_to_string[0.000000-0] PASSED [ 23%] tests/test_generic.py::test_float_object_decimal_to_string[0.0-0_0] PASSED [ 23%] tests/test_generic.py::test_float_object_decimal_to_string[1.0-1_0] PASSED [ 23%] tests/test_generic.py::test_float_object_decimal_to_string[0.123000-0.123] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[0.000123000-0.000123] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[0.0-0_1] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[0-0] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[1-1] PASSED [ 24%] tests/test_generic.py::test_float_object_decimal_to_string[1.0-1_1] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[1.01-1.01] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[1.010-1.01] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[0000.0000-0] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[0.10101010-0.1010101] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[50000000000-50000000000] PASSED [ 25%] tests/test_generic.py::test_float_object_decimal_to_string[99900000000000000123-99900000000000000123] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[99900000000000000123.456000-99900000000000000123.456] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[0.00000000000000000000123-0.00000000000000000000123] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[0.00000000000000000000123000-0.00000000000000000000123] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[50032481330523882508234.00000000000000000000123000-50032481330523882508234.00000000000000000000123] PASSED [ 26%] tests/test_generic.py::test_float_object_decimal_to_string[928457298572093487502198745102973402987412908743.75249875981374981237498213740000-928457298572093487502198745102973402987412908743.7524987598137498123749821374] PASSED [ 26%] tests/test_javascript.py::test_add_js PASSED [ 27%] tests/test_javascript.py::test_added_js PASSED [ 27%] tests/test_merger.py::test_merger_operations_by_traditional_usage PASSED [ 27%] tests/test_merger.py::test_merger_operations_by_semi_traditional_usage PASSED [ 27%] tests/test_merger.py::test_merger_operation_by_new_usage PASSED [ 27%] tests/test_merger.py::test_merge_page_exception PASSED [ 27%] tests/test_merger.py::test_merge_page_tuple PASSED [ 28%] tests/test_merger.py::test_merge_write_closed_fh PASSED [ 28%] tests/test_merger.py::test_trim_outline_list PASSED [ 28%] tests/test_merger.py::test_zoom PASSED [ 28%] tests/test_merger.py::test_zoom_xyz_no_left PASSED [ 28%] tests/test_merger.py::test_outline_item PASSED [ 28%] tests/test_merger.py::test_trim_outline PASSED [ 29%] tests/test_merger.py::test1 PASSED [ 29%] tests/test_merger.py::test_sweep_recursion1 PASSED [ 29%] tests/test_merger.py::test_sweep_recursion2[https://corpora.tika.apache.org/base/docs/govdocs1/924/924794.pdf-tika-924794.pdf] PASSED [ 29%] tests/test_merger.py::test_sweep_recursion2[https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf-tika-924546.pdf] PASSED [ 29%] tests/test_merger.py::test_sweep_indirect_list_newobj_is_None PASSED [ 29%] tests/test_merger.py::test_iss1145 PASSED [ 30%] tests/test_merger.py::test_deprecate_bookmark_decorator_warning PASSED [ 30%] tests/test_merger.py::test_deprecate_bookmark_decorator_output PASSED [ 30%] tests/test_merger.py::test_iss1344 PASSED [ 30%] tests/test_page.py::test_read[001-trivial/minimal-document.pdf] PASSED [ 30%] tests/test_page.py::test_read[002-trivial-libre-office-writer/002-trivial-libre-office-writer.pdf] PASSED [ 30%] tests/test_page.py::test_read[003-pdflatex-image/pdflatex-image.pdf] PASSED [ 31%] tests/test_page.py::test_read[004-pdflatex-4-pages/pdflatex-4-pages.pdf] PASSED [ 31%] tests/test_page.py::test_read[006-pdflatex-outline/pdflatex-outline.pdf] PASSED [ 31%] tests/test_page.py::test_read[007-imagemagick-images/imagemagick-ASCII85Decode.pdf] PASSED [ 31%] tests/test_page.py::test_read[007-imagemagick-images/imagemagick-images.pdf] PASSED [ 31%] tests/test_page.py::test_read[007-imagemagick-images/imagemagick-CCITTFaxDecode.pdf] PASSED [ 31%] tests/test_page.py::test_read[007-imagemagick-images/imagemagick-lzw.pdf] PASSED [ 32%] tests/test_page.py::test_read[008-reportlab-inline-image/inline-image.pdf] PASSED [ 32%] tests/test_page.py::test_read[009-pdflatex-geotopo/GeoTopo.pdf] PASSED [ 32%] tests/test_page.py::test_read[010-pdflatex-forms/pdflatex-forms.pdf] PASSED [ 32%] tests/test_page.py::test_read[011-google-doc-document/google-doc-document.pdf] PASSED [ 32%] tests/test_page.py::test_read[012-libreoffice-form/libreoffice-form.pdf] PASSED [ 32%] tests/test_page.py::test_read[013-reportlab-overlay/reportlab-overlay.pdf] PASSED [ 33%] tests/test_page.py::test_read[014-outlines/mistitled_outlines_example.pdf] PASSED [ 33%] tests/test_page.py::test_read[015-arabic/habibi.pdf] PASSED [ 33%] tests/test_page.py::test_read[015-arabic/habibi-oneline-cmap.pdf] PASSED [ 33%] tests/test_page.py::test_read[016-libre-office-link/libre-office-link.pdf] PASSED [ 33%] tests/test_page.py::test_read[017-unreadable-meta-data/unreadablemetadata.pdf] PASSED [ 33%] tests/test_page.py::test_read[018-base64-image/base64image.pdf] PASSED [ 34%] tests/test_page.py::test_read[019-grayscale-image/grayscale-image.pdf] PASSED [ 34%] tests/test_page.py::test_page_operations[crazyones.pdf-None] PASSED [ 34%] tests/test_page.py::test_page_operations[attachment.pdf-None] PASSED [ 34%] tests/test_page.py::test_page_operations[libreoffice-writer-password.pdf-openpassword] PASSED [ 34%] tests/test_page.py::test_page_operations[imagemagick-images.pdf-None] PASSED [ 34%] tests/test_page.py::test_page_operations[imagemagick-lzw.pdf-None] PASSED [ 35%] tests/test_page.py::test_page_operations[reportlab-inline-image.pdf-None] PASSED [ 35%] tests/test_page.py::test_page_operations[https://arxiv.org/pdf/2201.00029.pdf-None] PASSED [ 35%] tests/test_page.py::test_transformation_equivalence PASSED [ 35%] tests/test_page.py::test_get_user_unit_property PASSED [ 35%] tests/test_page.py::test_page_transformations PASSED [ 35%] tests/test_page.py::test_compress_content_streams[pdf_path0-None] PASSED [ 36%] tests/test_page.py::test_compress_content_streams[pdf_path1-None] PASSED [ 36%] tests/test_page.py::test_compress_content_streams[pdf_path2-None] PASSED [ 36%] tests/test_page.py::test_compress_content_streams[pdf_path3-openpassword] PASSED [ 36%] tests/test_page.py::test_page_properties PASSED [ 36%] tests/test_page.py::test_page_rotation PASSED [ 36%] tests/test_page.py::test_page_scale PASSED [ 37%] tests/test_page.py::test_add_transformation_on_page_without_contents PASSED [ 37%] tests/test_page.py::test_multi_language PASSED [ 37%] tests/test_page.py::test_extract_text_single_quote_op PASSED [ 37%] tests/test_page.py::test_no_ressources_on_text_extract PASSED [ 37%] tests/test_page.py::test_iss_1142 PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf[https://corpora.tika.apache.org/base/docs/govdocs1/964/964029.pdf-tika-964029.pdf] PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf[https://corpora.tika.apache.org/base/docs/govdocs1/932/932446.pdf-tika-932446.pdf] PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf[https://github.com/py-pdf/PyPDF2/files/9150656/ST.2019.PDF-iss_1134.pdf] PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf[https://github.com/py-pdf/PyPDF2/files/9432350/Work.Flow.From.Check.to.QA.pdf-WFCA.pdf] PASSED [ 38%] tests/test_page.py::test_extract_text_page_pdf_impossible_decode_xform PASSED [ 38%] tests/test_page.py::test_extract_text_operator_t_star PASSED [ 39%] tests/test_page.py::test_extract_text_visitor_callbacks PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path0-None-embedded0-unembedded0] PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path1-None-embedded1-unembedded1] PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path2-openpassword-embedded2-unembedded2] PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path3-None-embedded3-unembedded3] PASSED [ 39%] tests/test_page.py::test_get_fonts[pdf_path4-None-embedded4-unembedded4] PASSED [ 40%] tests/test_page.py::test_get_fonts[pdf_path5-None-embedded5-unembedded5] PASSED [ 40%] tests/test_page.py::test_annotation_getter PASSED [ 40%] tests/test_page.py::test_annotation_setter PASSED [ 40%] tests/test_page.py::test_text_extraction_issue_1091 XFAIL (#1091) [ 40%] tests/test_page.py::test_empyt_password_1088 PASSED [ 40%] tests/test_page.py::test_arab_text_extraction XFAIL (#1088 / #1126) [ 41%] tests/test_page.py::test_read_link_annotation PASSED [ 41%] tests/test_page.py::test_no_resources PASSED [ 41%] tests/test_pagerange.py::test_equality PASSED [ 41%] tests/test_pagerange.py::test_str[page_range0-0:5] PASSED [ 41%] tests/test_pagerange.py::test_str[page_range1-0:5:2] PASSED [ 41%] tests/test_pagerange.py::test_str[-1--1:] PASSED [ 42%] tests/test_pagerange.py::test_str[0-0] PASSED [ 42%] tests/test_pagerange.py::test_repr[page_range0-PageRange('0:5')] PASSED [ 42%] tests/test_pagerange.py::test_repr[page_range1-PageRange('0:5:2')] PASSED [ 42%] tests/test_pagerange.py::test_equality_other_objectc PASSED [ 42%] tests/test_pagerange.py::test_idempotency PASSED [ 42%] tests/test_pagerange.py::test_str_init[42-expected0] PASSED [ 43%] tests/test_pagerange.py::test_str_init[1:2-expected1] PASSED [ 43%] tests/test_pagerange.py::test_str_init_error PASSED [ 43%] tests/test_pagerange.py::test_parse_filename_page_ranges[params0-expected0] PASSED [ 43%] tests/test_pagerange.py::test_parse_filename_page_ranges[params1-expected1] PASSED [ 43%] tests/test_pagerange.py::test_parse_filename_page_ranges_err PASSED [ 43%] tests/test_pagerange.py::test_addition[a0-b0-expected0] PASSED [ 44%] tests/test_pagerange.py::test_addition[a1-b1-expected1] PASSED [ 44%] tests/test_pagerange.py::test_addition[a2-b2-expected2] PASSED [ 44%] tests/test_pagerange.py::test_addition_gap[a0-b0] PASSED [ 44%] tests/test_pagerange.py::test_addition_gap[a1-b1] PASSED [ 44%] tests/test_pagerange.py::test_addition_non_page_range PASSED [ 44%] tests/test_pagerange.py::test_addition_stride PASSED [ 45%] tests/test_papersizes.py::test_din_a0 PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions0] PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions1] PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions2] PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions3] PASSED [ 45%] tests/test_papersizes.py::test_din_a_ratio[dimensions4] PASSED [ 46%] tests/test_papersizes.py::test_din_a_ratio[dimensions5] PASSED [ 46%] tests/test_papersizes.py::test_din_a_ratio[dimensions6] PASSED [ 46%] tests/test_papersizes.py::test_din_a_ratio[dimensions7] PASSED [ 46%] tests/test_papersizes.py::test_din_a_ratio[dimensions8] PASSED [ 46%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a0-dimensions_b0] PASSED [ 46%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a1-dimensions_b1] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a2-dimensions_b2] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a3-dimensions_b3] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a4-dimensions_b4] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a5-dimensions_b5] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a6-dimensions_b6] PASSED [ 47%] tests/test_papersizes.py::test_din_a_doubling[dimensions_a7-dimensions_b7] PASSED [ 48%] tests/test_reader.py::test_get_num_pages[selenium-PyPDF2-issue-177.pdf-1] PASSED [ 48%] tests/test_reader.py::test_get_num_pages[pdflatex-outline.pdf-4] PASSED [ 48%] tests/test_reader.py::test_read_metadata[crazyones] PASSED [ 48%] tests/test_reader.py::test_read_metadata[metadata] PASSED [ 48%] tests/test_reader.py::test_broken_meta_data[pdf_path0] PASSED [ 48%] tests/test_reader.py::test_get_annotations[src0] PASSED [ 49%] tests/test_reader.py::test_get_annotations[src1] PASSED [ 49%] tests/test_reader.py::test_get_attachments[src0-1] PASSED [ 49%] tests/test_reader.py::test_get_attachments[src1-0] PASSED [ 49%] tests/test_reader.py::test_get_outline[src0-9] PASSED [ 49%] tests/test_reader.py::test_get_outline[src1-0] PASSED [ 50%] tests/test_reader.py::test_get_images[pdflatex-outline.pdf-expected_images0] PASSED [ 50%] tests/test_reader.py::test_get_images[crazyones.pdf-expected_images1] PASSED [ 50%] tests/test_reader.py::test_get_images[git.pdf-expected_images2] PASSED [ 50%] tests/test_reader.py::test_get_images[imagemagick-lzw.pdf-expected_images3] XFAIL [ 50%] tests/test_reader.py::test_get_images[imagemagick-ASCII85Decode.pdf-expected_images4] XFAIL [ 50%] tests/test_reader.py::test_get_images[imagemagick-CCITTFaxDecode.pdf-expected_images5] PASSED [ 51%] tests/test_reader.py::test_get_images[src6-expected_images6] PASSED [ 51%] tests/test_reader.py::test_get_images_raw[True-False--1-False-warning_msgs0] PASSED [ 51%] tests/test_reader.py::test_get_images_raw[True-True--1-True-] FAILED [ 51%] tests/test_reader.py::test_get_images_raw[False-False--1-False-warning_msgs2] PASSED [ 51%] tests/test_reader.py::test_get_images_raw[False-True--1-False-warning_msgs3] PASSED [ 51%] tests/test_reader.py::test_get_images_raw[True-False-0-True-] FAILED [ 52%] tests/test_reader.py::test_get_images_raw[True-True-0-True-] FAILED [ 52%] tests/test_reader.py::test_get_images_raw[False-False-0-False-warning_msgs6] PASSED [ 52%] tests/test_reader.py::test_get_images_raw[False-True-0-False-warning_msgs7] PASSED [ 52%] tests/test_reader.py::test_issue297 PASSED [ 52%] tests/test_reader.py::test_get_page_of_encrypted_file[encrypted-file.pdf-test-False0] PASSED [ 52%] tests/test_reader.py::test_get_page_of_encrypted_file[encrypted-file.pdf-test-False1] PASSED [ 53%] tests/test_reader.py::test_get_page_of_encrypted_file[encrypted-file.pdf-qwerty-True0] PASSED [ 53%] tests/test_reader.py::test_get_page_of_encrypted_file[encrypted-file.pdf-qwerty-True1] PASSED [ 53%] tests/test_reader.py::test_get_form[form.pdf-expected0-expected_get_fields0] PASSED [ 53%] tests/test_reader.py::test_get_form[form_acrobatReader.pdf-expected1-expected_get_fields1] PASSED [ 53%] tests/test_reader.py::test_get_form[form_evince.pdf-expected2-expected_get_fields2] PASSED [ 53%] tests/test_reader.py::test_get_form[crazyones.pdf-expected3-None] PASSED [ 54%] tests/test_reader.py::test_get_page_number[form.pdf-0] PASSED [ 54%] tests/test_reader.py::test_get_page_number[pdflatex-outline.pdf-2] PASSED [ 54%] tests/test_reader.py::test_get_page_layout[form.pdf-None] PASSED [ 54%] tests/test_reader.py::test_get_page_layout[AutoCad_Simple.pdf-/SinglePage] PASSED [ 54%] tests/test_reader.py::test_get_page_mode[form.pdf-/UseNone] PASSED [ 54%] tests/test_reader.py::test_get_page_mode[crazyones.pdf-None] PASSED [ 55%] tests/test_reader.py::test_read_empty PASSED [ 55%] tests/test_reader.py::test_read_malformed_header PASSED [ 55%] tests/test_reader.py::test_read_malformed_body PASSED [ 55%] tests/test_reader.py::test_read_prev_0_trailer FAILED [ 55%] tests/test_reader.py::test_read_missing_startxref PASSED [ 55%] tests/test_reader.py::test_read_unknown_zero_pages FAILED [ 56%] tests/test_reader.py::test_read_encrypted_without_decryption PASSED [ 56%] tests/test_reader.py::test_get_destination_page_number PASSED [ 56%] tests/test_reader.py::test_do_not_get_stuck_on_large_files_without_start_xref PASSED [ 56%] tests/test_reader.py::test_decrypt_when_no_id PASSED [ 56%] tests/test_reader.py::test_reader_properties PASSED [ 56%] tests/test_reader.py::test_issue604[True] FAILED [ 57%] tests/test_reader.py::test_issue604[False] PASSED [ 57%] tests/test_reader.py::test_decode_permissions PASSED [ 57%] tests/test_reader.py::test_pages_attribute PASSED [ 57%] tests/test_reader.py::test_convert_to_int PASSED [ 57%] tests/test_reader.py::test_convert_to_int_error PASSED [ 57%] tests/test_reader.py::test_convertToInt_deprecated PASSED [ 58%] tests/test_reader.py::test_iss925 PASSED [ 58%] tests/test_reader.py::test_get_object PASSED [ 58%] tests/test_reader.py::test_extract_text_hello_world PASSED [ 58%] tests/test_reader.py::test_read_path PASSED [ 58%] tests/test_reader.py::test_read_not_binary_mode PASSED [ 58%] tests/test_reader.py::test_read_form_416 SKIPPED (No pycryptodome) [ 59%] tests/test_reader.py::test_extract_text_xref_issue_2 PASSED [ 59%] tests/test_reader.py::test_extract_text_xref_issue_3 PASSED [ 59%] tests/test_reader.py::test_extract_text_pdf15 PASSED [ 59%] tests/test_reader.py::test_extract_text_xref_table_21_bytes_clrf PASSED [ 59%] tests/test_reader.py::test_get_fields PASSED [ 59%] tests/test_reader.py::test_get_fields_read_else_block PASSED [ 60%] tests/test_reader.py::test_get_fields_read_else_block2 PASSED [ 60%] tests/test_reader.py::test_get_fields_read_else_block3 PASSED [ 60%] tests/test_reader.py::test_metadata_is_none PASSED [ 60%] tests/test_reader.py::test_get_fields_read_write_report PASSED [ 60%] tests/test_reader.py::test_xfa[src0] PASSED [ 60%] tests/test_reader.py::test_xfa[src1] PASSED [ 61%] tests/test_reader.py::test_xfa_non_empty PASSED [ 61%] tests/test_reader.py::test_header[src0-%PDF-1.5] PASSED [ 61%] tests/test_reader.py::test_header[src1-%PDF-1.5] PASSED [ 61%] tests/test_reader.py::test_outline_color PASSED [ 61%] tests/test_reader.py::test_outline_font_format PASSED [ 61%] tests/test_reader.py::test_outline_title_issue_1121 PASSED [ 62%] tests/test_reader.py::test_outline_count PASSED [ 62%] tests/test_reader.py::test_outline_missing_title PASSED [ 62%] tests/test_reader.py::test_named_destination PASSED [ 62%] tests/test_reader.py::test_outline_with_missing_named_destination PASSED [ 62%] tests/test_reader.py::test_outline_with_empty_action PASSED [ 63%] tests/test_reader.py::test_outline_with_invalid_destinations PASSED [ 63%] tests/test_reader.py::test_PdfReaderMultipleDefinitions PASSED [ 63%] tests/test_reader.py::test_wrong_password_error PASSED [ 63%] tests/test_reader.py::test_get_page_number_by_indirect PASSED [ 63%] tests/test_reader.py::test_corrupted_xref_table PASSED [ 63%] tests/test_reader.py::test_reader PASSED [ 64%] tests/test_reader.py::test_zeroing_xref PASSED [ 64%] tests/test_reader.py::test_thread PASSED [ 64%] tests/test_reader.py::test_build_outline_item PASSED [ 64%] tests/test_security.py::test_alg32_metadata_encrypt PASSED [ 64%] tests/test_security.py::test_alg32_no_metadata_encrypt PASSED [ 64%] tests/test_utils.py::test_skip_over_whitespace[stream0-False] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream1-False] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream2-True] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream3-True] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream4-True] PASSED [ 65%] tests/test_utils.py::test_skip_over_whitespace[stream5-True] PASSED [ 65%] tests/test_utils.py::test_read_until_whitespace PASSED [ 66%] tests/test_utils.py::test_skip_over_comment[stream0-] PASSED [ 66%] tests/test_utils.py::test_skip_over_comment[stream1-] PASSED [ 66%] tests/test_utils.py::test_skip_over_comment[stream2- ] PASSED [ 66%] tests/test_utils.py::test_skip_over_comment[stream3-bar] PASSED [ 66%] tests/test_utils.py::test_read_until_regex_premature_ending_raise PASSED [ 66%] tests/test_utils.py::test_read_until_regex_premature_ending_name PASSED [ 67%] tests/test_utils.py::test_matrix_multiply[a0-b0-expected0] PASSED [ 67%] tests/test_utils.py::test_matrix_multiply[a1-b1-expected1] PASSED [ 67%] tests/test_utils.py::test_matrix_multiply[a2-b2-expected2] PASSED [ 67%] tests/test_utils.py::test_mark_location PASSED [ 67%] tests/test_utils.py::test_hex_str PASSED [ 67%] tests/test_utils.py::test_b PASSED [ 68%] tests/test_utils.py::test_deprecate_no_replacement PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[0-0-0-0] PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[1-0-0-1] PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[0-1-0-1] PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[0-0-1-0] PASSED [ 68%] tests/test_utils.py::test_paeth_predictor[1-2-3-1] PASSED [ 69%] tests/test_utils.py::test_paeth_predictor[2-1-3-1] PASSED [ 69%] tests/test_utils.py::test_paeth_predictor[1-3-2-2] PASSED [ 69%] tests/test_utils.py::test_paeth_predictor[3-1-2-2] PASSED [ 69%] tests/test_utils.py::test_paeth_predictor[3-2-1-3] PASSED [ 69%] tests/test_utils.py::test_read_block_backwards_errs[-0-1] PASSED [ 69%] tests/test_utils.py::test_read_block_backwards_errs[a-0-1] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards_errs[abc-0-10] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-1-0--1] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-1-1-a-0] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-2-1-b-1] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-2-2-ab-0] PASSED [ 70%] tests/test_utils.py::test_read_block_backwards[abc-3-1-c-2] PASSED [ 71%] tests/test_utils.py::test_read_block_backwards[abc-3-2-bc-1] PASSED [ 71%] tests/test_utils.py::test_read_block_backwards[abc-3-3-abc-0] PASSED [ 71%] tests/test_utils.py::test_read_block_backwards_at_start PASSED [ 71%] tests/test_utils.py::test_read_previous_line[0] PASSED [ 71%] tests/test_utils.py::test_read_previous_line[1] PASSED [ 71%] tests/test_utils.py::test_read_previous_line[2] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[3] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[4] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[5] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[6] PASSED [ 72%] tests/test_utils.py::test_read_previous_line[7] PASSED [ 72%] tests/test_utils.py::test_read_previous_line2 PASSED [ 73%] tests/test_utils.py::test_get_max_pdf_version_header PASSED [ 73%] tests/test_utils.py::test_read_block_backwards_exception PASSED [ 73%] tests/test_utils.py::test_deprecate_bookmark PASSED [ 73%] tests/test_utils.py::test_escapedcode_followed_by_int PASSED [ 73%] tests/test_utils.py::test_human_readable_bytes[123-123 Byte] PASSED [ 73%] tests/test_utils.py::test_human_readable_bytes[1234-1.2 kB] PASSED [ 74%] tests/test_utils.py::test_human_readable_bytes[123456-123.5 kB] PASSED [ 74%] tests/test_utils.py::test_human_readable_bytes[1234567-1.2 MB] PASSED [ 74%] tests/test_utils.py::test_human_readable_bytes[1234567890-1.2 GB] PASSED [ 74%] tests/test_utils.py::test_human_readable_bytes[1234567890000-1234.6 GB] PASSED [ 74%] tests/test_utils.py::test_file PASSED [ 75%] tests/test_workflows.py::test_basic_features PASSED [ 75%] tests/test_workflows.py::test_dropdown_items PASSED [ 75%] tests/test_workflows.py::test_PdfReaderFileLoad PASSED [ 75%] tests/test_workflows.py::test_PdfReaderJpegImage PASSED [ 75%] tests/test_workflows.py::test_decrypt PASSED [ 75%] tests/test_workflows.py::test_text_extraction_encrypted PASSED [ 76%] tests/test_workflows.py::test_rotate[0] PASSED [ 76%] tests/test_workflows.py::test_rotate[90] PASSED [ 76%] tests/test_workflows.py::test_rotate[180] PASSED [ 76%] tests/test_workflows.py::test_rotate[270] PASSED [ 76%] tests/test_workflows.py::test_rotate[360] PASSED [ 76%] tests/test_workflows.py::test_rotate[-90] PASSED [ 77%] tests/test_workflows.py::test_rotate_45 PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00214.pdf-pages0] PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/sample-files/raw/main/009-pdflatex-geotopo/GeoTopo.pdf-pages1] PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00151.pdf-pages2] PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/1707.09725.pdf-pages3] PASSED [ 77%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00021.pdf-pages4] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00037.pdf-pages5] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00069.pdf-pages6] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00178.pdf-pages7] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00201.pdf-pages8] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/1602.06541.pdf-pages9] PASSED [ 78%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00200.pdf-pages10] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00022.pdf-pages11] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/2201.00029.pdf-pages12] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/9174594/2017.pdf-pages13] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/9175966/2015._pb_decode_pg0.pdf-pages14] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://arxiv.org/pdf/1601.03642.pdf-pages15] PASSED [ 79%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/3796761/17343_2008_Order_09-Jan-2019.pdf-pages16] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/8884471/ssi_manwaring.pdf-pages17] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/8884469/999092.pdf-pages18] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-file:///build/reproducible-path/pypdf2-2.12.1/resources/test Orient.pdf-pages19] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/8884470/fdocuments.in_sweet-fundamentals-of-crystallography.pdf-pages20] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://github.com/py-pdf/PyPDF2/files/8884493/998167.pdf-pages21] PASSED [ 80%] tests/test_workflows.py::test_extract_textbench[True-https://corpora.tika.apache.org/base/docs/govdocs1/971/971703.pdf-pages22] PASSED [ 81%] tests/test_workflows.py::test_extract_textbench[True-https://corpora.tika.apache.org/base/docs/govdocs1/989/989691.pdf-pages23] PASSED [ 81%] tests/test_workflows.py::test_orientations PASSED [ 81%] tests/test_workflows.py::test_overlay[resources/crazyones.pdf-sample-files/013-reportlab-overlay/reportlab-overlay.pdf] PASSED [ 81%] tests/test_workflows.py::test_overlay[https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf-sample-files/013-reportlab-overlay/reportlab-overlay.pdf] PASSED [ 81%] tests/test_workflows.py::test_merge_with_warning[https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf-tika-924546.pdf] PASSED [ 81%] tests/test_workflows.py::test_merge[https://corpora.tika.apache.org/base/docs/govdocs1/980/980613.pdf-tika-980613.pdf] PASSED [ 82%] tests/test_workflows.py::test_get_metadata[https://corpora.tika.apache.org/base/docs/govdocs1/935/935996.pdf-tika-935996.pdf] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/938/938702.pdf-tika-938702.pdf-False-None] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/942/942358.pdf-tika-942358.pdf-False-None] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/911/911260.pdf-tika-911260.pdf-False-None] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/992/992472.pdf-tika-992472.pdf-False-None] PASSED [ 82%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/978/978477.pdf-tika-978477.pdf-False-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/960/960317.pdf-tika-960317.pdf-False-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/930/930513.pdf-tika-930513.pdf-False-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/918/918113.pdf-tika-918113.pdf-True-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/940/940704.pdf-tika-940704.pdf-True-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/976/976488.pdf-tika-976488.pdf-True-None] PASSED [ 83%] tests/test_workflows.py::test_extract_text[https://corpora.tika.apache.org/base/docs/govdocs1/948/948176.pdf-tika-948176.pdf-True-None] PASSED [ 84%] tests/test_workflows.py::test_compress_raised[https://corpora.tika.apache.org/base/docs/govdocs1/938/938702.pdf-tika-938702.pdf] PASSED [ 84%] tests/test_workflows.py::test_compress_raised[https://corpora.tika.apache.org/base/docs/govdocs1/957/957304.pdf-tika-957304.pdf] PASSED [ 84%] tests/test_workflows.py::test_compress[https://corpora.tika.apache.org/base/docs/govdocs1/915/915194.pdf-tika-915194.pdf-False] PASSED [ 84%] tests/test_workflows.py::test_compress[https://corpora.tika.apache.org/base/docs/govdocs1/950/950337.pdf-tika-950337.pdf-False] PASSED [ 84%] tests/test_workflows.py::test_compress[https://corpora.tika.apache.org/base/docs/govdocs1/962/962292.pdf-tika-962292.pdf-True] PASSED [ 84%] tests/test_workflows.py::test_get_fields_warns[https://corpora.tika.apache.org/base/docs/govdocs1/961/961883.pdf-tika-961883.pdf] PASSED [ 85%] tests/test_workflows.py::test_get_fields_no_warning[https://corpora.tika.apache.org/base/docs/govdocs1/942/942050.pdf-tika-942050.pdf] PASSED [ 85%] tests/test_workflows.py::test_scale_rectangle_indirect_object PASSED [ 85%] tests/test_workflows.py::test_merge_output PASSED [ 85%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/994/994636.pdf-tika-994636.pdf] PASSED [ 85%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/952/952133.pdf-tika-952133.pdf] PASSED [ 85%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/914/914568.pdf-tika-914568.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/952/952016.pdf-tika-952016.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/965/965118.pdf-tika-952016.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/959/959184.pdf-tika-959184.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/958/958496.pdf-tika-958496.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/972/972174.pdf-tika-972174.pdf] PASSED [ 86%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/972/972243.pdf-tika-972243.pdf] PASSED [ 87%] tests/test_workflows.py::test_image_extraction[https://corpora.tika.apache.org/base/docs/govdocs1/969/969502.pdf-tika-969502.pdf] PASSED [ 87%] tests/test_workflows.py::test_image_extraction[https://arxiv.org/pdf/2201.00214.pdf-arxiv-2201.00214.pdf] PASSED [ 87%] tests/test_workflows.py::test_image_extraction_strict PASSED [ 87%] tests/test_workflows.py::test_image_extraction2[https://corpora.tika.apache.org/base/docs/govdocs1/977/977609.pdf-tika-977609.pdf] PASSED [ 87%] tests/test_workflows.py::test_get_outline[https://corpora.tika.apache.org/base/docs/govdocs1/918/918137.pdf-tika-918137.pdf] PASSED [ 88%] tests/test_workflows.py::test_get_outline[https://unglueit-files.s3.amazonaws.com/ebf/7552c42e9280b4476e59e77acc0bc812.pdf-7552c42e9280b4476e59e77acc0bc812.pdf] PASSED [ 88%] tests/test_workflows.py::test_get_xfa[https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf-tika-935981.pdf] PASSED [ 88%] tests/test_workflows.py::test_get_xfa[https://corpora.tika.apache.org/base/docs/govdocs1/937/937334.pdf-tika-937334.pdf] PASSED [ 88%] tests/test_workflows.py::test_get_fonts[https://corpora.tika.apache.org/base/docs/govdocs1/988/988698.pdf-tika-988698.pdf-False] PASSED [ 88%] tests/test_workflows.py::test_get_fonts[https://corpora.tika.apache.org/base/docs/govdocs1/914/914133.pdf-tika-988698.pdf-False] PASSED [ 88%] tests/test_workflows.py::test_get_fonts[https://corpora.tika.apache.org/base/docs/govdocs1/912/912552.pdf-tika-912552.pdf-False] PASSED [ 89%] tests/test_workflows.py::test_get_fonts[https://corpora.tika.apache.org/base/docs/govdocs1/914/914102.pdf-tika-914102.pdf-True] PASSED [ 89%] tests/test_workflows.py::test_get_xmp[https://corpora.tika.apache.org/base/docs/govdocs1/942/942303.pdf-tika-942303.pdf-True] PASSED [ 89%] tests/test_workflows.py::test_get_xmp[https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf-tika-935981.pdf-True] PASSED [ 89%] tests/test_workflows.py::test_get_xmp[https://corpora.tika.apache.org/base/docs/govdocs1/967/967399.pdf-tika-967399.pdf-True] PASSED [ 89%] tests/test_workflows.py::test_get_xmp[https://corpora.tika.apache.org/base/docs/govdocs1/935/935981.pdf-tika-935981.pdf-False] PASSED [ 89%] tests/test_workflows.py::test_tounicode_is_identity PASSED [ 90%] tests/test_writer.py::test_writer_exception_non_binary PASSED [ 90%] tests/test_writer.py::test_writer_clone PASSED [ 90%] tests/test_writer.py::test_writer_operations_by_traditional_usage[dont_commit_writer.pdf-True] PASSED [ 90%] tests/test_writer.py::test_writer_operations_by_traditional_usage[write_data_here1-True] PASSED [ 90%] tests/test_writer.py::test_writer_operations_by_traditional_usage[write_data_here2-False] PASSED [ 90%] tests/test_writer.py::test_writer_operations_by_semi_traditional_usage[dont_commit_writer.pdf-True] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_traditional_usage[write_data_here1-True] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_traditional_usage[write_data_here2-False] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_new_traditional_usage[dont_commit_writer.pdf-True] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_new_traditional_usage[write_data_here1-True] PASSED [ 91%] tests/test_writer.py::test_writer_operations_by_semi_new_traditional_usage[write_data_here2-False] PASSED [ 91%] tests/test_writer.py::test_writer_operation_by_new_usage[dont_commit_writer.pdf-True] PASSED [ 92%] tests/test_writer.py::test_writer_operation_by_new_usage[write_data_here1-True] PASSED [ 92%] tests/test_writer.py::test_writer_operation_by_new_usage[write_data_here2-False] PASSED [ 92%] tests/test_writer.py::test_remove_images[side-by-side-subfig.pdf-False] PASSED [ 92%] tests/test_writer.py::test_remove_images[reportlab-inline-image.pdf-True] PASSED [ 92%] tests/test_writer.py::test_remove_text[side-by-side-subfig.pdf-False] PASSED [ 92%] tests/test_writer.py::test_remove_text[side-by-side-subfig.pdf-True] PASSED [ 93%] tests/test_writer.py::test_remove_text[reportlab-inline-image.pdf-False] PASSED [ 93%] tests/test_writer.py::test_remove_text[reportlab-inline-image.pdf-True] PASSED [ 93%] tests/test_writer.py::test_remove_text_all_operators[False] PASSED [ 93%] tests/test_writer.py::test_remove_text_all_operators[True] PASSED [ 93%] tests/test_writer.py::test_write_metadata PASSED [ 93%] tests/test_writer.py::test_fill_form PASSED [ 94%] tests/test_writer.py::test_encrypt[True-userpwd-ownerpwd] PASSED [ 94%] tests/test_writer.py::test_encrypt[False-userpwd-ownerpwd] PASSED [ 94%] tests/test_writer.py::test_add_outline_item PASSED [ 94%] tests/test_writer.py::test_add_named_destination PASSED [ 94%] tests/test_writer.py::test_add_uri PASSED [ 94%] tests/test_writer.py::test_add_link PASSED [ 95%] tests/test_writer.py::test_io_streams PASSED [ 95%] tests/test_writer.py::test_regression_issue670 PASSED [ 95%] tests/test_writer.py::test_issue301 PASSED [ 95%] tests/test_writer.py::test_append_pages_from_reader_append PASSED [ 95%] tests/test_writer.py::test_sweep_indirect_references_nullobject_exception PASSED [ 95%] tests/test_writer.py::test_write_outline_item_on_page_fitv PASSED [ 96%] tests/test_writer.py::test_pdf_header PASSED [ 96%] tests/test_writer.py::test_write_dict_stream_object PASSED [ 96%] tests/test_writer.py::test_add_single_annotation PASSED [ 96%] tests/test_writer.py::test_deprecate_bookmark_decorator PASSED [ 96%] tests/test_writer.py::test_colors_in_outline_item PASSED [ 96%] tests/test_writer.py::test_write_empty_stream PASSED [ 97%] tests/test_writer.py::test_startup_dest PASSED [ 97%] tests/test_writer.py::test_threads_empty PASSED [ 97%] tests/test_xmp.py::test_read_xmp[src0-True] PASSED [ 97%] tests/test_xmp.py::test_read_xmp[src1-False] PASSED [ 97%] tests/test_xmp.py::test_regression_issue774 PASSED [ 97%] tests/test_xmp.py::test_regression_issue914 PASSED [ 98%] tests/test_xmp.py::test_identity[a] PASSED [ 98%] tests/test_xmp.py::test_identity[42] PASSED [ 98%] tests/test_xmp.py::test_identity[3.141] PASSED [ 98%] tests/test_xmp.py::test_identity[False] PASSED [ 98%] tests/test_xmp.py::test_identity[True] PASSED [ 98%] tests/test_xmp.py::test_xmpmm[https://corpora.tika.apache.org/base/docs/govdocs1/955/955562.pdf-tika-955562.pdf-uuid:ca96e032-c2af-49bd-a71c-95889bafbf1d] PASSED [ 99%] tests/test_xmp.py::test_dc_description PASSED [ 99%] tests/test_xmp.py::test_dc_creator PASSED [ 99%] tests/test_xmp.py::test_custom_properties PASSED [ 99%] tests/test_xmp.py::test_dc_subject PASSED [ 99%] tests/test_xmp.py::test_issue585 PASSED [100%] =================================== FAILURES =================================== ___________________ test_get_images_raw[True-True--1-True-] ____________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf574d180>, strict = True with_prev_0 = True, startx_correction = -1, should_fail = True warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > PdfReader(pdf_stream, strict=strict) tests/test_reader.py:316: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:317: in __init__ self.read(stream) PyPDF2/_reader.py:1420: in read self._read_xref_tables_and_trailers(stream, startxref, xref_issue_nr) PyPDF2/_reader.py:1641: in _read_xref_tables_and_trailers startxref = self._read_xref_other_error(stream, startxref) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = <_io.BytesIO object at 0xf47b7438>, startxref = 0 def _read_xref_other_error( self, stream: StreamType, startxref: int ) -> Optional[int]: # some PDFs have /Prev=0 in the trailer, instead of no /Prev if startxref == 0: if self.strict: > raise PdfReadError( "/Prev=0 in the trailer (try opening with strict=False)" ) E PyPDF2.errors.PdfReadError: /Prev=0 in the trailer (try opening with strict=False) PyPDF2/_reader.py:1674: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf574d180>, strict = True with_prev_0 = True, startx_correction = -1, should_fail = True warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:315: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset WARNING PyPDF2._reader:_utils.py:375 Xref table not zero-indexed. ID numbers for objects will be corrected. ___________________ test_get_images_raw[True-False-0-True-] ____________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf47fda80>, strict = True with_prev_0 = False, startx_correction = 0, should_fail = True warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > PdfReader(pdf_stream, strict=strict) tests/test_reader.py:316: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:317: in __init__ self.read(stream) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = <_io.BytesIO object at 0xf47b92a8> def read(self, stream: StreamType) -> None: self._basic_validation(stream) self._find_eof_marker(stream) startxref = self._find_startxref_pos(stream) # check and eventually correct the startxref only in not strict xref_issue_nr = self._get_xref_issues(stream, startxref) if xref_issue_nr != 0: if self.strict and xref_issue_nr: > raise PdfReadError("Broken xref table") E PyPDF2.errors.PdfReadError: Broken xref table PyPDF2/_reader.py:1416: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf47fda80>, strict = True with_prev_0 = False, startx_correction = 0, should_fail = True warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:315: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset ____________________ test_get_images_raw[True-True-0-True-] ____________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf4d82ae0>, strict = True with_prev_0 = True, startx_correction = 0, should_fail = True, warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > PdfReader(pdf_stream, strict=strict) tests/test_reader.py:316: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:317: in __init__ self.read(stream) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = <_io.BytesIO object at 0xf5747d20> def read(self, stream: StreamType) -> None: self._basic_validation(stream) self._find_eof_marker(stream) startxref = self._find_startxref_pos(stream) # check and eventually correct the startxref only in not strict xref_issue_nr = self._get_xref_issues(stream, startxref) if xref_issue_nr != 0: if self.strict and xref_issue_nr: > raise PdfReadError("Broken xref table") E PyPDF2.errors.PdfReadError: Broken xref table PyPDF2/_reader.py:1416: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf4d82ae0>, strict = True with_prev_0 = True, startx_correction = 0, should_fail = True, warning_msgs = '' @pytest.mark.parametrize( ("strict", "with_prev_0", "startx_correction", "should_fail", "warning_msgs"), [ ( True, False, -1, False, [ "startxref on same line as offset", "Xref table not zero-indexed. " "ID numbers for objects will be corrected.", ], ), # all nominal => no fail (True, True, -1, True, ""), # Prev=0 => fail expected ( False, False, -1, False, ["startxref on same line as offset"], ), ( False, True, -1, False, [ "startxref on same line as offset", "/Prev=0 in the trailer - assuming there is no previous xref table", ], ), # Prev =0 => no strict so tolerant (True, False, 0, True, ""), # error on startxref, in strict => fail expected (True, True, 0, True, ""), ( False, False, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), # error on startxref, but no strict => xref rebuilt,no fail ( False, True, 0, False, ["startxref on same line as offset", "incorrect startxref pointer(1)"], ), ], ) def test_get_images_raw( caplog, strict, with_prev_0, startx_correction, should_fail, warning_msgs ): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", # startx_correction should be -1 due to double % at the beginning # inducing an error on startxref computation pdf_data.find(b"xref") + startx_correction, ) pdf_stream = io.BytesIO(pdf_data) if should_fail: > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:315: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset ___________________________ test_read_prev_0_trailer ___________________________ def test_read_prev_0_trailer(): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) with_prev_0 = True pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", pdf_data.find(b"xref") - 1, ) pdf_stream = io.BytesIO(pdf_data) with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > PdfReader(pdf_stream, strict=True) tests/test_reader.py:508: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:317: in __init__ self.read(stream) PyPDF2/_reader.py:1420: in read self._read_xref_tables_and_trailers(stream, startxref, xref_issue_nr) PyPDF2/_reader.py:1641: in _read_xref_tables_and_trailers startxref = self._read_xref_other_error(stream, startxref) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = <_io.BytesIO object at 0xf647e848>, startxref = 0 def _read_xref_other_error( self, stream: StreamType, startxref: int ) -> Optional[int]: # some PDFs have /Prev=0 in the trailer, instead of no /Prev if startxref == 0: if self.strict: > raise PdfReadError( "/Prev=0 in the trailer (try opening with strict=False)" ) E PyPDF2.errors.PdfReadError: /Prev=0 in the trailer (try opening with strict=False) PyPDF2/_reader.py:1674: PdfReadError During handling of the above exception, another exception occurred: def test_read_prev_0_trailer(): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" b"5 0 obj << /Pages 1 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << %s/Root 5 0 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) with_prev_0 = True pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), b"/Prev 0 " if with_prev_0 else b"", pdf_data.find(b"xref") - 1, ) pdf_stream = io.BytesIO(pdf_data) > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:507: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset WARNING PyPDF2._reader:_utils.py:375 Xref table not zero-indexed. ID numbers for objects will be corrected. _________________________ test_read_unknown_zero_pages _________________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf4db41c8> def test_read_unknown_zero_pages(caplog): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" # Pages 0 0 is the key point: b"5 0 obj << /Pages 0 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << /Root 5 1 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), pdf_data.find(b"xref") - 1, ) pdf_stream = io.BytesIO(pdf_data) reader = PdfReader(pdf_stream, strict=True) warnings = [ "startxref on same line as offset", "Xref table not zero-indexed. ID numbers for objects will be corrected.", ] assert normalize_warnings(caplog.text) == warnings with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > len(reader.pages) tests/test_reader.py:585: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_page.py:2047: in __len__ return self.length_function() PyPDF2/_reader.py:446: in _get_num_pages self._flatten() PyPDF2/_reader.py:1097: in _flatten catalog = self.trailer[TK.ROOT].get_object() PyPDF2/generic/_data_structures.py:150: in __getitem__ return dict.__getitem__(self, key).get_object() PyPDF2/generic/_base.py:164: in get_object obj = self.pdf.get_object(self) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = indirect_reference = IndirectObject(5, 1, 4108009736) def get_object( self, indirect_reference: Union[int, IndirectObject] ) -> Optional[PdfObject]: if isinstance(indirect_reference, int): indirect_reference = IndirectObject(indirect_reference, 0, self) retval = self.cache_get_indirect_object( indirect_reference.generation, indirect_reference.idnum ) if retval is not None: return retval if ( indirect_reference.generation == 0 and indirect_reference.idnum in self.xref_objStm ): retval = self._get_object_from_stream(indirect_reference) # type: ignore elif ( indirect_reference.generation in self.xref and indirect_reference.idnum in self.xref[indirect_reference.generation] ): if self.xref_free_entry.get(indirect_reference.generation, {}).get( indirect_reference.idnum, False ): return NullObject() start = self.xref[indirect_reference.generation][indirect_reference.idnum] self.stream.seek(start, 0) try: idnum, generation = self.read_object_header(self.stream) except Exception: if hasattr(self.stream, "getbuffer"): buf = bytes(self.stream.getbuffer()) # type: ignore else: p = self.stream.tell() self.stream.seek(0, 0) buf = self.stream.read(-1) self.stream.seek(p, 0) m = re.search( rf"\s{indirect_reference.idnum}\s+{indirect_reference.generation}\s+obj".encode(), buf, ) if m is not None: logger_warning( f"Object ID {indirect_reference.idnum},{indirect_reference.generation} ref repaired", __name__, ) self.xref[indirect_reference.generation][ indirect_reference.idnum ] = (m.start(0) + 1) self.stream.seek(m.start(0) + 1) idnum, generation = self.read_object_header(self.stream) else: idnum = -1 # exception will be raised below if idnum != indirect_reference.idnum and self.xref_index: # Xref table probably had bad indexes due to not being zero-indexed if self.strict: raise PdfReadError( f"Expected object ID ({indirect_reference.idnum} {indirect_reference.generation}) " f"does not match actual ({idnum} {generation}); " "xref table not zero-indexed." ) # xref table is corrected in non-strict mode elif idnum != indirect_reference.idnum and self.strict: # some other problem raise PdfReadError( f"Expected object ID ({indirect_reference.idnum} " f"{indirect_reference.generation}) does not match actual " f"({idnum} {generation})." ) if self.strict: assert generation == indirect_reference.generation retval = read_object(self.stream, self) # type: ignore # override encryption is used for the /Encrypt dictionary if not self._override_encryption and self._encryption is not None: # if we don't have the encryption key: if not self._encryption.is_decrypted(): raise FileNotDecryptedError("File has not been decrypted") # otherwise, decrypt here... retval = cast(PdfObject, retval) retval = self._encryption.decrypt_object( retval, indirect_reference.idnum, indirect_reference.generation ) else: if hasattr(self.stream, "getbuffer"): buf = bytes(self.stream.getbuffer()) # type: ignore else: p = self.stream.tell() self.stream.seek(0, 0) buf = self.stream.read(-1) self.stream.seek(p, 0) m = re.search( rf"\s{indirect_reference.idnum}\s+{indirect_reference.generation}\s+obj".encode(), buf, ) if m is not None: logger_warning( f"Object {indirect_reference.idnum} {indirect_reference.generation} found", __name__, ) if indirect_reference.generation not in self.xref: self.xref[indirect_reference.generation] = {} self.xref[indirect_reference.generation][indirect_reference.idnum] = ( m.start(0) + 1 ) self.stream.seek(m.end(0) + 1) skip_over_whitespace(self.stream) self.stream.seek(-1, 1) retval = read_object(self.stream, self) # type: ignore # override encryption is used for the /Encrypt dictionary if not self._override_encryption and self._encryption is not None: # if we don't have the encryption key: if not self._encryption.is_decrypted(): raise FileNotDecryptedError("File has not been decrypted") # otherwise, decrypt here... retval = cast(PdfObject, retval) retval = self._encryption.decrypt_object( retval, indirect_reference.idnum, indirect_reference.generation ) else: logger_warning( f"Object {indirect_reference.idnum} {indirect_reference.generation} not defined.", __name__, ) if self.strict: > raise PdfReadError("Could not find object.") E PyPDF2.errors.PdfReadError: Could not find object. PyPDF2/_reader.py:1311: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf4db41c8> def test_read_unknown_zero_pages(caplog): pdf_data = ( b"%%PDF-1.7\n" b"1 0 obj << /Count 1 /Kids [4 0 R] /Type /Pages >> endobj\n" b"2 0 obj << >> endobj\n" b"3 0 obj << >> endobj\n" b"4 0 obj << /Contents 3 0 R /CropBox [0.0 0.0 2550.0 3508.0]" b" /MediaBox [0.0 0.0 2550.0 3508.0] /Parent 1 0 R" b" /Resources << /Font << >> >>" b" /Rotate 0 /Type /Page >> endobj\n" # Pages 0 0 is the key point: b"5 0 obj << /Pages 0 0 R /Type /Catalog >> endobj\n" b"xref 1 5\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"%010d 00000 n\n" b"trailer << /Root 5 1 R /Size 6 >>\n" b"startxref %d\n" b"%%%%EOF" ) pdf_data = pdf_data % ( pdf_data.find(b"1 0 obj"), pdf_data.find(b"2 0 obj"), pdf_data.find(b"3 0 obj"), pdf_data.find(b"4 0 obj"), pdf_data.find(b"5 0 obj"), pdf_data.find(b"xref") - 1, ) pdf_stream = io.BytesIO(pdf_data) reader = PdfReader(pdf_stream, strict=True) warnings = [ "startxref on same line as offset", "Xref table not zero-indexed. ID numbers for objects will be corrected.", ] assert normalize_warnings(caplog.text) == warnings > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:584: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 startxref on same line as offset WARNING PyPDF2._reader:_utils.py:375 Xref table not zero-indexed. ID numbers for objects will be corrected. WARNING PyPDF2._reader:_utils.py:375 Object 5 1 not defined. _____________________________ test_issue604[True] ______________________________ caplog = <_pytest.logging.LogCaptureFixture object at 0xf4e94300>, strict = True @pytest.mark.parametrize( "strict", [True, False], ) def test_issue604(caplog, strict): """Test with invalid destinations""" # todo with open(RESOURCE_ROOT / "issue-604.pdf", "rb") as f: pdf = None outline = None if strict: pdf = PdfReader(f, strict=strict) with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): > outline = pdf.outline tests/test_reader.py:664: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ PyPDF2/_reader.py:739: in outline return self._get_outline() PyPDF2/_reader.py:775: in _get_outline outline_obj = self._build_outline_item(node) PyPDF2/_reader.py:939: in _build_outline_item outline_item = self._build_destination(title, dest) PyPDF2/_reader.py:901: in _build_destination return Destination(title, page, typ, *array) # type: ignore _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = {'/Title': 'ms_Thyroid_2_2020_071520_watermarked.pdf', '/Page': NullObject, '/Type': 0} title = 'ms_Thyroid_2_2020_071520_watermarked.pdf', page = NullObject, typ = 0 args = (0, 1) def __init__( self, title: str, page: Union[NumberObject, IndirectObject, NullObject, DictionaryObject], typ: Union[str, NumberObject], *args: Any, # ZoomArgType ) -> None: DictionaryObject.__init__(self) self[NameObject("/Title")] = TextStringObject(title) self[NameObject("/Page")] = page self[NameObject("/Type")] = typ # from table 8.2 of the PDF 1.7 reference. if typ == "/XYZ": ( self[NameObject(TA.LEFT)], self[NameObject(TA.TOP)], self[NameObject("/Zoom")], ) = args elif typ == TF.FIT_R: ( self[NameObject(TA.LEFT)], self[NameObject(TA.BOTTOM)], self[NameObject(TA.RIGHT)], self[NameObject(TA.TOP)], ) = args elif typ in [TF.FIT_H, TF.FIT_BH]: try: # Prefered to be more robust not only to null parameters (self[NameObject(TA.TOP)],) = args except Exception: (self[NameObject(TA.TOP)],) = (NullObject(),) elif typ in [TF.FIT_V, TF.FIT_BV]: try: # Prefered to be more robust not only to null parameters (self[NameObject(TA.LEFT)],) = args except Exception: (self[NameObject(TA.LEFT)],) = (NullObject(),) elif typ in [TF.FIT, TF.FIT_B]: pass else: > raise PdfReadError(f"Unknown Destination Type: {typ!r}") E PyPDF2.errors.PdfReadError: Unknown Destination Type: 0 PyPDF2/generic/_data_structures.py:1089: PdfReadError During handling of the above exception, another exception occurred: caplog = <_pytest.logging.LogCaptureFixture object at 0xf4e94300>, strict = True @pytest.mark.parametrize( "strict", [True, False], ) def test_issue604(caplog, strict): """Test with invalid destinations""" # todo with open(RESOURCE_ROOT / "issue-604.pdf", "rb") as f: pdf = None outline = None if strict: pdf = PdfReader(f, strict=strict) > with pytest.raises(PdfReadError) as exc, pytest.warns(PdfReadWarning): E Failed: DID NOT WARN. No warnings of type (,) were emitted. E Emitted warnings: []. tests/test_reader.py:663: Failed ------------------------------ Captured log call ------------------------------- WARNING PyPDF2._reader:_utils.py:375 Unknown destination: ms_Thyroid_2_2020_071520_watermarked.pdf [0, 1] ---------- coverage: platform linux, python 3.12.7-final-0 ----------- Name Stmts Miss Branch BrPart Cover Missing -------------------------------------------------------------------------------- PyPDF2/__init__.py 9 0 0 0 100% PyPDF2/_cmap.py 231 41 114 13 81% 38, 43->42, 54-56, 120, 140-146, 150-157, 167-170, 211-212, 214, 282-295, 300-311, 364, 370, 378-382, 403 PyPDF2/_codecs/__init__.py 32 0 6 0 100% PyPDF2/_codecs/adobe_glyphs.py 6 0 2 0 100% PyPDF2/_codecs/pdfdoc.py 2 0 0 0 100% PyPDF2/_codecs/std.py 1 0 0 0 100% PyPDF2/_codecs/symbol.py 2 0 0 0 100% PyPDF2/_codecs/zapfding.py 2 0 0 0 100% PyPDF2/_encryption.py 371 101 140 8 73% 61-112, 144, 156, 159, 178, 298, 352-358, 537, 546, 562-570, 577-580, 590-593, 614-622, 641-651, 668-672, 768, 772, 780-781, 842-853, 879->881, 881->883, 883->886 PyPDF2/_merger.py 217 12 122 10 92% 481-485, 490, 505->511, 511->503, 534->538, 590, 617->602, 635, 770-777, 779 PyPDF2/_page.py 658 91 366 43 85% 121->125, 126, 407->406, 409->406, 532-538, 637-638, 641-642, 648->645, 650, 680->685, 686->715, 752-753, 1074-1113, 1122, 1141-1143, 1163->exit, 1164->1166, 1324, 1327-1328, 1329->1332, 1344->1352, 1346-1347, 1440-1441, 1446, 1462, 1464, 1466, 1471, 1486-1488, 1496-1497, 1519-1520, 1541-1542, 1579, 1589, 1608->exit, 1627->exit, 1630, 1642->exit, 1646->exit, 1649, 1661->exit, 1663->exit, 1665->exit, 1668, 1680->exit, 1682-1683, 1690-1691, 1693-1696, 1698-1699, 1714, 1719, 1726-1738, 1750, 1804->1809, 1864, 2092->2095 PyPDF2/_reader.py 858 128 410 41 83% 241, 368, 544, 625->609, 633, 686, 689->692, 708->702, 711-715, 763, 766->768, 776->780, 783->786, 811-815, 955-962, 965->977, 1102->1105, 1111->1113, 1114->exit, 1151, 1160-1173, 1176-1178, 1209, 1214-1237, 1240-1241, 1249, 1281-1302, 1350, 1389-1392, 1439-1440, 1482, 1489, 1521-1522, 1538-1562, 1606, 1613-1614, 1618-1626, 1632-1635, 1656-1657, 1689-1690, 1696-1697, 1705-1707, 1725, 1736-1739, 1763, 1766, 1827-1828, 1894, 1950-1963 PyPDF2/_security.py 78 2 24 0 98% 41-44 PyPDF2/_utils.py 189 2 76 1 99% 59-60, 274->276 PyPDF2/_version.py 1 0 0 0 100% PyPDF2/_writer.py 569 28 246 26 93% 224, 240->245, 269-270, 474->exit, 693, 697, 719-720, 949->946, 1086->1080, 1099, 1105-1110, 1206-1213, 1597->1600, 1608, 1610-1614, 1620, 1629, 1658->1660, 1664->1660, 1667->1660, 1672->1660, 1675->1660, 1726, 1989, 1992, 2028, 2032, 2134->2136, 2136->2138 PyPDF2/constants.py 278 0 8 0 100% PyPDF2/errors.py 21 0 0 0 100% PyPDF2/filters.py 334 53 178 21 81% 47-50, 73-74, 105->104, 117-123, 152, 161, 163-164, 168-182, 263, 295, 317, 395, 446->448, 448->451, 516, 522->550, 527, 535, 539-542, 569-570, 590->600, 605->609, 611, 632-643 PyPDF2/generic/__init__.py 12 0 0 0 100% PyPDF2/generic/_annotations.py 60 0 30 0 100% PyPDF2/generic/_base.py 217 2 64 0 99% 379-380 PyPDF2/generic/_data_structures.py 604 32 238 13 94% 170->173, 238, 254, 271-277, 283-289, 298, 304, 442->exit, 604-611, 700->698, 766, 770, 794-798, 823, 1079-1080, 1180 PyPDF2/generic/_outline.py 20 0 2 0 100% PyPDF2/generic/_rectangle.py 69 1 38 0 99% 33 PyPDF2/generic/_utils.py 99 0 50 0 100% PyPDF2/pagerange.py 61 0 28 0 100% PyPDF2/papersizes.py 14 0 0 0 100% PyPDF2/types.py 22 4 0 0 82% 8-9, 14-15 PyPDF2/xmp.py 215 60 78 11 64% 118, 121-126, 138-155, 164-179, 190, 192->198, 194, 198->200, 220-221, 235, 250->249, 253, 269->268, 273, 292->291, 500-519 -------------------------------------------------------------------------------- TOTAL 5252 557 2220 187 88% =========================== short test summary info ============================ FAILED tests/test_reader.py::test_get_images_raw[True-True--1-True-] - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_get_images_raw[True-False-0-True-] - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_get_images_raw[True-True-0-True-] - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_read_prev_0_trailer - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_read_unknown_zero_pages - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. FAILED tests/test_reader.py::test_issue604[True] - Failed: DID NOT WARN. No warnings of type (,) were emitted. Emitted warnings: []. ======== 6 failed, 576 passed, 5 skipped, 5 xfailed in 76.98s (0:01:16) ======== make[1]: *** [debian/rules:35: override_dh_auto_test] Error 1 make[1]: Leaving directory '/build/reproducible-path/pypdf2-2.12.1' make: *** [debian/rules:39: binary] Error 2 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 I: copying local configuration E: Failed autobuilding of package I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/122002 and its subdirectories pypdf2 failed to build from source. removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/i386/pypdf2_2.12.1-4.rbuild.log' removed '/var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/i386/pypdf2_2.12.1-4.rbuild.log.gz' removed '/var/lib/jenkins/userContent/reproducible/debian/logs/unstable/i386/pypdf2_2.12.1-4.build1.log.gz' Fri Nov 22 14:49:29 UTC 2024 W: No second build log, what happened? Compressing the 1st log... b1/build.log: 85.2% -- replaced with stdout INSERT 0 1 INSERT 0 1 DELETE 1 [2024-11-22 14:49:30] INFO: Starting at 2024-11-22 14:49:30.133885 [2024-11-22 14:49:30] INFO: Generating the pages of 1 package(s) [2024-11-22 14:49:30] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/amd64/pypdf2_2.12.1-4.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/amd64/pypdf2_2.12.1-4.diff.gz is missing [2024-11-22 14:49:30] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/arm64/pypdf2_2.12.1-4.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/arm64/pypdf2_2.12.1-4.diff.gz is missing [2024-11-22 14:49:30] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/armhf/pypdf2_2.12.1-4.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/armhf/pypdf2_2.12.1-4.diff.gz is missing [2024-11-22 14:49:30] CRITICAL: https://tests.reproducible-builds.org/debian/unstable/i386/pypdf2 didn't produce a buildlog, even though it has been built. [2024-11-22 14:49:30] INFO: Finished at 2024-11-22 14:49:30.559346, took: 0:00:00.425468 Fri Nov 22 14:49:30 UTC 2024 - successfully updated the database and updated https://tests.reproducible-builds.org/debian/rb-pkg/unstable/i386/pypdf2.html Starting cleanup. /var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/i386/pypdf2_2.12.1-4.rbuild.log: 84.4% -- replaced with /var/lib/jenkins/userContent/reproducible/debian/rbuild/unstable/i386/pypdf2_2.12.1-4.rbuild.log.gz [2024-11-22 14:49:30] INFO: Starting at 2024-11-22 14:49:30.959696 [2024-11-22 14:49:31] INFO: Generating the pages of 1 package(s) [2024-11-22 14:49:31] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/amd64/pypdf2_2.12.1-4.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/amd64/pypdf2_2.12.1-4.diff.gz is missing [2024-11-22 14:49:31] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/arm64/pypdf2_2.12.1-4.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/arm64/pypdf2_2.12.1-4.diff.gz is missing [2024-11-22 14:49:31] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/armhf/pypdf2_2.12.1-4.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/armhf/pypdf2_2.12.1-4.diff.gz is missing [2024-11-22 14:49:31] ERROR: Either /var/lib/jenkins/userContent/reproducible/debian/logs/unstable/i386/pypdf2_2.12.1-4.build2.log.gz or /var/lib/jenkins/userContent/reproducible/debian/logdiffs/unstable/i386/pypdf2_2.12.1-4.diff.gz is missing [2024-11-22 14:49:31] INFO: Finished at 2024-11-22 14:49:31.393962, took: 0:00:00.434272 All cleanup done. Fri Nov 22 14:49:31 UTC 2024 - total duration: 0h 2m 55s. Fri Nov 22 14:49:31 UTC 2024 - reproducible_build.sh stopped running as /tmp/jenkins-script-rfYorqON, removing. Finished with result: success Main processes terminated with: code=exited/status=0 Service runtime: 2min 56.609s CPU time consumed: 5.143s