0s autopkgtest [18:18:01]: starting date and time: 2025-10-18 18:18:01+0000 0s autopkgtest [18:18:01]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [18:18:01]: host juju-7f2275-prod-proposed-migration-environment-20; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.oxqtoz9j/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:python3-defaults --apt-upgrade fscacher --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=python3-defaults/3.13.7-2 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-s390x --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-20@bos03-s390x-10.secgroup --name adt-resolute-s390x-fscacher-20251018-181800-juju-7f2275-prod-proposed-migration-environment-20-032487ea-76d2-4638-9379-f6059b2118f8 --image adt/ubuntu-resolute-s390x-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-20 --net-id=net_prod-proposed-migration-s390x -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 4s Creating nova instance adt-resolute-s390x-fscacher-20251018-181800-juju-7f2275-prod-proposed-migration-environment-20-032487ea-76d2-4638-9379-f6059b2118f8 from image adt/ubuntu-resolute-s390x-server-20251018.img (UUID c47ab411-f9be-46ce-b861-20d934d06dba)... 60s autopkgtest [18:19:01]: testbed dpkg architecture: s390x 60s autopkgtest [18:19:01]: testbed apt version: 3.1.6ubuntu2 60s autopkgtest [18:19:01]: @@@@@@@@@@@@@@@@@@@@ test bed setup 60s autopkgtest [18:19:01]: testbed release detected to be: None 61s autopkgtest [18:19:02]: updating testbed package index (apt update) 61s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [83.3 kB] 62s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 62s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 62s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 62s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [16.7 kB] 62s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [456 kB] 62s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [50.7 kB] 62s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [5028 B] 62s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x Packages [92.8 kB] 62s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/restricted s390x Packages [940 B] 62s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/universe s390x Packages [314 kB] 62s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse s390x Packages [4660 B] 62s Fetched 1023 kB in 1s (861 kB/s) 63s Reading package lists... 64s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 64s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 64s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 64s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 64s Reading package lists... 64s Reading package lists... 65s Building dependency tree... 65s Reading state information... 65s Calculating upgrade... 65s The following packages will be upgraded: 65s apt gir1.2-girepository-2.0 libapt-pkg7.0 libgirepository-1.0-1 65s libpython3-stdlib lto-disabled-list python3 python3-minimal 65s 8 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 65s Need to get 2763 kB of archives. 65s After this operation, 14.3 kB of additional disk space will be used. 65s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x python3-minimal s390x 3.13.7-2 [27.8 kB] 65s Get:2 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x python3 s390x 3.13.7-2 [23.9 kB] 65s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x libpython3-stdlib s390x 3.13.7-2 [10.6 kB] 65s Get:4 http://ftpmaster.internal/ubuntu resolute/main s390x libapt-pkg7.0 s390x 3.1.8ubuntu1 [1144 kB] 66s Get:5 http://ftpmaster.internal/ubuntu resolute/main s390x apt s390x 3.1.8ubuntu1 [1432 kB] 66s Get:6 http://ftpmaster.internal/ubuntu resolute/main s390x libgirepository-1.0-1 s390x 1.86.0-6 [86.9 kB] 66s Get:7 http://ftpmaster.internal/ubuntu resolute/main s390x gir1.2-girepository-2.0 s390x 1.86.0-6 [25.1 kB] 66s Get:8 http://ftpmaster.internal/ubuntu resolute/main s390x lto-disabled-list all 71 [12.5 kB] 66s dpkg-preconfigure: unable to re-open stdin: No such file or directory 66s Fetched 2763 kB in 1s (2289 kB/s) 66s (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 ... 56852 files and directories currently installed.) 66s Preparing to unpack .../python3-minimal_3.13.7-2_s390x.deb ... 66s Unpacking python3-minimal (3.13.7-2) over (3.13.7-1) ... 66s Setting up python3-minimal (3.13.7-2) ... 66s (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 ... 56852 files and directories currently installed.) 66s Preparing to unpack .../0-python3_3.13.7-2_s390x.deb ... 67s running python pre-rtupdate hooks for python3.13... 67s Unpacking python3 (3.13.7-2) over (3.13.7-1) ... 67s Preparing to unpack .../1-libpython3-stdlib_3.13.7-2_s390x.deb ... 67s Unpacking libpython3-stdlib:s390x (3.13.7-2) over (3.13.7-1) ... 67s Preparing to unpack .../2-libapt-pkg7.0_3.1.8ubuntu1_s390x.deb ... 67s Unpacking libapt-pkg7.0:s390x (3.1.8ubuntu1) over (3.1.6ubuntu2) ... 67s Preparing to unpack .../3-apt_3.1.8ubuntu1_s390x.deb ... 67s Unpacking apt (3.1.8ubuntu1) over (3.1.6ubuntu2) ... 67s Preparing to unpack .../4-libgirepository-1.0-1_1.86.0-6_s390x.deb ... 67s Unpacking libgirepository-1.0-1:s390x (1.86.0-6) over (1.84.0-1) ... 67s Preparing to unpack .../5-gir1.2-girepository-2.0_1.86.0-6_s390x.deb ... 67s Unpacking gir1.2-girepository-2.0:s390x (1.86.0-6) over (1.84.0-1) ... 67s Preparing to unpack .../6-lto-disabled-list_71_all.deb ... 67s Unpacking lto-disabled-list (71) over (69) ... 67s Setting up lto-disabled-list (71) ... 67s Setting up libgirepository-1.0-1:s390x (1.86.0-6) ... 67s Setting up libapt-pkg7.0:s390x (3.1.8ubuntu1) ... 67s Setting up libpython3-stdlib:s390x (3.13.7-2) ... 67s Setting up apt (3.1.8ubuntu1) ... 67s Setting up python3 (3.13.7-2) ... 67s running python rtupdate hooks for python3.13... 67s running python post-rtupdate hooks for python3.13... 67s Setting up gir1.2-girepository-2.0:s390x (1.86.0-6) ... 67s Processing triggers for man-db (2.13.1-1) ... 69s Processing triggers for libc-bin (2.42-0ubuntu3) ... 69s autopkgtest [18:19:10]: upgrading testbed (apt dist-upgrade and autopurge) 70s Reading package lists... 70s Building dependency tree... 70s Reading state information... 70s Calculating upgrade... 70s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 70s Reading package lists... 70s Building dependency tree... 70s Reading state information... 70s Solving dependencies... 70s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 71s autopkgtest [18:19:12]: rebooting testbed after setup commands that affected boot 85s autopkgtest [18:19:26]: testbed running kernel: Linux 6.17.0-5-generic #5-Ubuntu SMP Mon Sep 22 08:56:47 UTC 2025 87s autopkgtest [18:19:28]: @@@@@@@@@@@@@@@@@@@@ apt-source fscacher 89s Get:1 http://ftpmaster.internal/ubuntu resolute/universe fscacher 0.4.3-0.3 (dsc) [2069 B] 89s Get:2 http://ftpmaster.internal/ubuntu resolute/universe fscacher 0.4.3-0.3 (tar) [35.1 kB] 89s Get:3 http://ftpmaster.internal/ubuntu resolute/universe fscacher 0.4.3-0.3 (diff) [4024 B] 89s gpgv: Signature made Wed Jan 1 15:39:12 2025 UTC 89s gpgv: using RSA key 7E7729476D87D6F11D91ACCBC293E7B461825ACE 89s gpgv: Can't check signature: No public key 89s dpkg-source: warning: cannot verify inline signature for ./fscacher_0.4.3-0.3.dsc: no acceptable signature found 89s autopkgtest [18:19:30]: testing package fscacher version 0.4.3-0.3 89s autopkgtest [18:19:30]: build not needed 90s autopkgtest [18:19:31]: test pybuild-autopkgtest: preparing testbed 90s Reading package lists... 90s Building dependency tree... 90s Reading state information... 90s Solving dependencies... 90s The following NEW packages will be installed: 90s autoconf automake autopoint autotools-dev build-essential cpp cpp-15 90s cpp-15-s390x-linux-gnu cpp-s390x-linux-gnu debhelper debugedit dh-autoreconf 90s dh-python dh-strip-nondeterminism dwz g++ g++-15 g++-15-s390x-linux-gnu 90s g++-s390x-linux-gnu gcc gcc-15 gcc-15-s390x-linux-gnu gcc-s390x-linux-gnu 90s gettext intltool-debian libarchive-zip-perl libasan8 libcc1-0 90s libdebhelper-perl libfile-stripnondeterminism-perl libgcc-15-dev libgomp1 90s libisl23 libitm1 libjs-jquery libjs-jquery-hotkeys libjs-jquery-isonscreen 90s libjs-jquery-metadata libjs-jquery-tablesorter 90s libjs-jquery-throttle-debounce libmpc3 libpython3.14-minimal 90s libpython3.14-stdlib libstdc++-15-dev libtool libubsan1 m4 po-debconf 90s pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 90s python3-build python3-coverage python3-fscacher python3-iniconfig 90s python3-installer python3-joblib python3-packaging python3-platformdirs 90s python3-pluggy python3-pyproject-hooks python3-pytest python3-pytest-cov 90s python3-pytest-mock python3-pytest-rerunfailures python3-wheel python3.14 90s python3.14-minimal 91s 0 upgraded, 68 newly installed, 0 to remove and 0 not upgraded. 91s Need to get 64.0 MB of archives. 91s After this operation, 208 MB of additional disk space will be used. 91s Get:1 http://ftpmaster.internal/ubuntu resolute/universe s390x libpython3.14-minimal s390x 3.14.0-1 [904 kB] 91s Get:2 http://ftpmaster.internal/ubuntu resolute/universe s390x python3.14-minimal s390x 3.14.0-1 [2522 kB] 92s Get:3 http://ftpmaster.internal/ubuntu resolute/main s390x m4 s390x 1.4.19-8 [259 kB] 92s Get:4 http://ftpmaster.internal/ubuntu resolute/main s390x autoconf all 2.72-3.1ubuntu1 [384 kB] 92s Get:5 http://ftpmaster.internal/ubuntu resolute/main s390x autotools-dev all 20240727.1 [43.4 kB] 92s Get:6 http://ftpmaster.internal/ubuntu resolute/main s390x automake all 1:1.17-4ubuntu1 [572 kB] 92s Get:7 http://ftpmaster.internal/ubuntu resolute/main s390x autopoint all 0.23.1-2build2 [619 kB] 92s Get:8 http://ftpmaster.internal/ubuntu resolute/main s390x libisl23 s390x 0.27-1 [704 kB] 92s Get:9 http://ftpmaster.internal/ubuntu resolute/main s390x libmpc3 s390x 1.3.1-1build3 [57.6 kB] 92s Get:10 http://ftpmaster.internal/ubuntu resolute/main s390x cpp-15-s390x-linux-gnu s390x 15.2.0-5ubuntu1 [10.2 MB] 93s Get:11 http://ftpmaster.internal/ubuntu resolute/main s390x cpp-15 s390x 15.2.0-5ubuntu1 [1024 B] 93s Get:12 http://ftpmaster.internal/ubuntu resolute/main s390x cpp-s390x-linux-gnu s390x 4:15.2.0-4ubuntu1 [5746 B] 93s Get:13 http://ftpmaster.internal/ubuntu resolute/main s390x cpp s390x 4:15.2.0-4ubuntu1 [22.4 kB] 93s Get:14 http://ftpmaster.internal/ubuntu resolute/main s390x libcc1-0 s390x 15.2.0-5ubuntu1 [50.0 kB] 93s Get:15 http://ftpmaster.internal/ubuntu resolute/main s390x libgomp1 s390x 15.2.0-5ubuntu1 [154 kB] 93s Get:16 http://ftpmaster.internal/ubuntu resolute/main s390x libitm1 s390x 15.2.0-5ubuntu1 [30.9 kB] 93s Get:17 http://ftpmaster.internal/ubuntu resolute/main s390x libasan8 s390x 15.2.0-5ubuntu1 [2969 kB] 93s Get:18 http://ftpmaster.internal/ubuntu resolute/main s390x libubsan1 s390x 15.2.0-5ubuntu1 [1211 kB] 94s Get:19 http://ftpmaster.internal/ubuntu resolute/main s390x libgcc-15-dev s390x 15.2.0-5ubuntu1 [1045 kB] 94s Get:20 http://ftpmaster.internal/ubuntu resolute/main s390x gcc-15-s390x-linux-gnu s390x 15.2.0-5ubuntu1 [19.9 MB] 94s Get:21 http://ftpmaster.internal/ubuntu resolute/main s390x gcc-15 s390x 15.2.0-5ubuntu1 [512 kB] 94s Get:22 http://ftpmaster.internal/ubuntu resolute/main s390x gcc-s390x-linux-gnu s390x 4:15.2.0-4ubuntu1 [1208 B] 94s Get:23 http://ftpmaster.internal/ubuntu resolute/main s390x gcc s390x 4:15.2.0-4ubuntu1 [5018 B] 94s Get:24 http://ftpmaster.internal/ubuntu resolute/main s390x libstdc++-15-dev s390x 15.2.0-5ubuntu1 [2658 kB] 95s Get:25 http://ftpmaster.internal/ubuntu resolute/main s390x g++-15-s390x-linux-gnu s390x 15.2.0-5ubuntu1 [11.7 MB] 95s Get:26 http://ftpmaster.internal/ubuntu resolute/main s390x g++-15 s390x 15.2.0-5ubuntu1 [23.7 kB] 95s Get:27 http://ftpmaster.internal/ubuntu resolute/main s390x g++-s390x-linux-gnu s390x 4:15.2.0-4ubuntu1 [956 B] 95s Get:28 http://ftpmaster.internal/ubuntu resolute/main s390x g++ s390x 4:15.2.0-4ubuntu1 [1078 B] 95s Get:29 http://ftpmaster.internal/ubuntu resolute/main s390x build-essential s390x 12.12ubuntu1 [5090 B] 95s Get:30 http://ftpmaster.internal/ubuntu resolute/main s390x libdebhelper-perl all 13.24.2ubuntu1 [95.7 kB] 95s Get:31 http://ftpmaster.internal/ubuntu resolute/main s390x libtool all 2.5.4-4build1 [169 kB] 95s Get:32 http://ftpmaster.internal/ubuntu resolute/main s390x dh-autoreconf all 21 [12.5 kB] 95s Get:33 http://ftpmaster.internal/ubuntu resolute/main s390x libarchive-zip-perl all 1.68-1 [90.2 kB] 95s Get:34 http://ftpmaster.internal/ubuntu resolute/main s390x libfile-stripnondeterminism-perl all 1.14.2-1 [20.4 kB] 95s Get:35 http://ftpmaster.internal/ubuntu resolute/main s390x dh-strip-nondeterminism all 1.14.2-1 [5098 B] 95s Get:36 http://ftpmaster.internal/ubuntu resolute/main s390x debugedit s390x 1:5.2-3 [52.8 kB] 95s Get:37 http://ftpmaster.internal/ubuntu resolute/main s390x dwz s390x 0.16-2 [121 kB] 95s Get:38 http://ftpmaster.internal/ubuntu resolute/main s390x gettext s390x 0.23.1-2build2 [1062 kB] 95s Get:39 http://ftpmaster.internal/ubuntu resolute/main s390x intltool-debian all 0.35.0+20060710.6 [23.2 kB] 95s Get:40 http://ftpmaster.internal/ubuntu resolute/main s390x po-debconf all 1.0.21+nmu1 [233 kB] 95s Get:41 http://ftpmaster.internal/ubuntu resolute/main s390x debhelper all 13.24.2ubuntu1 [896 kB] 95s Get:42 http://ftpmaster.internal/ubuntu resolute/universe s390x dh-python all 6.20250414 [119 kB] 95s Get:43 http://ftpmaster.internal/ubuntu resolute/main s390x libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 95s Get:44 http://ftpmaster.internal/ubuntu resolute/universe s390x libjs-jquery-metadata all 12-4 [6582 B] 95s Get:45 http://ftpmaster.internal/ubuntu resolute/universe s390x libjs-jquery-tablesorter all 1:2.31.3+dfsg1-4 [192 kB] 95s Get:46 http://ftpmaster.internal/ubuntu resolute/universe s390x libjs-jquery-throttle-debounce all 1.1+dfsg.1-2 [12.5 kB] 95s Get:47 http://ftpmaster.internal/ubuntu resolute/universe s390x libpython3.14-stdlib s390x 3.14.0-1 [2373 kB] 95s Get:48 http://ftpmaster.internal/ubuntu resolute/universe s390x pybuild-plugin-autopkgtest all 6.20250414 [1746 B] 95s Get:49 http://ftpmaster.internal/ubuntu resolute/main s390x python3-packaging all 25.0-1 [52.8 kB] 95s Get:50 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 95s Get:51 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-wheel all 0.46.1-2 [22.1 kB] 95s Get:52 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-build all 1.2.2-2 [31.0 kB] 95s Get:53 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 95s Get:54 http://ftpmaster.internal/ubuntu resolute/universe s390x pybuild-plugin-pyproject all 6.20250414 [1728 B] 95s Get:55 http://ftpmaster.internal/ubuntu resolute/universe s390x python3.14 s390x 3.14.0-1 [805 kB] 95s Get:56 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x python3-all s390x 3.13.7-2 [892 B] 95s Get:57 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-coverage s390x 7.8.2+dfsg1-1 [156 kB] 95s Get:58 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-joblib all 1.4.2-4 [205 kB] 95s Get:59 http://ftpmaster.internal/ubuntu resolute/main s390x python3-platformdirs all 4.3.7-1 [16.9 kB] 95s Get:60 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-fscacher all 0.4.3-0.3 [12.8 kB] 95s Get:61 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-iniconfig all 1.1.1-2 [6024 B] 95s Get:62 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pluggy all 1.5.0-1 [21.0 kB] 95s Get:63 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pytest all 8.3.5-2 [252 kB] 95s Get:64 http://ftpmaster.internal/ubuntu resolute/universe s390x libjs-jquery-hotkeys all 0.2.0-1 [13.3 kB] 95s Get:65 http://ftpmaster.internal/ubuntu resolute/universe s390x libjs-jquery-isonscreen all 1.2.0-1.1 [3244 B] 95s Get:66 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pytest-cov all 5.0.0-1 [21.3 kB] 95s Get:67 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pytest-mock all 3.14.0-3 [11.8 kB] 95s Get:68 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pytest-rerunfailures all 15.0-1 [13.9 kB] 96s Fetched 64.0 MB in 5s (13.2 MB/s) 96s Selecting previously unselected package libpython3.14-minimal:s390x. 96s (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 ... 56852 files and directories currently installed.) 96s Preparing to unpack .../00-libpython3.14-minimal_3.14.0-1_s390x.deb ... 96s Unpacking libpython3.14-minimal:s390x (3.14.0-1) ... 96s Selecting previously unselected package python3.14-minimal. 96s Preparing to unpack .../01-python3.14-minimal_3.14.0-1_s390x.deb ... 96s Unpacking python3.14-minimal (3.14.0-1) ... 96s Selecting previously unselected package m4. 96s Preparing to unpack .../02-m4_1.4.19-8_s390x.deb ... 96s Unpacking m4 (1.4.19-8) ... 96s Selecting previously unselected package autoconf. 96s Preparing to unpack .../03-autoconf_2.72-3.1ubuntu1_all.deb ... 96s Unpacking autoconf (2.72-3.1ubuntu1) ... 96s Selecting previously unselected package autotools-dev. 96s Preparing to unpack .../04-autotools-dev_20240727.1_all.deb ... 96s Unpacking autotools-dev (20240727.1) ... 96s Selecting previously unselected package automake. 96s Preparing to unpack .../05-automake_1%3a1.17-4ubuntu1_all.deb ... 96s Unpacking automake (1:1.17-4ubuntu1) ... 96s Selecting previously unselected package autopoint. 96s Preparing to unpack .../06-autopoint_0.23.1-2build2_all.deb ... 96s Unpacking autopoint (0.23.1-2build2) ... 96s Selecting previously unselected package libisl23:s390x. 96s Preparing to unpack .../07-libisl23_0.27-1_s390x.deb ... 96s Unpacking libisl23:s390x (0.27-1) ... 96s Selecting previously unselected package libmpc3:s390x. 96s Preparing to unpack .../08-libmpc3_1.3.1-1build3_s390x.deb ... 96s Unpacking libmpc3:s390x (1.3.1-1build3) ... 96s Selecting previously unselected package cpp-15-s390x-linux-gnu. 96s Preparing to unpack .../09-cpp-15-s390x-linux-gnu_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking cpp-15-s390x-linux-gnu (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package cpp-15. 96s Preparing to unpack .../10-cpp-15_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking cpp-15 (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package cpp-s390x-linux-gnu. 96s Preparing to unpack .../11-cpp-s390x-linux-gnu_4%3a15.2.0-4ubuntu1_s390x.deb ... 96s Unpacking cpp-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 96s Selecting previously unselected package cpp. 96s Preparing to unpack .../12-cpp_4%3a15.2.0-4ubuntu1_s390x.deb ... 96s Unpacking cpp (4:15.2.0-4ubuntu1) ... 96s Selecting previously unselected package libcc1-0:s390x. 96s Preparing to unpack .../13-libcc1-0_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking libcc1-0:s390x (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package libgomp1:s390x. 96s Preparing to unpack .../14-libgomp1_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking libgomp1:s390x (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package libitm1:s390x. 96s Preparing to unpack .../15-libitm1_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking libitm1:s390x (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package libasan8:s390x. 96s Preparing to unpack .../16-libasan8_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking libasan8:s390x (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package libubsan1:s390x. 96s Preparing to unpack .../17-libubsan1_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking libubsan1:s390x (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package libgcc-15-dev:s390x. 96s Preparing to unpack .../18-libgcc-15-dev_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking libgcc-15-dev:s390x (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package gcc-15-s390x-linux-gnu. 96s Preparing to unpack .../19-gcc-15-s390x-linux-gnu_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking gcc-15-s390x-linux-gnu (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package gcc-15. 96s Preparing to unpack .../20-gcc-15_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking gcc-15 (15.2.0-5ubuntu1) ... 96s Selecting previously unselected package gcc-s390x-linux-gnu. 96s Preparing to unpack .../21-gcc-s390x-linux-gnu_4%3a15.2.0-4ubuntu1_s390x.deb ... 96s Unpacking gcc-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 96s Selecting previously unselected package gcc. 96s Preparing to unpack .../22-gcc_4%3a15.2.0-4ubuntu1_s390x.deb ... 96s Unpacking gcc (4:15.2.0-4ubuntu1) ... 96s Selecting previously unselected package libstdc++-15-dev:s390x. 96s Preparing to unpack .../23-libstdc++-15-dev_15.2.0-5ubuntu1_s390x.deb ... 96s Unpacking libstdc++-15-dev:s390x (15.2.0-5ubuntu1) ... 97s Selecting previously unselected package g++-15-s390x-linux-gnu. 97s Preparing to unpack .../24-g++-15-s390x-linux-gnu_15.2.0-5ubuntu1_s390x.deb ... 97s Unpacking g++-15-s390x-linux-gnu (15.2.0-5ubuntu1) ... 97s Selecting previously unselected package g++-15. 97s Preparing to unpack .../25-g++-15_15.2.0-5ubuntu1_s390x.deb ... 97s Unpacking g++-15 (15.2.0-5ubuntu1) ... 97s Selecting previously unselected package g++-s390x-linux-gnu. 97s Preparing to unpack .../26-g++-s390x-linux-gnu_4%3a15.2.0-4ubuntu1_s390x.deb ... 97s Unpacking g++-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 97s Selecting previously unselected package g++. 97s Preparing to unpack .../27-g++_4%3a15.2.0-4ubuntu1_s390x.deb ... 97s Unpacking g++ (4:15.2.0-4ubuntu1) ... 97s Selecting previously unselected package build-essential. 97s Preparing to unpack .../28-build-essential_12.12ubuntu1_s390x.deb ... 97s Unpacking build-essential (12.12ubuntu1) ... 97s Selecting previously unselected package libdebhelper-perl. 97s Preparing to unpack .../29-libdebhelper-perl_13.24.2ubuntu1_all.deb ... 97s Unpacking libdebhelper-perl (13.24.2ubuntu1) ... 97s Selecting previously unselected package libtool. 97s Preparing to unpack .../30-libtool_2.5.4-4build1_all.deb ... 97s Unpacking libtool (2.5.4-4build1) ... 97s Selecting previously unselected package dh-autoreconf. 97s Preparing to unpack .../31-dh-autoreconf_21_all.deb ... 97s Unpacking dh-autoreconf (21) ... 97s Selecting previously unselected package libarchive-zip-perl. 97s Preparing to unpack .../32-libarchive-zip-perl_1.68-1_all.deb ... 97s Unpacking libarchive-zip-perl (1.68-1) ... 97s Selecting previously unselected package libfile-stripnondeterminism-perl. 97s Preparing to unpack .../33-libfile-stripnondeterminism-perl_1.14.2-1_all.deb ... 97s Unpacking libfile-stripnondeterminism-perl (1.14.2-1) ... 97s Selecting previously unselected package dh-strip-nondeterminism. 97s Preparing to unpack .../34-dh-strip-nondeterminism_1.14.2-1_all.deb ... 97s Unpacking dh-strip-nondeterminism (1.14.2-1) ... 97s Selecting previously unselected package debugedit. 97s Preparing to unpack .../35-debugedit_1%3a5.2-3_s390x.deb ... 97s Unpacking debugedit (1:5.2-3) ... 97s Selecting previously unselected package dwz. 97s Preparing to unpack .../36-dwz_0.16-2_s390x.deb ... 97s Unpacking dwz (0.16-2) ... 97s Selecting previously unselected package gettext. 97s Preparing to unpack .../37-gettext_0.23.1-2build2_s390x.deb ... 97s Unpacking gettext (0.23.1-2build2) ... 97s Selecting previously unselected package intltool-debian. 97s Preparing to unpack .../38-intltool-debian_0.35.0+20060710.6_all.deb ... 97s Unpacking intltool-debian (0.35.0+20060710.6) ... 97s Selecting previously unselected package po-debconf. 97s Preparing to unpack .../39-po-debconf_1.0.21+nmu1_all.deb ... 97s Unpacking po-debconf (1.0.21+nmu1) ... 97s Selecting previously unselected package debhelper. 97s Preparing to unpack .../40-debhelper_13.24.2ubuntu1_all.deb ... 97s Unpacking debhelper (13.24.2ubuntu1) ... 97s Selecting previously unselected package dh-python. 97s Preparing to unpack .../41-dh-python_6.20250414_all.deb ... 97s Unpacking dh-python (6.20250414) ... 97s Selecting previously unselected package libjs-jquery. 97s Preparing to unpack .../42-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 97s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 97s Selecting previously unselected package libjs-jquery-metadata. 97s Preparing to unpack .../43-libjs-jquery-metadata_12-4_all.deb ... 97s Unpacking libjs-jquery-metadata (12-4) ... 97s Selecting previously unselected package libjs-jquery-tablesorter. 97s Preparing to unpack .../44-libjs-jquery-tablesorter_1%3a2.31.3+dfsg1-4_all.deb ... 97s Unpacking libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 97s Selecting previously unselected package libjs-jquery-throttle-debounce. 97s Preparing to unpack .../45-libjs-jquery-throttle-debounce_1.1+dfsg.1-2_all.deb ... 97s Unpacking libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 97s Selecting previously unselected package libpython3.14-stdlib:s390x. 97s Preparing to unpack .../46-libpython3.14-stdlib_3.14.0-1_s390x.deb ... 97s Unpacking libpython3.14-stdlib:s390x (3.14.0-1) ... 97s Selecting previously unselected package pybuild-plugin-autopkgtest. 97s Preparing to unpack .../47-pybuild-plugin-autopkgtest_6.20250414_all.deb ... 97s Unpacking pybuild-plugin-autopkgtest (6.20250414) ... 97s Selecting previously unselected package python3-packaging. 97s Preparing to unpack .../48-python3-packaging_25.0-1_all.deb ... 97s Unpacking python3-packaging (25.0-1) ... 97s Selecting previously unselected package python3-pyproject-hooks. 97s Preparing to unpack .../49-python3-pyproject-hooks_1.2.0-1_all.deb ... 97s Unpacking python3-pyproject-hooks (1.2.0-1) ... 97s Selecting previously unselected package python3-wheel. 97s Preparing to unpack .../50-python3-wheel_0.46.1-2_all.deb ... 97s Unpacking python3-wheel (0.46.1-2) ... 97s Selecting previously unselected package python3-build. 97s Preparing to unpack .../51-python3-build_1.2.2-2_all.deb ... 97s Unpacking python3-build (1.2.2-2) ... 97s Selecting previously unselected package python3-installer. 97s Preparing to unpack .../52-python3-installer_0.7.0+dfsg1-3_all.deb ... 97s Unpacking python3-installer (0.7.0+dfsg1-3) ... 97s Selecting previously unselected package pybuild-plugin-pyproject. 97s Preparing to unpack .../53-pybuild-plugin-pyproject_6.20250414_all.deb ... 97s Unpacking pybuild-plugin-pyproject (6.20250414) ... 97s Selecting previously unselected package python3.14. 97s Preparing to unpack .../54-python3.14_3.14.0-1_s390x.deb ... 97s Unpacking python3.14 (3.14.0-1) ... 97s Selecting previously unselected package python3-all. 97s Preparing to unpack .../55-python3-all_3.13.7-2_s390x.deb ... 97s Unpacking python3-all (3.13.7-2) ... 97s Selecting previously unselected package python3-coverage. 97s Preparing to unpack .../56-python3-coverage_7.8.2+dfsg1-1_s390x.deb ... 97s Unpacking python3-coverage (7.8.2+dfsg1-1) ... 97s Selecting previously unselected package python3-joblib. 97s Preparing to unpack .../57-python3-joblib_1.4.2-4_all.deb ... 97s Unpacking python3-joblib (1.4.2-4) ... 97s Selecting previously unselected package python3-platformdirs. 97s Preparing to unpack .../58-python3-platformdirs_4.3.7-1_all.deb ... 97s Unpacking python3-platformdirs (4.3.7-1) ... 97s Selecting previously unselected package python3-fscacher. 97s Preparing to unpack .../59-python3-fscacher_0.4.3-0.3_all.deb ... 97s Unpacking python3-fscacher (0.4.3-0.3) ... 97s Selecting previously unselected package python3-iniconfig. 97s Preparing to unpack .../60-python3-iniconfig_1.1.1-2_all.deb ... 97s Unpacking python3-iniconfig (1.1.1-2) ... 97s Selecting previously unselected package python3-pluggy. 97s Preparing to unpack .../61-python3-pluggy_1.5.0-1_all.deb ... 97s Unpacking python3-pluggy (1.5.0-1) ... 97s Selecting previously unselected package python3-pytest. 97s Preparing to unpack .../62-python3-pytest_8.3.5-2_all.deb ... 97s Unpacking python3-pytest (8.3.5-2) ... 97s Selecting previously unselected package libjs-jquery-hotkeys. 97s Preparing to unpack .../63-libjs-jquery-hotkeys_0.2.0-1_all.deb ... 97s Unpacking libjs-jquery-hotkeys (0.2.0-1) ... 97s Selecting previously unselected package libjs-jquery-isonscreen. 97s Preparing to unpack .../64-libjs-jquery-isonscreen_1.2.0-1.1_all.deb ... 97s Unpacking libjs-jquery-isonscreen (1.2.0-1.1) ... 97s Selecting previously unselected package python3-pytest-cov. 97s Preparing to unpack .../65-python3-pytest-cov_5.0.0-1_all.deb ... 97s Unpacking python3-pytest-cov (5.0.0-1) ... 97s Selecting previously unselected package python3-pytest-mock. 97s Preparing to unpack .../66-python3-pytest-mock_3.14.0-3_all.deb ... 97s Unpacking python3-pytest-mock (3.14.0-3) ... 97s Selecting previously unselected package python3-pytest-rerunfailures. 97s Preparing to unpack .../67-python3-pytest-rerunfailures_15.0-1_all.deb ... 97s Unpacking python3-pytest-rerunfailures (15.0-1) ... 97s Setting up dh-python (6.20250414) ... 97s Setting up python3-iniconfig (1.1.1-2) ... 98s Setting up python3-joblib (1.4.2-4) ... 98s Setting up libarchive-zip-perl (1.68-1) ... 98s Setting up libdebhelper-perl (13.24.2ubuntu1) ... 98s Setting up libpython3.14-minimal:s390x (3.14.0-1) ... 98s Setting up m4 (1.4.19-8) ... 98s Setting up python3-coverage (7.8.2+dfsg1-1) ... 99s Setting up libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 99s Setting up libgomp1:s390x (15.2.0-5ubuntu1) ... 99s Setting up python3-platformdirs (4.3.7-1) ... 99s Setting up python3-fscacher (0.4.3-0.3) ... 99s Setting up autotools-dev (20240727.1) ... 99s Setting up python3-packaging (25.0-1) ... 99s Setting up python3-pyproject-hooks (1.2.0-1) ... 99s Setting up libmpc3:s390x (1.3.1-1build3) ... 99s Setting up autopoint (0.23.1-2build2) ... 99s Setting up python3-installer (0.7.0+dfsg1-3) ... 99s Setting up autoconf (2.72-3.1ubuntu1) ... 99s Setting up python3-pluggy (1.5.0-1) ... 99s /usr/lib/python3/dist-packages/pluggy/_callers.py:141: SyntaxWarning: 'return' in a 'finally' block 99s return result 99s /usr/lib/python3/dist-packages/pluggy/_callers.py:182: SyntaxWarning: 'return' in a 'finally' block 99s return outcome.get_result() 99s Setting up libubsan1:s390x (15.2.0-5ubuntu1) ... 99s Setting up dwz (0.16-2) ... 99s Setting up libasan8:s390x (15.2.0-5ubuntu1) ... 99s Setting up debugedit (1:5.2-3) ... 99s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 99s Setting up libjs-jquery-hotkeys (0.2.0-1) ... 99s Setting up libisl23:s390x (0.27-1) ... 99s Setting up python3.14-minimal (3.14.0-1) ... 100s Setting up libcc1-0:s390x (15.2.0-5ubuntu1) ... 100s Setting up libitm1:s390x (15.2.0-5ubuntu1) ... 100s Setting up automake (1:1.17-4ubuntu1) ... 100s update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode 100s Setting up libfile-stripnondeterminism-perl (1.14.2-1) ... 100s Setting up gettext (0.23.1-2build2) ... 100s Setting up libgcc-15-dev:s390x (15.2.0-5ubuntu1) ... 100s Setting up libpython3.14-stdlib:s390x (3.14.0-1) ... 100s Setting up python3-pytest (8.3.5-2) ... 101s Setting up python3-wheel (0.46.1-2) ... 101s Setting up intltool-debian (0.35.0+20060710.6) ... 101s Setting up libstdc++-15-dev:s390x (15.2.0-5ubuntu1) ... 101s Setting up libjs-jquery-metadata (12-4) ... 101s Setting up libjs-jquery-isonscreen (1.2.0-1.1) ... 101s Setting up dh-strip-nondeterminism (1.14.2-1) ... 101s Setting up libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 101s Setting up python3-pytest-mock (3.14.0-3) ... 101s Setting up cpp-15-s390x-linux-gnu (15.2.0-5ubuntu1) ... 101s Setting up python3.14 (3.14.0-1) ... 102s Setting up python3-build (1.2.2-2) ... 102s Setting up gcc-15-s390x-linux-gnu (15.2.0-5ubuntu1) ... 102s Setting up g++-15-s390x-linux-gnu (15.2.0-5ubuntu1) ... 102s Setting up python3-pytest-rerunfailures (15.0-1) ... 102s Setting up cpp-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 102s Setting up pybuild-plugin-pyproject (6.20250414) ... 102s Setting up po-debconf (1.0.21+nmu1) ... 102s Setting up python3-all (3.13.7-2) ... 102s Setting up python3-pytest-cov (5.0.0-1) ... 102s Setting up gcc-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 102s Setting up cpp-15 (15.2.0-5ubuntu1) ... 102s Setting up cpp (4:15.2.0-4ubuntu1) ... 102s Setting up g++-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 102s Setting up gcc-15 (15.2.0-5ubuntu1) ... 102s Setting up g++-15 (15.2.0-5ubuntu1) ... 102s Setting up libtool (2.5.4-4build1) ... 102s Setting up gcc (4:15.2.0-4ubuntu1) ... 102s Setting up dh-autoreconf (21) ... 102s Setting up g++ (4:15.2.0-4ubuntu1) ... 102s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 102s Setting up build-essential (12.12ubuntu1) ... 102s Setting up debhelper (13.24.2ubuntu1) ... 102s Setting up pybuild-plugin-autopkgtest (6.20250414) ... 102s Processing triggers for man-db (2.13.1-1) ... 103s Processing triggers for install-info (7.1.1-1ubuntu1) ... 103s Processing triggers for libc-bin (2.42-0ubuntu3) ... 103s Processing triggers for systemd (257.9-0ubuntu2) ... 104s autopkgtest [18:19:45]: test pybuild-autopkgtest: pybuild-autopkgtest 104s autopkgtest [18:19:45]: test pybuild-autopkgtest: [----------------------- 104s pybuild-autopkgtest 105s I: pybuild base:311: cd /tmp/autopkgtest.ZYgMtc/autopkgtest_tmp/build; python3.14 -m pytest 105s ============================= test session starts ============================== 105s platform linux -- Python 3.14.0, pytest-8.3.5, pluggy-1.5.0 105s rootdir: /tmp/autopkgtest.ZYgMtc/autopkgtest_tmp/build 105s plugins: cov-5.0.0, rerunfailures-15.0, typeguard-4.4.2, mock-3.14.0 105s collected 27 items 105s 106s tests/test_cache.py FFFFFF..........sF.FFF [ 81%] 106s tests/test_util.py ..... [100%] 106s 106s =================================== FAILURES =================================== 106s _________________________________ test_memoize _________________________________ 106s 106s cache = 106s 106s def test_memoize(cache): 106s # Simplest testing to start with, not relying on persisting across 106s # independent processes 106s _comp = [] 106s 106s @cache.memoize 106s def f1(flag=False): 106s if flag: 106s raise ValueError("Got flag") 106s if _comp: 106s raise RuntimeError("Must not be recomputed") 106s _comp.append(1) 106s return 1 106s 106s > assert f1() == 1 106s 106s tests/test_cache.py:51: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = , obj = {'flag': False} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ____________________________ test_memoize_multiple _____________________________ 106s 106s cache = 106s 106s def test_memoize_multiple(cache): 106s # Make sure that with the same cache can cover multiple functions 106s @cache.memoize 106s def f1(): 106s return 1 106s 106s @cache.memoize 106s def f2(): 106s return 2 106s 106s @cache.memoize 106s def f3(): # nesting call into f2 106s return f2() + 1 106s 106s for _ in range(3): 106s > assert f1() == 1 106s 106s tests/test_cache.py:86: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = , obj = {} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ______________________________ test_memoize_path _______________________________ 106s 106s cache = 106s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0') 106s 106s def test_memoize_path(cache, tmp_path): 106s calls = [] 106s 106s @cache.memoize_path 106s def memoread(path, arg, kwarg=None): 106s calls.append([path, arg, kwarg]) 106s with open(path) as f: 106s return f.read() 106s 106s def check_new_memoread(arg, content, expect_new=False): 106s ncalls = len(calls) 106s assert memoread(path, arg) == content 106s assert len(calls) == ncalls + 1 106s assert memoread(path, arg) == content 106s assert len(calls) == ncalls + 1 + int(expect_new) 106s 106s fname = "file.dat" 106s path = str(tmp_path / fname) 106s 106s with pytest.raises(IOError): 106s memoread(path, 0) 106s # and again 106s with pytest.raises(IOError): 106s memoread(path, 0) 106s assert len(calls) == 2 106s 106s with open(path, "w") as f: 106s f.write("content") 106s 106s t0 = time.time() 106s try: 106s # unless this computer is too slow -- there should be less than 106s # cache._min_dtime between our creating the file and testing, 106s # so we would force a direct read: 106s check_new_memoread(0, "content", True) 106s except AssertionError: # pragma: no cover 106s # if computer is indeed slow (happens on shared CIs) we might fail 106s # because distance is too short 106s if time.time() - t0 < cache._min_dtime: 106s raise # if we were quick but still failed -- legit 106s assert calls[-1] == [path, 0, None] 106s 106s # but if we sleep - should memoize 106s time.sleep(cache._min_dtime * 1.1) 106s > check_new_memoread(1, "content") 106s 106s tests/test_cache.py:135: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s tests/test_cache.py:102: in check_new_memoread 106s assert memoread(path, arg) == content 106s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 106s ret = fingerprinted(*args, **kwargs_) 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = 106s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat', 1760811586521205897, 1760811586521205897, 7, 267807), 'arg': 1, 'kwarg': None} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ------------------------------ Captured log call ------------------------------- 106s DEBUG fscacher.cache:cache.py:182 Cannot fingerprint /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat: [Errno 2] No such file or directory: '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 106s DEBUG fscacher.cache:cache.py:145 Calling .memoread at 0x3ffac4562a0> directly since no fingerprint for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 106s DEBUG fscacher.cache:cache.py:182 Cannot fingerprint /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat: [Errno 2] No such file or directory: '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 106s DEBUG fscacher.cache:cache.py:145 Calling .memoread at 0x3ffac4562a0> directly since no fingerprint for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 106s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat: FileFingerprint(mtime_ns=1760811586521205897, ctime_ns=1760811586521205897, size=7, inode=267807) 106s DEBUG fscacher.cache:cache.py:153 Calling .memoread at 0x3ffac4562a0> directly since too short for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 106s Level 1 fscacher.cache:cache.py:165 Returning value 'content' 106s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat: FileFingerprint(mtime_ns=1760811586521205897, ctime_ns=1760811586521205897, size=7, inode=267807) 106s DEBUG fscacher.cache:cache.py:153 Calling .memoread at 0x3ffac4562a0> directly since too short for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 106s Level 1 fscacher.cache:cache.py:165 Returning value 'content' 106s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat: FileFingerprint(mtime_ns=1760811586521205897, ctime_ns=1760811586521205897, size=7, inode=267807) 106s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread at 0x3ffac4562a0> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat 106s ____________________________ test_memoize_path_dir _____________________________ 106s 106s cache = 106s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0') 106s 106s @pytest.mark.flaky(reruns=5, condition=on_windows) 106s def test_memoize_path_dir(cache, tmp_path): 106s calls = [] 106s 106s @cache.memoize_path 106s def memoread(path, arg, kwarg=None): 106s calls.append([path, arg, kwarg]) 106s total_size = 0 106s with os.scandir(path) as entries: 106s for e in entries: 106s if e.is_file(): 106s total_size += e.stat().st_size 106s return total_size 106s 106s def check_new_memoread(arg, content, expect_new=False): 106s ncalls = len(calls) 106s assert memoread(path, arg) == content 106s assert len(calls) == ncalls + 1 106s assert memoread(path, arg) == content 106s assert len(calls) == ncalls + 1 + int(expect_new) 106s 106s fname = "foo" 106s path = tmp_path / fname 106s 106s with pytest.raises(IOError): 106s memoread(path, 0) 106s # and again 106s with pytest.raises(IOError): 106s memoread(path, 0) 106s assert len(calls) == 2 106s 106s path.mkdir() 106s (path / "a.txt").write_text("Alpha") 106s (path / "b.txt").write_text("Beta") 106s 106s t0 = time.time() 106s try: 106s # unless this computer is too slow -- there should be less than 106s # cache._min_dtime between our creating the file and testing, 106s # so we would force a direct read: 106s check_new_memoread(0, 9, True) 106s except AssertionError: # pragma: no cover 106s # if computer is indeed slow (happens on shared CIs) we might fail 106s # because distance is too short 106s t_now = time.time() 106s if t_now - t0 < cache._min_dtime: 106s # Log more information to troubleshoot 106s lgr.error(f"Failing test with t0={t0}, t_now={t_now}, " 106s f"dt={t_now - t0}, min_dtime={cache._min_dtime}") 106s for p in ("a.txt", "b.txt"): 106s lgr.error(f" {p}: {op.getmtime(path / p)}") 106s raise # if we were quick but still failed -- legit 106s assert calls[-1] == [path, 0, None] 106s 106s # but if we sleep - should memoize 106s time.sleep(cache._min_dtime * 1.1) 106s > check_new_memoread(1, 9) 106s 106s tests/test_cache.py:225: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s tests/test_cache.py:185: in check_new_memoread 106s assert memoread(path, arg) == content 106s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 106s ret = fingerprinted(*args, **kwargs_) 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = 106s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo', '6f5d2cdc0f9ead5cd753f01e9e39a50e'), 'arg': 1, 'kwarg': None} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ------------------------------ Captured log call ------------------------------- 106s Level 5 fscacher.cache:cache.py:139 Dereferenced PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo') into '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s DEBUG fscacher.cache:cache.py:182 Cannot fingerprint /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo: [Errno 2] No such file or directory: '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s DEBUG fscacher.cache:cache.py:145 Calling .memoread at 0x3ffad8d54e0> directly since no fingerprint for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s Level 5 fscacher.cache:cache.py:139 Dereferenced PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo') into '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s DEBUG fscacher.cache:cache.py:182 Cannot fingerprint /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo: [Errno 2] No such file or directory: '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s DEBUG fscacher.cache:cache.py:145 Calling .memoread at 0x3ffad8d54e0> directly since no fingerprint for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s Level 5 fscacher.cache:cache.py:139 Dereferenced PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo') into '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s DEBUG fscacher.cache:cache.py:153 Calling .memoread at 0x3ffad8d54e0> directly since too short for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s Level 1 fscacher.cache:cache.py:165 Returning value 9 106s Level 5 fscacher.cache:cache.py:139 Dereferenced PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo') into '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s DEBUG fscacher.cache:cache.py:153 Calling .memoread at 0x3ffad8d54e0> directly since too short for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s Level 1 fscacher.cache:cache.py:165 Returning value 9 106s Level 5 fscacher.cache:cache.py:139 Dereferenced PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo') into '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 106s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread at 0x3ffad8d54e0> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo 106s __________________________ test_memoize_path_persist ___________________________ 106s 106s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0') 106s 106s def test_memoize_path_persist(tmp_path): 106s from subprocess import PIPE, run 106s 106s script = tmp_path / "script.py" 106s cachedir = tmp_path / "cache" 106s script.write_text( 106s "from os.path import basename\n" 106s "from fscacher import PersistentCache\n" 106s f"cache = PersistentCache(path={str(cachedir)!r})\n" 106s "\n" 106s "@cache.memoize_path\n" 106s "def func(path):\n" 106s " print('Running %s.' % basename(path), end='')\n" 106s " return 'DONE'\n" 106s "\n" 106s f"print(func({str(script)!r}))\n" 106s ) 106s 106s outputs = [ 106s run([sys.executable, str(script)], stdout=PIPE, stderr=PIPE) for i in range(3) 106s ] 106s print("Full outputs: %s" % repr(outputs)) 106s if b"File name too long" in outputs[0].stderr: 106s # must be running during conda build which blows up paths with 106s # _placehold_ers 106s pytest.skip("seems to be running on conda and hitting the limits") 106s > assert outputs[0].stdout.strip().decode() == "Running script.py.DONE" 106s E AssertionError: assert '' == 'Running script.py.DONE' 106s E 106s E - Running script.py.DONE 106s 106s tests/test_cache.py:284: AssertionError 106s ----------------------------- Captured stdout call ----------------------------- 106s Full outputs: [CompletedProcess(args=['/usr/bin/python3.14', '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py'], returncode=1, stdout=b'', stderr=b'Traceback (most recent call last):\n File "/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py", line 10, in \n print(func(\'/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py\'))\n ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/fscacher/cache.py", line 164, in fingerprinter\n ret = fingerprinted(*args, **kwargs_)\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 577, in __call__\n return self._cached_call(args, kwargs, shelving=False)[0]\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 483, in _cached_call\n args_id = self._get_args_id(*args, **kwargs)\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 616, in _get_args_id\n return hashing.hash(filter_args(self.func, self.ignore, args, kwargs),\n ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n coerce_mmap=self.mmap_mode is not None)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 265, in hash\n return hasher.hash(obj)\n ~~~~~~~~~~~^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 63, in hash\n self.dump(obj)\n ~~~~~~~~~^^^^^\n File "/usr/lib/python3.14/pickle.py", line 498, in dump\n self.save(obj)\n ~~~~~~~~~^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 89, in save\n Pickler.save(self, obj)\n ~~~~~~~~~~~~^^^^^^^^^^^\n File "/usr/lib/python3.14/pickle.py", line 572, in save\n f(self, obj) # Call unbound method with explicit self\n ~^^^^^^^^^^^\n File "/usr/lib/python3.14/pickle.py", line 1064, in save_dict\n self._batch_setitems(obj.items(), obj)\n ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^\nTypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given\n'), CompletedProcess(args=['/usr/bin/python3.14', '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py'], returncode=1, stdout=b'', stderr=b'Traceback (most recent call last):\n File "/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py", line 10, in \n print(func(\'/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py\'))\n ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/fscacher/cache.py", line 164, in fingerprinter\n ret = fingerprinted(*args, **kwargs_)\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 577, in __call__\n return self._cached_call(args, kwargs, shelving=False)[0]\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 483, in _cached_call\n args_id = self._get_args_id(*args, **kwargs)\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 616, in _get_args_id\n return hashing.hash(filter_args(self.func, self.ignore, args, kwargs),\n ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n coerce_mmap=self.mmap_mode is not None)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 265, in hash\n return hasher.hash(obj)\n ~~~~~~~~~~~^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 63, in hash\n self.dump(obj)\n ~~~~~~~~~^^^^^\n File "/usr/lib/python3.14/pickle.py", line 498, in dump\n self.save(obj)\n ~~~~~~~~~^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 89, in save\n Pickler.save(self, obj)\n ~~~~~~~~~~~~^^^^^^^^^^^\n File "/usr/lib/python3.14/pickle.py", line 572, in save\n f(self, obj) # Call unbound method with explicit self\n ~^^^^^^^^^^^\n File "/usr/lib/python3.14/pickle.py", line 1064, in save_dict\n self._batch_setitems(obj.items(), obj)\n ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^\nTypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given\n'), CompletedProcess(args=['/usr/bin/python3.14', '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py'], returncode=1, stdout=b'', stderr=b'Traceback (most recent call last):\n File "/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py", line 10, in \n print(func(\'/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0/script.py\'))\n ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/fscacher/cache.py", line 164, in fingerprinter\n ret = fingerprinted(*args, **kwargs_)\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 577, in __call__\n return self._cached_call(args, kwargs, shelving=False)[0]\n ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 483, in _cached_call\n args_id = self._get_args_id(*args, **kwargs)\n File "/usr/lib/python3/dist-packages/joblib/memory.py", line 616, in _get_args_id\n return hashing.hash(filter_args(self.func, self.ignore, args, kwargs),\n ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n coerce_mmap=self.mmap_mode is not None)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 265, in hash\n return hasher.hash(obj)\n ~~~~~~~~~~~^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 63, in hash\n self.dump(obj)\n ~~~~~~~~~^^^^^\n File "/usr/lib/python3.14/pickle.py", line 498, in dump\n self.save(obj)\n ~~~~~~~~~^^^^^\n File "/usr/lib/python3/dist-packages/joblib/hashing.py", line 89, in save\n Pickler.save(sE: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.ZYgMtc/autopkgtest_tmp/build; python3.14 -m pytest 106s I: pybuild base:311: cd /tmp/autopkgtest.ZYgMtc/autopkgtest_tmp/build; python3.13 -m pytest 106s elf, obj)\n ~~~~~~~~~~~~^^^^^^^^^^^\n File "/usr/lib/python3.14/pickle.py", line 572, in save\n f(self, obj) # Call unbound method with explicit self\n ~^^^^^^^^^^^\n File "/usr/lib/python3.14/pickle.py", line 1064, in save_dict\n self._batch_setitems(obj.items(), obj)\n ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^\nTypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given\n')] 106s ___________________________ test_memoize_path_tokens ___________________________ 106s 106s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_tokens0') 106s cache = 106s cache_tokens = 106s 106s def test_memoize_path_tokens(tmp_path, cache, cache_tokens): 106s calls = [] 106s 106s @cache.memoize_path 106s def memoread(path, arg, kwarg=None): 106s calls.append(["cache", path, arg, kwarg]) 106s with open(path) as f: 106s return f.read() 106s 106s @cache_tokens.memoize_path 106s def memoread_tokens(path, arg, kwarg=None): 106s calls.append(["cache_tokens", path, arg, kwarg]) 106s with open(path) as f: 106s return f.read() 106s 106s def check_new_memoread(call, arg, content, expect_first=True, expect_new=False): 106s ncalls = len(calls) 106s assert call(path, arg) == content 106s assert len(calls) == ncalls + int(expect_first) 106s assert call(path, arg) == content 106s assert len(calls) == ncalls + int(expect_first) + int(expect_new) 106s 106s path = str(tmp_path / "file.dat") 106s 106s with open(path, "w") as f: 106s f.write("content") 106s 106s time.sleep(cache._min_dtime * 1.1) 106s # They both are independent, so both will cause a new readout 106s > check_new_memoread(memoread, 0, "content") 106s 106s tests/test_cache.py:318: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s tests/test_cache.py:306: in check_new_memoread 106s assert call(path, arg) == content 106s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 106s ret = fingerprinted(*args, **kwargs_) 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = 106s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_tokens0/file.dat', 1760811586985749675, 1760811586985749675, 7, 267840), 'arg': 0, 'kwarg': None} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ------------------------------ Captured log call ------------------------------- 106s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_tokens0/file.dat: FileFingerprint(mtime_ns=1760811586985749675, ctime_ns=1760811586985749675, size=7, inode=267840) 106s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread at 0x3ffad8d5c70> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_tokens0/file.dat 106s ________________________ test_memoize_path_nonpath_arg _________________________ 106s 106s cache = 106s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_nonpath_arg0') 106s 106s def test_memoize_path_nonpath_arg(cache, tmp_path): 106s calls = [] 106s 106s @cache.memoize_path 106s def memoread(filepath, arg, kwarg=None): 106s calls.append([filepath, arg, kwarg]) 106s with open(filepath) as f: 106s return f.read() 106s 106s path = str(tmp_path / "file.dat") 106s with open(path, "w") as f: 106s f.write("content") 106s 106s time.sleep(cache._min_dtime * 1.1) 106s 106s ncalls = len(calls) 106s > assert memoread(path, 1) == "content" 106s 106s tests/test_cache.py:414: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 106s ret = fingerprinted(*args, **kwargs_) 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = 106s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_nonpath_arg0/file.dat', 1760811587084773962, 1760811587084773962, 7, 267860), 'arg': 1, 'kwarg': None} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ------------------------------ Captured log call ------------------------------- 106s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_nonpath_arg0/file.dat: FileFingerprint(mtime_ns=1760811587084773962, ctime_ns=1760811587084773962, size=7, inode=267860) 106s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread at 0x3ffac457a00> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_nonpath_arg0/file.dat 106s ________________________ test_memoize_non_pathlike_arg _________________________ 106s 106s cache = 106s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0') 106s 106s def test_memoize_non_pathlike_arg(cache, tmp_path): 106s calls = [] 106s 106s @cache.memoize_path 106s def strify(x): 106s calls.append(x) 106s return str(x) 106s 106s path = tmp_path / "foo" 106s path.touch() 106s time.sleep(cache._min_dtime * 1.1) 106s 106s > assert strify(path) == str(path) 106s 106s tests/test_cache.py:458: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 106s ret = fingerprinted(*args, **kwargs_) 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = 106s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0/foo', 1760811587164193341, 1760811587164193341, 0, 267874)} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ------------------------------ Captured log call ------------------------------- 106s Level 5 fscacher.cache:cache.py:139 Dereferenced PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0/foo') into '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0/foo' 106s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0/foo: FileFingerprint(mtime_ns=1760811587164193341, ctime_ns=1760811587164193341, size=0, inode=267874) 106s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .strify at 0x3ffac454b40> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0/foo 106s __________________________ test_memoize_pathlike_arg ___________________________ 106s 106s cache = 106s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0') 106s 106s def test_memoize_pathlike_arg(cache, tmp_path): 106s calls = [] 106s 106s @cache.memoize_path 106s def strify(x): 106s calls.append(x) 106s return str(x) 106s 106s path = tmp_path / "foo" 106s path.touch() 106s foo = PathWrapper(path) 106s 106s path2 = tmp_path / "bar" 106s path2.touch() 106s bar = PathWrapper(path2) 106s 106s time.sleep(cache._min_dtime * 1.1) 106s 106s > assert strify(path) == str(path) 106s 106s tests/test_cache.py:500: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 106s ret = fingerprinted(*args, **kwargs_) 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = 106s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0/foo', 1760811587243970824, 1760811587243970824, 0, 267883)} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ------------------------------ Captured log call ------------------------------- 106s Level 5 fscacher.cache:cache.py:139 Dereferenced PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0/foo') into '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0/foo' 106s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0/foo: FileFingerprint(mtime_ns=1760811587243970824, ctime_ns=1760811587243970824, size=0, inode=267883) 106s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .strify at 0x3ffad8c6fb0> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0/foo 106s _______________________ test_memoize_path_exclude_kwargs _______________________ 106s 106s cache = 106s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0') 106s 106s def test_memoize_path_exclude_kwargs(cache, tmp_path): 106s calls = [] 106s 106s @cache.memoize_path(exclude_kwargs=["extra"]) 106s def memoread_extra(path, arg, kwarg=None, extra=None): 106s calls.append((path, arg, kwarg, extra)) 106s with open(path) as f: 106s return f.read() 106s 106s path = tmp_path / "file.dat" 106s path.write_text("content") 106s 106s time.sleep(cache._min_dtime * 1.1) 106s 106s > assert memoread_extra(path, 1, extra="foo") == "content" 106s 106s tests/test_cache.py:533: 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 106s ret = fingerprinted(*args, **kwargs_) 106s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 106s return self._cached_call(args, kwargs, shelving=False)[0] 106s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 106s args_id = self._get_args_id(*args, **kwargs) 106s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 106s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 106s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 106s return hasher.hash(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 106s self.dump(obj) 106s /usr/lib/python3.14/pickle.py:498: in dump 106s self.save(obj) 106s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 106s Pickler.save(self, obj) 106s /usr/lib/python3.14/pickle.py:572: in save 106s f(self, obj) # Call unbound method with explicit self 106s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 106s 106s self = 106s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0/file.dat', 1760811587330974056, 1760811587330974056, 7, 267893), 'arg': 1, 'kwarg': None} 106s 106s def save_dict(self, obj): 106s if self.bin: 106s self.write(EMPTY_DICT) 106s else: # proto 0 -- can't use EMPTY_DICT 106s self.write(MARK + DICT) 106s 106s self.memoize(obj) 106s > self._batch_setitems(obj.items(), obj) 106s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 106s 106s /usr/lib/python3.14/pickle.py:1064: TypeError 106s ------------------------------ Captured log call ------------------------------- 106s Level 5 fscacher.cache:cache.py:139 Dereferenced PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0/file.dat') into '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0/file.dat' 106s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0/file.dat: FileFingerprint(mtime_ns=1760811587330974056, ctime_ns=1760811587330974056, size=7, inode=267893) 106s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread_extra at 0x3ffad8c5220> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0/file.dat 106s =============================== warnings summary =============================== 106s tests/test_cache.py: 12 warnings 106s /usr/lib/python3/dist-packages/joblib/memory.py:1053: DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated and slated for removal in Python 3.16; use inspect.iscoroutinefunction() instead 106s if asyncio.iscoroutinefunction(func) 106s 106s tests/test_cache.py: 10 warnings 106s /usr/lib/python3/dist-packages/pytest_mock/plugin.py:199: DeprecationWarning: 'asyncio.iscoroutinefunction' is deprecated and slated for removal in Python 3.16; use inspect.iscoroutinefunction() instead 106s if asyncio.iscoroutinefunction(method): 106s 106s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 106s =========================== short test summary info ============================ 106s FAILED tests/test_cache.py::test_memoize - TypeError: Hasher._batch_setitems(... 106s FAILED tests/test_cache.py::test_memoize_multiple - TypeError: Hasher._batch_... 106s FAILED tests/test_cache.py::test_memoize_path - TypeError: Hasher._batch_seti... 106s FAILED tests/test_cache.py::test_memoize_path_dir - TypeError: Hasher._batch_... 106s FAILED tests/test_cache.py::test_memoize_path_persist - AssertionError: asser... 106s FAILED tests/test_cache.py::test_memoize_path_tokens - TypeError: Hasher._bat... 106s FAILED tests/test_cache.py::test_memoize_path_nonpath_arg - TypeError: Hasher... 106s FAILED tests/test_cache.py::test_memoize_non_pathlike_arg - TypeError: Hasher... 106s FAILED tests/test_cache.py::test_memoize_pathlike_arg - TypeError: Hasher._ba... 106s FAILED tests/test_cache.py::test_memoize_path_exclude_kwargs - TypeError: Has... 106s ============ 10 failed, 16 passed, 1 skipped, 22 warnings in 1.12s ============= 106s ============================= test session starts ============================== 106s platform linux -- Python 3.13.7, pytest-8.3.5, pluggy-1.5.0 106s rootdir: /tmp/autopkgtest.ZYgMtc/autopkgtest_tmp/build 106s plugins: cov-5.0.0, rerunfailures-15.0, typeguard-4.4.2, mock-3.14.0 106s collected 27 items 106s 107s tests/test_cache.py ................s..... [ 81%] 107s tests/test_util.py ..... [100%] 107s 107s ======================== 26 passed, 1 skipped in 0.58s ========================= 107s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.14 3.13" returned exit code 13 107s make: *** [/tmp/yTLReQAMi1/run:4: pybuild-autopkgtest] Error 25 107s pybuild-autopkgtest: error: /tmp/yTLReQAMi1/run pybuild-autopkgtest returned exit code 2 107s autopkgtest [18:19:48]: test pybuild-autopkgtest: -----------------------] 108s autopkgtest [18:19:49]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 108s pybuild-autopkgtest FAIL non-zero exit status 25 108s autopkgtest [18:19:49]: @@@@@@@@@@@@@@@@@@@@ summary 108s pybuild-autopkgtest FAIL non-zero exit status 25