0s autopkgtest [11:41:26]: starting date and time: 2025-11-17 11:41:26+0000 0s autopkgtest [11:41:26]: git checkout: 508d4a25 a-v-ssh wait_for_ssh: demote "ssh connection failed" to a debug message 0s autopkgtest [11:41:26]: host juju-7f2275-prod-proposed-migration-environment-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.q9xevyl9/out --timeout-copy=6000 --setup-commands 'ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,internal,login.ubuntu.com,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com,radosgw.ps5.canonical.com\n" >> /etc/environment' --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 -- lxd -r lxd-armhf-10.145.243.221 lxd-armhf-10.145.243.221:autopkgtest/ubuntu/resolute/armhf 21s autopkgtest [11:41:47]: testbed dpkg architecture: armhf 23s autopkgtest [11:41:49]: testbed apt version: 3.1.11 27s autopkgtest [11:41:53]: @@@@@@@@@@@@@@@@@@@@ test bed setup 29s autopkgtest [11:41:55]: testbed release detected to be: None 36s autopkgtest [11:42:02]: updating testbed package index (apt update) 38s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [87.8 kB] 39s Get:2 http://ftpmaster.internal/ubuntu resolute InRelease [87.8 kB] 39s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 39s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 39s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [22.9 kB] 39s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [868 kB] 39s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [81.1 kB] 39s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [9848 B] 39s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf Packages [138 kB] 39s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/restricted armhf Packages [940 B] 39s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf Packages [536 kB] 39s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse armhf Packages [9684 B] 39s Get:13 http://ftpmaster.internal/ubuntu resolute/universe Sources [21.3 MB] 40s Get:14 http://ftpmaster.internal/ubuntu resolute/main Sources [1416 kB] 40s Get:15 http://ftpmaster.internal/ubuntu resolute/main armhf Packages [1369 kB] 40s Get:16 http://ftpmaster.internal/ubuntu resolute/universe armhf Packages [15.2 MB] 43s Fetched 41.1 MB in 5s (8391 kB/s) 44s Reading package lists... 50s autopkgtest [11:42:16]: upgrading testbed (apt dist-upgrade and autopurge) 52s Reading package lists... 52s Building dependency tree... 52s Reading state information... 52s Calculating upgrade... 53s The following packages will be upgraded: 53s libpython3-stdlib python3 python3-minimal usbutils 53s 4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 53s Need to get 140 kB of archives. 53s After this operation, 0 B of additional disk space will be used. 53s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-minimal armhf 3.13.7-2 [27.8 kB] 53s Get:2 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3 armhf 3.13.7-2 [23.9 kB] 53s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf libpython3-stdlib armhf 3.13.7-2 [10.6 kB] 53s Get:4 http://ftpmaster.internal/ubuntu resolute/main armhf usbutils armhf 1:019-1 [77.7 kB] 54s Fetched 140 kB in 0s (363 kB/s) 54s (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 ... 65904 files and directories currently installed.) 54s Preparing to unpack .../python3-minimal_3.13.7-2_armhf.deb ... 54s Unpacking python3-minimal (3.13.7-2) over (3.13.7-1) ... 54s Setting up python3-minimal (3.13.7-2) ... 54s (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 ... 65904 files and directories currently installed.) 54s Preparing to unpack .../python3_3.13.7-2_armhf.deb ... 54s Unpacking python3 (3.13.7-2) over (3.13.7-1) ... 54s Preparing to unpack .../libpython3-stdlib_3.13.7-2_armhf.deb ... 54s Unpacking libpython3-stdlib:armhf (3.13.7-2) over (3.13.7-1) ... 55s Preparing to unpack .../usbutils_1%3a019-1_armhf.deb ... 55s Unpacking usbutils (1:019-1) over (1:018-2) ... 55s Setting up usbutils (1:019-1) ... 55s Setting up libpython3-stdlib:armhf (3.13.7-2) ... 55s Setting up python3 (3.13.7-2) ... 55s Processing triggers for man-db (2.13.1-1) ... 58s Reading package lists... 58s Building dependency tree... 58s Reading state information... 58s Solving dependencies... 59s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 61s autopkgtest [11:42:27]: rebooting testbed after setup commands that affected boot 101s autopkgtest [11:43:07]: testbed running kernel: Linux 6.8.0-86-generic #87~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 29 09:26:46 UTC 2 126s autopkgtest [11:43:32]: @@@@@@@@@@@@@@@@@@@@ apt-source fscacher 136s Get:1 http://ftpmaster.internal/ubuntu resolute/universe fscacher 0.4.3-0.3 (dsc) [2069 B] 136s Get:2 http://ftpmaster.internal/ubuntu resolute/universe fscacher 0.4.3-0.3 (tar) [35.1 kB] 136s Get:3 http://ftpmaster.internal/ubuntu resolute/universe fscacher 0.4.3-0.3 (diff) [4024 B] 136s gpgv: Signature made Wed Jan 1 15:39:12 2025 UTC 136s gpgv: using RSA key 7E7729476D87D6F11D91ACCBC293E7B461825ACE 136s gpgv: Can't check signature: No public key 136s dpkg-source: warning: cannot verify inline signature for ./fscacher_0.4.3-0.3.dsc: no acceptable signature found 136s autopkgtest [11:43:42]: testing package fscacher version 0.4.3-0.3 139s autopkgtest [11:43:45]: build not needed 142s autopkgtest [11:43:48]: test pybuild-autopkgtest: preparing testbed 143s Reading package lists... 144s Building dependency tree... 144s Reading state information... 144s Solving dependencies... 146s The following NEW packages will be installed: 146s autoconf automake autopoint autotools-dev build-essential cpp cpp-15 146s cpp-15-arm-linux-gnueabihf cpp-arm-linux-gnueabihf debhelper debugedit 146s dh-autoreconf dh-python dh-strip-nondeterminism dwz g++ g++-15 146s g++-15-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-15 146s gcc-15-arm-linux-gnueabihf gcc-arm-linux-gnueabihf gettext intltool-debian 146s libarchive-zip-perl libasan8 libc-dev-bin libc6-dev libcc1-0 libcrypt-dev 146s libdebhelper-perl libdw1t64 libfile-stripnondeterminism-perl libgcc-15-dev 146s libgomp1 libisl23 libjs-jquery libjs-jquery-hotkeys libjs-jquery-isonscreen 146s libjs-jquery-metadata libjs-jquery-tablesorter 146s libjs-jquery-throttle-debounce libmpc3 libpython3.14-minimal 146s libpython3.14-stdlib libstdc++-15-dev libtool libubsan1 linux-libc-dev m4 146s po-debconf pybuild-plugin-autopkgtest pybuild-plugin-pyproject python3-all 146s python3-build python3-coverage python3-fscacher python3-iniconfig 146s python3-installer python3-joblib python3-platformdirs python3-pluggy 146s python3-pyproject-hooks python3-pytest python3-pytest-cov 146s python3-pytest-mock python3-pytest-rerunfailures python3-wheel python3.14 146s python3.14-minimal rpcsvc-proto 146s 0 upgraded, 72 newly installed, 0 to remove and 0 not upgraded. 146s Need to get 65.8 MB of archives. 146s After this operation, 196 MB of additional disk space will be used. 146s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-minimal armhf 3.14.0-4 [892 kB] 147s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14-minimal armhf 3.14.0-4 [2146 kB] 147s Get:3 http://ftpmaster.internal/ubuntu resolute/main armhf m4 armhf 1.4.20-2 [212 kB] 147s Get:4 http://ftpmaster.internal/ubuntu resolute/main armhf autoconf all 2.72-3.1ubuntu1 [384 kB] 147s Get:5 http://ftpmaster.internal/ubuntu resolute/main armhf autotools-dev all 20240727.1 [43.4 kB] 147s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf automake all 1:1.18.1-2 [581 kB] 147s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf autopoint all 0.23.2-1 [620 kB] 147s Get:8 http://ftpmaster.internal/ubuntu resolute/main armhf libc-dev-bin armhf 2.42-2ubuntu2 [21.8 kB] 147s Get:9 http://ftpmaster.internal/ubuntu resolute/main armhf linux-libc-dev armhf 6.17.0-5.5 [1771 kB] 147s Get:10 http://ftpmaster.internal/ubuntu resolute/main armhf libcrypt-dev armhf 1:4.4.38-1build1 [120 kB] 147s Get:11 http://ftpmaster.internal/ubuntu resolute/main armhf rpcsvc-proto armhf 1.4.3-1 [62.3 kB] 147s Get:12 http://ftpmaster.internal/ubuntu resolute/main armhf libc6-dev armhf 2.42-2ubuntu2 [1416 kB] 147s Get:13 http://ftpmaster.internal/ubuntu resolute/main armhf libisl23 armhf 0.27-1 [546 kB] 147s Get:14 http://ftpmaster.internal/ubuntu resolute/main armhf libmpc3 armhf 1.3.1-2 [47.0 kB] 147s Get:15 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-15-arm-linux-gnueabihf armhf 15.2.0-7ubuntu1 [10.1 MB] 147s Get:16 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-15 armhf 15.2.0-7ubuntu1 [1030 B] 147s Get:17 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [5756 B] 147s Get:18 http://ftpmaster.internal/ubuntu resolute/main armhf cpp armhf 4:15.2.0-4ubuntu1 [22.4 kB] 147s Get:19 http://ftpmaster.internal/ubuntu resolute/main armhf libcc1-0 armhf 15.2.0-7ubuntu1 [43.5 kB] 147s Get:20 http://ftpmaster.internal/ubuntu resolute/main armhf libgomp1 armhf 15.2.0-7ubuntu1 [129 kB] 147s Get:21 http://ftpmaster.internal/ubuntu resolute/main armhf libasan8 armhf 15.2.0-7ubuntu1 [2950 kB] 147s Get:22 http://ftpmaster.internal/ubuntu resolute/main armhf libubsan1 armhf 15.2.0-7ubuntu1 [1187 kB] 147s Get:23 http://ftpmaster.internal/ubuntu resolute/main armhf libgcc-15-dev armhf 15.2.0-7ubuntu1 [898 kB] 147s Get:24 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-15-arm-linux-gnueabihf armhf 15.2.0-7ubuntu1 [19.5 MB] 148s Get:25 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-15 armhf 15.2.0-7ubuntu1 [493 kB] 148s Get:26 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [1220 B] 148s Get:27 http://ftpmaster.internal/ubuntu resolute/main armhf gcc armhf 4:15.2.0-4ubuntu1 [5022 B] 148s Get:28 http://ftpmaster.internal/ubuntu resolute/main armhf libstdc++-15-dev armhf 15.2.0-7ubuntu1 [2637 kB] 148s Get:29 http://ftpmaster.internal/ubuntu resolute/main armhf g++-15-arm-linux-gnueabihf armhf 15.2.0-7ubuntu1 [11.4 MB] 148s Get:30 http://ftpmaster.internal/ubuntu resolute/main armhf g++-15 armhf 15.2.0-7ubuntu1 [23.7 kB] 148s Get:31 http://ftpmaster.internal/ubuntu resolute/main armhf g++-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [968 B] 148s Get:32 http://ftpmaster.internal/ubuntu resolute/main armhf g++ armhf 4:15.2.0-4ubuntu1 [1086 B] 148s Get:33 http://ftpmaster.internal/ubuntu resolute/main armhf build-essential armhf 12.12ubuntu1 [5088 B] 148s Get:34 http://ftpmaster.internal/ubuntu resolute/main armhf libdebhelper-perl all 13.24.2ubuntu1 [95.7 kB] 148s Get:35 http://ftpmaster.internal/ubuntu resolute/main armhf libtool all 2.5.4-7 [169 kB] 148s Get:36 http://ftpmaster.internal/ubuntu resolute/main armhf dh-autoreconf all 21 [12.5 kB] 148s Get:37 http://ftpmaster.internal/ubuntu resolute/main armhf libarchive-zip-perl all 1.68-1 [90.2 kB] 148s Get:38 http://ftpmaster.internal/ubuntu resolute/main armhf libfile-stripnondeterminism-perl all 1.15.0-1 [20.5 kB] 148s Get:39 http://ftpmaster.internal/ubuntu resolute/main armhf dh-strip-nondeterminism all 1.15.0-1 [5090 B] 148s Get:40 http://ftpmaster.internal/ubuntu resolute/main armhf libdw1t64 armhf 0.194-1 [254 kB] 148s Get:41 http://ftpmaster.internal/ubuntu resolute/main armhf debugedit armhf 1:5.2-3 [48.9 kB] 149s Get:42 http://ftpmaster.internal/ubuntu resolute/main armhf dwz armhf 0.16-2 [114 kB] 149s Get:43 http://ftpmaster.internal/ubuntu resolute/main armhf gettext armhf 0.23.2-1 [1059 kB] 149s Get:44 http://ftpmaster.internal/ubuntu resolute/main armhf intltool-debian all 0.35.0+20060710.6 [23.2 kB] 149s Get:45 http://ftpmaster.internal/ubuntu resolute/main armhf po-debconf all 1.0.21+nmu1 [233 kB] 149s Get:46 http://ftpmaster.internal/ubuntu resolute/main armhf debhelper all 13.24.2ubuntu1 [896 kB] 149s Get:47 http://ftpmaster.internal/ubuntu resolute/universe armhf dh-python all 6.20250414 [119 kB] 149s Get:48 http://ftpmaster.internal/ubuntu resolute/main armhf libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 149s Get:49 http://ftpmaster.internal/ubuntu resolute/universe armhf libjs-jquery-metadata all 12-4 [6582 B] 149s Get:50 http://ftpmaster.internal/ubuntu resolute/universe armhf libjs-jquery-tablesorter all 1:2.31.3+dfsg1-4 [192 kB] 149s Get:51 http://ftpmaster.internal/ubuntu resolute/universe armhf libjs-jquery-throttle-debounce all 1.1+dfsg.1-2 [12.5 kB] 149s Get:52 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-stdlib armhf 3.14.0-4 [2270 kB] 149s Get:53 http://ftpmaster.internal/ubuntu resolute/universe armhf pybuild-plugin-autopkgtest all 6.20250414 [1746 B] 149s Get:54 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 149s Get:55 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-wheel all 0.46.1-2 [22.1 kB] 149s Get:56 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-build all 1.2.2-4 [31.0 kB] 149s Get:57 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 149s Get:58 http://ftpmaster.internal/ubuntu resolute/universe armhf pybuild-plugin-pyproject all 6.20250414 [1728 B] 149s Get:59 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14 armhf 3.14.0-4 [805 kB] 149s Get:60 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf python3-all armhf 3.13.7-2 [890 B] 149s Get:61 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-coverage armhf 7.8.2+dfsg1-1 [156 kB] 149s Get:62 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-joblib all 1.4.2-4 [205 kB] 149s Get:63 http://ftpmaster.internal/ubuntu resolute/main armhf python3-platformdirs all 4.3.7-1 [16.9 kB] 149s Get:64 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-fscacher all 0.4.3-0.3 [12.8 kB] 149s Get:65 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-iniconfig all 2.1.0-1 [6840 B] 149s Get:66 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pluggy all 1.6.0-1 [21.0 kB] 149s Get:67 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest all 8.3.5-2 [252 kB] 149s Get:68 http://ftpmaster.internal/ubuntu resolute/universe armhf libjs-jquery-hotkeys all 0.2.0-1 [13.3 kB] 149s Get:69 http://ftpmaster.internal/ubuntu resolute/universe armhf libjs-jquery-isonscreen all 1.2.0-1.1 [3244 B] 149s Get:70 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest-cov all 5.0.0-1 [21.3 kB] 149s Get:71 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest-mock all 3.15.1-1 [11.9 kB] 149s Get:72 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest-rerunfailures all 16.1-1 [14.9 kB] 150s Fetched 65.8 MB in 3s (22.0 MB/s) 150s Selecting previously unselected package libpython3.14-minimal:armhf. 150s (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 ... 65904 files and directories currently installed.) 150s Preparing to unpack .../00-libpython3.14-minimal_3.14.0-4_armhf.deb ... 150s Unpacking libpython3.14-minimal:armhf (3.14.0-4) ... 150s Selecting previously unselected package python3.14-minimal. 150s Preparing to unpack .../01-python3.14-minimal_3.14.0-4_armhf.deb ... 150s Unpacking python3.14-minimal (3.14.0-4) ... 150s Selecting previously unselected package m4. 150s Preparing to unpack .../02-m4_1.4.20-2_armhf.deb ... 150s Unpacking m4 (1.4.20-2) ... 150s Selecting previously unselected package autoconf. 150s Preparing to unpack .../03-autoconf_2.72-3.1ubuntu1_all.deb ... 150s Unpacking autoconf (2.72-3.1ubuntu1) ... 150s Selecting previously unselected package autotools-dev. 150s Preparing to unpack .../04-autotools-dev_20240727.1_all.deb ... 150s Unpacking autotools-dev (20240727.1) ... 150s Selecting previously unselected package automake. 150s Preparing to unpack .../05-automake_1%3a1.18.1-2_all.deb ... 150s Unpacking automake (1:1.18.1-2) ... 150s Selecting previously unselected package autopoint. 150s Preparing to unpack .../06-autopoint_0.23.2-1_all.deb ... 150s Unpacking autopoint (0.23.2-1) ... 150s Selecting previously unselected package libc-dev-bin. 150s Preparing to unpack .../07-libc-dev-bin_2.42-2ubuntu2_armhf.deb ... 150s Unpacking libc-dev-bin (2.42-2ubuntu2) ... 150s Selecting previously unselected package linux-libc-dev:armhf. 150s Preparing to unpack .../08-linux-libc-dev_6.17.0-5.5_armhf.deb ... 150s Unpacking linux-libc-dev:armhf (6.17.0-5.5) ... 150s Selecting previously unselected package libcrypt-dev:armhf. 150s Preparing to unpack .../09-libcrypt-dev_1%3a4.4.38-1build1_armhf.deb ... 150s Unpacking libcrypt-dev:armhf (1:4.4.38-1build1) ... 150s Selecting previously unselected package rpcsvc-proto. 150s Preparing to unpack .../10-rpcsvc-proto_1.4.3-1_armhf.deb ... 150s Unpacking rpcsvc-proto (1.4.3-1) ... 151s Selecting previously unselected package libc6-dev:armhf. 151s Preparing to unpack .../11-libc6-dev_2.42-2ubuntu2_armhf.deb ... 151s Unpacking libc6-dev:armhf (2.42-2ubuntu2) ... 151s Selecting previously unselected package libisl23:armhf. 151s Preparing to unpack .../12-libisl23_0.27-1_armhf.deb ... 151s Unpacking libisl23:armhf (0.27-1) ... 151s Selecting previously unselected package libmpc3:armhf. 151s Preparing to unpack .../13-libmpc3_1.3.1-2_armhf.deb ... 151s Unpacking libmpc3:armhf (1.3.1-2) ... 151s Selecting previously unselected package cpp-15-arm-linux-gnueabihf. 151s Preparing to unpack .../14-cpp-15-arm-linux-gnueabihf_15.2.0-7ubuntu1_armhf.deb ... 151s Unpacking cpp-15-arm-linux-gnueabihf (15.2.0-7ubuntu1) ... 151s Selecting previously unselected package cpp-15. 151s Preparing to unpack .../15-cpp-15_15.2.0-7ubuntu1_armhf.deb ... 151s Unpacking cpp-15 (15.2.0-7ubuntu1) ... 151s Selecting previously unselected package cpp-arm-linux-gnueabihf. 151s Preparing to unpack .../16-cpp-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 151s Unpacking cpp-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 151s Selecting previously unselected package cpp. 151s Preparing to unpack .../17-cpp_4%3a15.2.0-4ubuntu1_armhf.deb ... 151s Unpacking cpp (4:15.2.0-4ubuntu1) ... 151s Selecting previously unselected package libcc1-0:armhf. 151s Preparing to unpack .../18-libcc1-0_15.2.0-7ubuntu1_armhf.deb ... 151s Unpacking libcc1-0:armhf (15.2.0-7ubuntu1) ... 151s Selecting previously unselected package libgomp1:armhf. 151s Preparing to unpack .../19-libgomp1_15.2.0-7ubuntu1_armhf.deb ... 151s Unpacking libgomp1:armhf (15.2.0-7ubuntu1) ... 151s Selecting previously unselected package libasan8:armhf. 151s Preparing to unpack .../20-libasan8_15.2.0-7ubuntu1_armhf.deb ... 151s Unpacking libasan8:armhf (15.2.0-7ubuntu1) ... 151s Selecting previously unselected package libubsan1:armhf. 152s Preparing to unpack .../21-libubsan1_15.2.0-7ubuntu1_armhf.deb ... 152s Unpacking libubsan1:armhf (15.2.0-7ubuntu1) ... 152s Selecting previously unselected package libgcc-15-dev:armhf. 152s Preparing to unpack .../22-libgcc-15-dev_15.2.0-7ubuntu1_armhf.deb ... 152s Unpacking libgcc-15-dev:armhf (15.2.0-7ubuntu1) ... 152s Selecting previously unselected package gcc-15-arm-linux-gnueabihf. 152s Preparing to unpack .../23-gcc-15-arm-linux-gnueabihf_15.2.0-7ubuntu1_armhf.deb ... 152s Unpacking gcc-15-arm-linux-gnueabihf (15.2.0-7ubuntu1) ... 152s Selecting previously unselected package gcc-15. 152s Preparing to unpack .../24-gcc-15_15.2.0-7ubuntu1_armhf.deb ... 152s Unpacking gcc-15 (15.2.0-7ubuntu1) ... 152s Selecting previously unselected package gcc-arm-linux-gnueabihf. 152s Preparing to unpack .../25-gcc-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 152s Unpacking gcc-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 153s Selecting previously unselected package gcc. 153s Preparing to unpack .../26-gcc_4%3a15.2.0-4ubuntu1_armhf.deb ... 153s Unpacking gcc (4:15.2.0-4ubuntu1) ... 153s Selecting previously unselected package libstdc++-15-dev:armhf. 153s Preparing to unpack .../27-libstdc++-15-dev_15.2.0-7ubuntu1_armhf.deb ... 153s Unpacking libstdc++-15-dev:armhf (15.2.0-7ubuntu1) ... 153s Selecting previously unselected package g++-15-arm-linux-gnueabihf. 153s Preparing to unpack .../28-g++-15-arm-linux-gnueabihf_15.2.0-7ubuntu1_armhf.deb ... 153s Unpacking g++-15-arm-linux-gnueabihf (15.2.0-7ubuntu1) ... 153s Selecting previously unselected package g++-15. 153s Preparing to unpack .../29-g++-15_15.2.0-7ubuntu1_armhf.deb ... 153s Unpacking g++-15 (15.2.0-7ubuntu1) ... 153s Selecting previously unselected package g++-arm-linux-gnueabihf. 153s Preparing to unpack .../30-g++-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 153s Unpacking g++-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 153s Selecting previously unselected package g++. 153s Preparing to unpack .../31-g++_4%3a15.2.0-4ubuntu1_armhf.deb ... 153s Unpacking g++ (4:15.2.0-4ubuntu1) ... 153s Selecting previously unselected package build-essential. 153s Preparing to unpack .../32-build-essential_12.12ubuntu1_armhf.deb ... 153s Unpacking build-essential (12.12ubuntu1) ... 154s Selecting previously unselected package libdebhelper-perl. 154s Preparing to unpack .../33-libdebhelper-perl_13.24.2ubuntu1_all.deb ... 154s Unpacking libdebhelper-perl (13.24.2ubuntu1) ... 154s Selecting previously unselected package libtool. 154s Preparing to unpack .../34-libtool_2.5.4-7_all.deb ... 154s Unpacking libtool (2.5.4-7) ... 154s Selecting previously unselected package dh-autoreconf. 154s Preparing to unpack .../35-dh-autoreconf_21_all.deb ... 154s Unpacking dh-autoreconf (21) ... 154s Selecting previously unselected package libarchive-zip-perl. 154s Preparing to unpack .../36-libarchive-zip-perl_1.68-1_all.deb ... 154s Unpacking libarchive-zip-perl (1.68-1) ... 154s Selecting previously unselected package libfile-stripnondeterminism-perl. 154s Preparing to unpack .../37-libfile-stripnondeterminism-perl_1.15.0-1_all.deb ... 154s Unpacking libfile-stripnondeterminism-perl (1.15.0-1) ... 154s Selecting previously unselected package dh-strip-nondeterminism. 154s Preparing to unpack .../38-dh-strip-nondeterminism_1.15.0-1_all.deb ... 154s Unpacking dh-strip-nondeterminism (1.15.0-1) ... 154s Selecting previously unselected package libdw1t64:armhf. 154s Preparing to unpack .../39-libdw1t64_0.194-1_armhf.deb ... 154s Unpacking libdw1t64:armhf (0.194-1) ... 154s Selecting previously unselected package debugedit. 154s Preparing to unpack .../40-debugedit_1%3a5.2-3_armhf.deb ... 154s Unpacking debugedit (1:5.2-3) ... 154s Selecting previously unselected package dwz. 154s Preparing to unpack .../41-dwz_0.16-2_armhf.deb ... 154s Unpacking dwz (0.16-2) ... 154s Selecting previously unselected package gettext. 154s Preparing to unpack .../42-gettext_0.23.2-1_armhf.deb ... 154s Unpacking gettext (0.23.2-1) ... 154s Selecting previously unselected package intltool-debian. 154s Preparing to unpack .../43-intltool-debian_0.35.0+20060710.6_all.deb ... 154s Unpacking intltool-debian (0.35.0+20060710.6) ... 154s Selecting previously unselected package po-debconf. 154s Preparing to unpack .../44-po-debconf_1.0.21+nmu1_all.deb ... 154s Unpacking po-debconf (1.0.21+nmu1) ... 154s Selecting previously unselected package debhelper. 154s Preparing to unpack .../45-debhelper_13.24.2ubuntu1_all.deb ... 154s Unpacking debhelper (13.24.2ubuntu1) ... 154s Selecting previously unselected package dh-python. 154s Preparing to unpack .../46-dh-python_6.20250414_all.deb ... 154s Unpacking dh-python (6.20250414) ... 154s Selecting previously unselected package libjs-jquery. 154s Preparing to unpack .../47-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 154s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 154s Selecting previously unselected package libjs-jquery-metadata. 154s Preparing to unpack .../48-libjs-jquery-metadata_12-4_all.deb ... 154s Unpacking libjs-jquery-metadata (12-4) ... 154s Selecting previously unselected package libjs-jquery-tablesorter. 154s Preparing to unpack .../49-libjs-jquery-tablesorter_1%3a2.31.3+dfsg1-4_all.deb ... 154s Unpacking libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 154s Selecting previously unselected package libjs-jquery-throttle-debounce. 154s Preparing to unpack .../50-libjs-jquery-throttle-debounce_1.1+dfsg.1-2_all.deb ... 154s Unpacking libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 155s Selecting previously unselected package libpython3.14-stdlib:armhf. 155s Preparing to unpack .../51-libpython3.14-stdlib_3.14.0-4_armhf.deb ... 155s Unpacking libpython3.14-stdlib:armhf (3.14.0-4) ... 155s Selecting previously unselected package pybuild-plugin-autopkgtest. 155s Preparing to unpack .../52-pybuild-plugin-autopkgtest_6.20250414_all.deb ... 155s Unpacking pybuild-plugin-autopkgtest (6.20250414) ... 155s Selecting previously unselected package python3-pyproject-hooks. 155s Preparing to unpack .../53-python3-pyproject-hooks_1.2.0-1_all.deb ... 155s Unpacking python3-pyproject-hooks (1.2.0-1) ... 155s Selecting previously unselected package python3-wheel. 155s Preparing to unpack .../54-python3-wheel_0.46.1-2_all.deb ... 155s Unpacking python3-wheel (0.46.1-2) ... 155s Selecting previously unselected package python3-build. 155s Preparing to unpack .../55-python3-build_1.2.2-4_all.deb ... 155s Unpacking python3-build (1.2.2-4) ... 155s Selecting previously unselected package python3-installer. 155s Preparing to unpack .../56-python3-installer_0.7.0+dfsg1-3_all.deb ... 155s Unpacking python3-installer (0.7.0+dfsg1-3) ... 155s Selecting previously unselected package pybuild-plugin-pyproject. 155s Preparing to unpack .../57-pybuild-plugin-pyproject_6.20250414_all.deb ... 155s Unpacking pybuild-plugin-pyproject (6.20250414) ... 155s Selecting previously unselected package python3.14. 155s Preparing to unpack .../58-python3.14_3.14.0-4_armhf.deb ... 155s Unpacking python3.14 (3.14.0-4) ... 155s Selecting previously unselected package python3-all. 155s Preparing to unpack .../59-python3-all_3.13.7-2_armhf.deb ... 155s Unpacking python3-all (3.13.7-2) ... 155s Selecting previously unselected package python3-coverage. 155s Preparing to unpack .../60-python3-coverage_7.8.2+dfsg1-1_armhf.deb ... 155s Unpacking python3-coverage (7.8.2+dfsg1-1) ... 155s Selecting previously unselected package python3-joblib. 155s Preparing to unpack .../61-python3-joblib_1.4.2-4_all.deb ... 155s Unpacking python3-joblib (1.4.2-4) ... 155s Selecting previously unselected package python3-platformdirs. 155s Preparing to unpack .../62-python3-platformdirs_4.3.7-1_all.deb ... 155s Unpacking python3-platformdirs (4.3.7-1) ... 155s Selecting previously unselected package python3-fscacher. 155s Preparing to unpack .../63-python3-fscacher_0.4.3-0.3_all.deb ... 155s Unpacking python3-fscacher (0.4.3-0.3) ... 155s Selecting previously unselected package python3-iniconfig. 155s Preparing to unpack .../64-python3-iniconfig_2.1.0-1_all.deb ... 155s Unpacking python3-iniconfig (2.1.0-1) ... 155s Selecting previously unselected package python3-pluggy. 155s Preparing to unpack .../65-python3-pluggy_1.6.0-1_all.deb ... 155s Unpacking python3-pluggy (1.6.0-1) ... 155s Selecting previously unselected package python3-pytest. 155s Preparing to unpack .../66-python3-pytest_8.3.5-2_all.deb ... 155s Unpacking python3-pytest (8.3.5-2) ... 156s Selecting previously unselected package libjs-jquery-hotkeys. 156s Preparing to unpack .../67-libjs-jquery-hotkeys_0.2.0-1_all.deb ... 156s Unpacking libjs-jquery-hotkeys (0.2.0-1) ... 156s Selecting previously unselected package libjs-jquery-isonscreen. 156s Preparing to unpack .../68-libjs-jquery-isonscreen_1.2.0-1.1_all.deb ... 156s Unpacking libjs-jquery-isonscreen (1.2.0-1.1) ... 156s Selecting previously unselected package python3-pytest-cov. 156s Preparing to unpack .../69-python3-pytest-cov_5.0.0-1_all.deb ... 156s Unpacking python3-pytest-cov (5.0.0-1) ... 156s Selecting previously unselected package python3-pytest-mock. 156s Preparing to unpack .../70-python3-pytest-mock_3.15.1-1_all.deb ... 156s Unpacking python3-pytest-mock (3.15.1-1) ... 156s Selecting previously unselected package python3-pytest-rerunfailures. 156s Preparing to unpack .../71-python3-pytest-rerunfailures_16.1-1_all.deb ... 156s Unpacking python3-pytest-rerunfailures (16.1-1) ... 156s Setting up dh-python (6.20250414) ... 156s Setting up python3-iniconfig (2.1.0-1) ... 157s Setting up python3-joblib (1.4.2-4) ... 157s Setting up libarchive-zip-perl (1.68-1) ... 157s Setting up libdebhelper-perl (13.24.2ubuntu1) ... 157s Setting up libpython3.14-minimal:armhf (3.14.0-4) ... 157s Setting up linux-libc-dev:armhf (6.17.0-5.5) ... 157s Setting up m4 (1.4.20-2) ... 157s Setting up python3-coverage (7.8.2+dfsg1-1) ... 158s Setting up libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 158s Setting up libgomp1:armhf (15.2.0-7ubuntu1) ... 158s Setting up python3-wheel (0.46.1-2) ... 158s Setting up python3-platformdirs (4.3.7-1) ... 158s Setting up libdw1t64:armhf (0.194-1) ... 158s Setting up python3-fscacher (0.4.3-0.3) ... 158s Setting up autotools-dev (20240727.1) ... 158s Setting up rpcsvc-proto (1.4.3-1) ... 158s Setting up python3-pyproject-hooks (1.2.0-1) ... 158s Setting up libmpc3:armhf (1.3.1-2) ... 158s Setting up autopoint (0.23.2-1) ... 158s Setting up python3-installer (0.7.0+dfsg1-3) ... 159s Setting up autoconf (2.72-3.1ubuntu1) ... 159s Setting up python3-pluggy (1.6.0-1) ... 159s Setting up libubsan1:armhf (15.2.0-7ubuntu1) ... 159s Setting up dwz (0.16-2) ... 159s Setting up libcrypt-dev:armhf (1:4.4.38-1build1) ... 159s Setting up libasan8:armhf (15.2.0-7ubuntu1) ... 159s Setting up debugedit (1:5.2-3) ... 159s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 159s Setting up libjs-jquery-hotkeys (0.2.0-1) ... 159s Setting up libisl23:armhf (0.27-1) ... 159s Setting up python3-build (1.2.2-4) ... 159s Setting up libc-dev-bin (2.42-2ubuntu2) ... 159s Setting up cpp-15-arm-linux-gnueabihf (15.2.0-7ubuntu1) ... 159s Setting up python3.14-minimal (3.14.0-4) ... 160s Setting up libcc1-0:armhf (15.2.0-7ubuntu1) ... 160s Setting up cpp-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 160s Setting up automake (1:1.18.1-2) ... 160s update-alternatives: using /usr/bin/automake-1.18 to provide /usr/bin/automake (automake) in auto mode 160s Setting up libfile-stripnondeterminism-perl (1.15.0-1) ... 160s Setting up gettext (0.23.2-1) ... 160s Setting up libgcc-15-dev:armhf (15.2.0-7ubuntu1) ... 160s Setting up gcc-15-arm-linux-gnueabihf (15.2.0-7ubuntu1) ... 160s Setting up libpython3.14-stdlib:armhf (3.14.0-4) ... 160s Setting up pybuild-plugin-pyproject (6.20250414) ... 160s Setting up python3-pytest (8.3.5-2) ... 161s Setting up intltool-debian (0.35.0+20060710.6) ... 161s Setting up libjs-jquery-metadata (12-4) ... 161s Setting up libjs-jquery-isonscreen (1.2.0-1.1) ... 161s Setting up dh-strip-nondeterminism (1.15.0-1) ... 161s Setting up libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 161s Setting up python3-pytest-mock (3.15.1-1) ... 162s Setting up cpp-15 (15.2.0-7ubuntu1) ... 162s Setting up cpp (4:15.2.0-4ubuntu1) ... 162s Setting up libc6-dev:armhf (2.42-2ubuntu2) ... 162s Setting up python3.14 (3.14.0-4) ... 164s Setting up gcc-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 164s Setting up python3-pytest-rerunfailures (16.1-1) ... 164s Setting up po-debconf (1.0.21+nmu1) ... 164s Setting up python3-all (3.13.7-2) ... 164s Setting up python3-pytest-cov (5.0.0-1) ... 164s Setting up gcc-15 (15.2.0-7ubuntu1) ... 164s Setting up libstdc++-15-dev:armhf (15.2.0-7ubuntu1) ... 164s Setting up libtool (2.5.4-7) ... 164s Setting up g++-15-arm-linux-gnueabihf (15.2.0-7ubuntu1) ... 164s Setting up gcc (4:15.2.0-4ubuntu1) ... 164s Setting up dh-autoreconf (21) ... 164s Setting up g++-15 (15.2.0-7ubuntu1) ... 164s Setting up g++-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 164s Setting up debhelper (13.24.2ubuntu1) ... 164s Setting up g++ (4:15.2.0-4ubuntu1) ... 164s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 164s Setting up build-essential (12.12ubuntu1) ... 164s Setting up pybuild-plugin-autopkgtest (6.20250414) ... 164s Processing triggers for man-db (2.13.1-1) ... 165s Processing triggers for install-info (7.2-5) ... 166s Processing triggers for libc-bin (2.42-2ubuntu2) ... 166s Processing triggers for systemd (257.9-0ubuntu2) ... 174s autopkgtest [11:44:20]: test pybuild-autopkgtest: pybuild-autopkgtest 174s autopkgtest [11:44:20]: test pybuild-autopkgtest: [----------------------- 176s pybuild-autopkgtest 176s I: pybuild base:311: cd /tmp/autopkgtest.04OuTC/autopkgtest_tmp/build; python3.14 -m pytest 176s ============================= test session starts ============================== 176s platform linux -- Python 3.14.0, pytest-8.3.5, pluggy-1.6.0 176s rootdir: /tmp/autopkgtest.04OuTC/autopkgtest_tmp/build 176s plugins: typeguard-4.4.2, cov-5.0.0, mock-3.15.1, rerunfailures-16.1 176s collected 27 items 176s 178s tests/test_cache.py FFFFFF..........sF.FFF [ 81%] 178s tests/test_util.py ..... [100%] 178s 178s =================================== FAILURES =================================== 178s _________________________________ test_memoize _________________________________ 178s 178s cache = 178s 178s def test_memoize(cache): 178s # Simplest testing to start with, not relying on persisting across 178s # independent processes 178s _comp = [] 178s 178s @cache.memoize 178s def f1(flag=False): 178s if flag: 178s raise ValueError("Got flag") 178s if _comp: 178s raise RuntimeError("Must not be recomputed") 178s _comp.append(1) 178s return 1 178s 178s > assert f1() == 1 178s 178s tests/test_cache.py:51: 178s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 178s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 178s return self._cached_call(args, kwargs, shelving=False)[0] 178s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 178s args_id = self._get_args_id(*args, **kwargs) 178s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 178s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 178s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 178s return hasher.hash(obj) 178s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 178s self.dump(obj) 178s /usr/lib/python3.14/pickle.py:498: in dump 178s self.save(obj) 178s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 178s Pickler.save(self, obj) 178s /usr/lib/python3.14/pickle.py:572: in save 178s f(self, obj) # Call unbound method with explicit self 178s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 178s 178s self = , obj = {'flag': False} 178s 178s def save_dict(self, obj): 178s if self.bin: 178s self.write(EMPTY_DICT) 178s else: # proto 0 -- can't use EMPTY_DICT 178s self.write(MARK + DICT) 178s 178s self.memoize(obj) 178s > self._batch_setitems(obj.items(), obj) 178s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 178s 178s /usr/lib/python3.14/pickle.py:1064: TypeError 178s ____________________________ test_memoize_multiple _____________________________ 178s 178s cache = 178s 178s def test_memoize_multiple(cache): 178s # Make sure that with the same cache can cover multiple functions 178s @cache.memoize 178s def f1(): 178s return 1 178s 178s @cache.memoize 178s def f2(): 178s return 2 178s 178s @cache.memoize 178s def f3(): # nesting call into f2 178s return f2() + 1 178s 178s for _ in range(3): 178s > assert f1() == 1 178s 178s tests/test_cache.py:86: 178s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 178s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 178s return self._cached_call(args, kwargs, shelving=False)[0] 178s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 178s args_id = self._get_args_id(*args, **kwargs) 178s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 178s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 178s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 178s return hasher.hash(obj) 178s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 178s self.dump(obj) 178s /usr/lib/python3.14/pickle.py:498: in dump 178s self.save(obj) 178s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 178s Pickler.save(self, obj) 178s /usr/lib/python3.14/pickle.py:572: in save 178s f(self, obj) # Call unbound method with explicit self 178s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 178s 178s self = , obj = {} 178s 178s def save_dict(self, obj): 178s if self.bin: 178s self.write(EMPTY_DICT) 178s else: # proto 0 -- can't use EMPTY_DICT 178s self.write(MARK + DICT) 178s 178s self.memoize(obj) 178s > self._batch_setitems(obj.items(), obj) 178s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 178s 178s /usr/lib/python3.14/pickle.py:1064: TypeError 178s ______________________________ test_memoize_path _______________________________ 178s 178s cache = 178s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0') 178s 178s def test_memoize_path(cache, tmp_path): 178s calls = [] 178s 178s @cache.memoize_path 178s def memoread(path, arg, kwarg=None): 178s calls.append([path, arg, kwarg]) 178s with open(path) as f: 178s return f.read() 178s 178s def check_new_memoread(arg, content, expect_new=False): 178s ncalls = len(calls) 178s assert memoread(path, arg) == content 178s assert len(calls) == ncalls + 1 178s assert memoread(path, arg) == content 178s assert len(calls) == ncalls + 1 + int(expect_new) 178s 178s fname = "file.dat" 178s path = str(tmp_path / fname) 178s 178s with pytest.raises(IOError): 178s memoread(path, 0) 178s # and again 178s with pytest.raises(IOError): 178s memoread(path, 0) 178s assert len(calls) == 2 178s 178s with open(path, "w") as f: 178s f.write("content") 178s 178s t0 = time.time() 178s try: 178s # unless this computer is too slow -- there should be less than 178s # cache._min_dtime between our creating the file and testing, 178s # so we would force a direct read: 178s check_new_memoread(0, "content", True) 178s except AssertionError: # pragma: no cover 178s # if computer is indeed slow (happens on shared CIs) we might fail 178s # because distance is too short 178s if time.time() - t0 < cache._min_dtime: 178s raise # if we were quick but still failed -- legit 179s assert calls[-1] == [path, 0, None] 179s 179s # but if we sleep - should memoize 179s time.sleep(cache._min_dtime * 1.1) 179s > check_new_memoread(1, "content") 179s 179s tests/test_cache.py:135: 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s tests/test_cache.py:102: in check_new_memoread 179s assert memoread(path, arg) == content 179s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 179s ret = fingerprinted(*args, **kwargs_) 179s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 179s return self._cached_call(args, kwargs, shelving=False)[0] 179s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 179s args_id = self._get_args_id(*args, **kwargs) 179s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 179s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 179s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 179s return hasher.hash(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 179s self.dump(obj) 179s /usr/lib/python3.14/pickle.py:498: in dump 179s self.save(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 179s Pickler.save(self, obj) 179s /usr/lib/python3.14/pickle.py:572: in save 179s f(self, obj) # Call unbound method with explicit self 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s 179s self = 179s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat', 1763379863034048360, 1763379863034048360, 7, 84491), 'arg': 1, 'kwarg': None} 179s 179s def save_dict(self, obj): 179s if self.bin: 179s self.write(EMPTY_DICT) 179s else: # proto 0 -- can't use EMPTY_DICT 179s self.write(MARK + DICT) 179s 179s self.memoize(obj) 179s > self._batch_setitems(obj.items(), obj) 179s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 179s 179s /usr/lib/python3.14/pickle.py:1064: TypeError 179s ------------------------------ Captured log call ------------------------------- 179s 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' 179s DEBUG fscacher.cache:cache.py:145 Calling .memoread at 0xf48a3ef0> directly since no fingerprint for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 179s 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' 179s DEBUG fscacher.cache:cache.py:145 Calling .memoread at 0xf48a3ef0> directly since no fingerprint for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 179s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat: FileFingerprint(mtime_ns=1763379863034048360, ctime_ns=1763379863034048360, size=7, inode=84491) 179s DEBUG fscacher.cache:cache.py:153 Calling .memoread at 0xf48a3ef0> directly since too short for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 179s Level 1 fscacher.cache:cache.py:165 Returning value 'content' 179s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat: FileFingerprint(mtime_ns=1763379863034048360, ctime_ns=1763379863034048360, size=7, inode=84491) 179s DEBUG fscacher.cache:cache.py:153 Calling .memoread at 0xf48a3ef0> directly since too short for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat' 179s Level 1 fscacher.cache:cache.py:165 Returning value 'content' 179s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat: FileFingerprint(mtime_ns=1763379863034048360, ctime_ns=1763379863034048360, size=7, inode=84491) 179s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread at 0xf48a3ef0> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path0/file.dat 179s ____________________________ test_memoize_path_dir _____________________________ 179s 179s cache = 179s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0') 179s 179s @pytest.mark.flaky(reruns=5, condition=on_windows) 179s def test_memoize_path_dir(cache, tmp_path): 179s calls = [] 179s 179s @cache.memoize_path 179s def memoread(path, arg, kwarg=None): 179s calls.append([path, arg, kwarg]) 179s total_size = 0 179s with os.scandir(path) as entries: 179s for e in entries: 179s if e.is_file(): 179s total_size += e.stat().st_size 179s return total_size 179s 179s def check_new_memoread(arg, content, expect_new=False): 179s ncalls = len(calls) 179s assert memoread(path, arg) == content 179s assert len(calls) == ncalls + 1 179s assert memoread(path, arg) == content 179s assert len(calls) == ncalls + 1 + int(expect_new) 179s 179s fname = "foo" 179s path = tmp_path / fname 179s 179s with pytest.raises(IOError): 179s memoread(path, 0) 179s # and again 179s with pytest.raises(IOError): 179s memoread(path, 0) 179s assert len(calls) == 2 179s 179s path.mkdir() 179s (path / "a.txt").write_text("Alpha") 179s (path / "b.txt").write_text("Beta") 179s 179s t0 = time.time() 179s try: 179s # unless this computer is too slow -- there should be less than 179s # cache._min_dtime between our creating the file and testing, 179s # so we would force a direct read: 179s check_new_memoread(0, 9, True) 179s except AssertionError: # pragma: no cover 179s # if computer is indeed slow (happens on shared CIs) we might fail 179s # because distance is too short 179s t_now = time.time() 179s if t_now - t0 < cache._min_dtime: 179s # Log more information to troubleshoot 179s lgr.error(f"Failing test with t0={t0}, t_now={t_now}, " 179s f"dt={t_now - t0}, min_dtime={cache._min_dtime}") 179s for p in ("a.txt", "b.txt"): 179s lgr.error(f" {p}: {op.getmtime(path / p)}") 179s raise # if we were quick but still failed -- legit 179s assert calls[-1] == [path, 0, None] 179s 179s # but if we sleep - should memoize 179s time.sleep(cache._min_dtime * 1.1) 179s > check_new_memoread(1, 9) 179s 179s tests/test_cache.py:225: 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s tests/test_cache.py:185: in check_new_memoread 179s assert memoread(path, arg) == content 179s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 179s ret = fingerprinted(*args, **kwargs_) 179s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 179s return self._cached_call(args, kwargs, shelving=False)[0] 179s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 179s args_id = self._get_args_id(*args, **kwargs) 179s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 179s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 179s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 179s return hasher.hash(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 179s self.dump(obj) 179s /usr/lib/python3.14/pickle.py:498: in dump 179s self.save(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 179s Pickler.save(self, obj) 179s /usr/lib/python3.14/pickle.py:572: in save 179s f(self, obj) # Call unbound method with explicit self 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s 179s self = 179s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo', '73a7ef8a40b931ae22ca37f1b8d13cf5'), 'arg': 1, 'kwarg': None} 179s 179s def save_dict(self, obj): 179s if self.bin: 179s self.write(EMPTY_DICT) 179s else: # proto 0 -- can't use EMPTY_DICT 179s self.write(MARK + DICT) 179s 179s self.memoize(obj) 179s > self._batch_setitems(obj.items(), obj) 179s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 179s 179s /usr/lib/python3.14/pickle.py:1064: TypeError 179s ------------------------------ Captured log call ------------------------------- 179s 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' 179s 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' 179s DEBUG fscacher.cache:cache.py:145 Calling .memoread at 0xf48a36b0> directly since no fingerprint for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 179s 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' 179s 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' 179s DEBUG fscacher.cache:cache.py:145 Calling .memoread at 0xf48a36b0> directly since no fingerprint for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 179s 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' 179s DEBUG fscacher.cache:cache.py:153 Calling .memoread at 0xf48a36b0> directly since too short for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 179s Level 1 fscacher.cache:cache.py:165 Returning value 9 179s 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' 179s DEBUG fscacher.cache:cache.py:153 Calling .memoread at 0xf48a36b0> directly since too short for '/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo' 179s Level 1 fscacher.cache:cache.py:165 Returning value 9 179s 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' 179s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread at 0xf48a36b0> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_dir0/foo 179s __________________________ test_memoize_path_persist ___________________________ 179s 179s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_persist0') 179s 179s def test_memoize_path_persist(tmp_path): 179s from subprocess import PIPE, run 179s 179s script = tmp_path / "script.py" 179s cachedir = tmp_path / "cache" 179s script.write_text( 179s "from os.path import basename\n" 179s "from fscacher import PersistentCache\n" 179s f"cache = PersistentCache(path={str(cachedir)!r})\n" 179s "\n" 179s "@cache.memoize_path\n" 179s "def func(path):\n" 179s " print('Running %s.' % basename(path), end='')\n" 179s " return 'DONE'\n" 179s "\n" 179s f"print(func({str(script)!r}))\n" 179s ) 179s 179s outputs = [ 179s run([sys.executable, str(script)], stdout=PIPE, stderr=PIPE) for i in range(3) 179s ] 179s print("Full outputs: %s" % repr(outputs)) 179s if b"File name too long" in outputs[0].stderr: 179s # must be running during conda build which blows up paths with 179s # _placehold_ers 179s pytest.skip("seems to be running on conda and hitting the limits") 179s > assert outputs[0].stdout.strip().decode() == "Running script.py.DONE" 179s E AssertionError: assert '' == 'Running script.py.DONE' 179s E 179s E - Running script.py.DONE 179s 179s tests/test_cache.py:284: AssertionError 179s ----------------------------- Captured stdout call ----------------------------- 179s 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(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')] 179s ___________________________ test_memoize_path_tokens ___________________________ 179s 179s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_tokens0') 179s cache = 179s cache_tokens = 179s 179s def test_memoize_path_tokens(tmp_path, cache, cache_tokens): 179s calls = [] 179s 179s @cache.memoize_path 179s def memoread(path, arg, kwarg=None): 179s calls.append(["cache", path, arg, kwarg]) 179s with open(path) as f: 179s return f.read() 179s 179s @cache_tokens.memoize_path 179s def memoread_tokens(path, arg, kwarg=None): 179s calls.append(["cache_tokens", path, arg, kwarg]) 179s with open(path) as f: 179s return f.read() 179s 179s def check_new_memoread(call, arg, content, expect_first=True, expect_new=False): 179s ncalls = len(calls) 179s assert call(path, arg) == content 179s assert len(calls) == ncalls + int(expect_first) 179s assert call(path, arg) == content 179s assert len(calls) == ncalls + int(expect_first) + int(expect_new) 179s 179s path = str(tmp_path / "file.dat") 179s 179s with open(path, "w") as f: 179s f.write("content") 179s 179s time.sleep(cache._min_dtime * 1.1) 179s # They both are independent, so both will cause a new readout 179s > check_new_memoread(memoread, 0, "content") 179s 179s tests/test_cache.py:318: 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s tests/test_cache.py:306: in check_new_memoread 179s assert call(path, arg) == content 179s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 179s ret = fingerprinted(*args, **kwargs_) 179s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 179s return self._cached_call(args, kwargs, shelving=False)[0] 179s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 179s args_id = self._get_args_id(*args, **kwargs) 179s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 179s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 179s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 179s return hasher.hash(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 179s self.dump(obj) 179s /usr/lib/python3.14/pickle.py:498: in dump 179s self.save(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 179s Pickler.save(self, obj) 179s /usr/lib/python3.14/pickle.py:572: in save 179s f(self, obj) # Call unbound method with explicit self 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s 179s self = 179s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_tokens0/file.dat', 1763379864241045624, 1763379864241045624, 7, 84527), 'arg': 0, 'kwarg': None} 179s 179s def save_dict(self, obj): 179s if self.bin: 179s self.write(EMPTY_DICT) 179s else: # proto 0 -- can't use EMPTY_DICT 179s self.write(MARK + DICT) 179s 179s self.memoize(obj) 179s > self._batch_setitems(obj.items(), obj) 179s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 179s 179s /usr/lib/python3.14/pickle.py:1064: TypeError 179s ------------------------------ Captured log call ------------------------------- 179s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_tokens0/file.dat: FileFingerprint(mtime_ns=1763379864241045624, ctime_ns=1763379864241045624, size=7, inode=84527) 179s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread at 0xf495d708> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_tokens0/file.dat 179s ________________________ test_memoize_path_nonpath_arg _________________________ 179s 179s cache = 179s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_nonpath_arg0') 179s 179s def test_memoize_path_nonpath_arg(cache, tmp_path): 179s calls = [] 179s 179s @cache.memoize_path 179s def memoread(filepath, arg, kwarg=None): 179s calls.append([filepath, arg, kwarg]) 179s with open(filepath) as f: 179s return f.read() 179s 179s path = str(tmp_path / "file.dat") 179s with open(path, "w") as f: 179s f.write("content") 179s 179s time.sleep(cache._min_dtime * 1.1) 179s 179s ncalls = len(calls) 179s > assert memoread(path, 1) == "content" 179s 179s tests/test_cache.py:414: 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 179s ret = fingerprinted(*args, **kwargs_) 179s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 179s return self._cached_call(args, kwargs, shelving=False)[0] 179s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 179s args_id = self._get_args_id(*args, **kwargs) 179s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 179s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 179s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 179s return hasher.hash(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 179s self.dump(obj) 179s /usr/lib/python3.14/pickle.py:498: in dump 179s self.save(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 179s Pickler.save(self, obj) 179s /usr/lib/python3.14/pickle.py:572: in save 179s f(self, obj) # Call unbound method with explicit self 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s 179s self = 179s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_nonpath_arg0/file.dat', 1763379864384045299, 1763379864384045299, 7, 84557), 'arg': 1, 'kwarg': None} 179s 179s def save_dict(self, obj): 179s if self.bin: 179s self.write(EMPTY_DICT) 179s else: # proto 0 -- can't use EMPTY_DICT 179s self.write(MARK + DICT) 179s 179s self.memoize(obj) 179s > self._batch_setitems(obj.items(), obj) 179s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 179s 179s /usr/lib/python3.14/pickle.py:1064: TypeError 179s ------------------------------ Captured log call ------------------------------- 179s 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=1763379864384045299, ctime_ns=1763379864384045299, size=7, inode=84557) 179s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread at 0xf483ce98> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_nonpath_arg0/file.dat 179s ________________________ test_memoize_non_pathlike_arg _________________________ 179s 179s cache = 179s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0') 179s 179s def test_memoize_non_pathlike_arg(cache, tmp_path): 179s calls = [] 179s 179s @cache.memoize_path 179s def strify(x): 179s calls.append(x) 179s return str(x) 179s 179s path = tmp_path / "foo" 179s path.touch() 179s time.sleep(cache._min_dtime * 1.1) 179s 179s > assert strify(path) == str(path) 179s 179s tests/test_cache.py:458: 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 179s ret = fingerprinted(*args, **kwargs_) 179s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 179s return self._cached_call(args, kwargs, shelving=False)[0] 179s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 179s args_id = self._get_args_id(*args, **kwargs) 179s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 179s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 179s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 179s return hasher.hash(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 179s self.dump(obj) 179s /usr/lib/python3.14/pickle.py:498: in dump 179s self.save(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 179s Pickler.save(self, obj) 179s /usr/lib/python3.14/pickle.py:572: in save 179s f(self, obj) # Call unbound method with explicit self 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s 179s self = 179s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0/foo', 1763379864496045046, 1763379864496045046, 0, 84572)} 179s 179s def save_dict(self, obj): 179s if self.bin: 179s self.write(EMPTY_DICT) 179s else: # proto 0 -- can't use EMPTY_DICT 179s self.write(MARK + DICT) 179s 179s self.memoize(obj) 179s > self._batch_setitems(obj.items(), obj) 179s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 179s 179s /usr/lib/python3.14/pickle.py:1064: TypeError 179s ------------------------------ Captured log call ------------------------------- 179s 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' 179s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0/foo: FileFingerprint(mtime_ns=1763379864496045046, ctime_ns=1763379864496045046, size=0, inode=84572) 179s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .strify at 0xf483cc88> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_non_pathlike_arg0/foo 179s __________________________ test_memoize_pathlike_arg ___________________________ 179s 179s cache = 179s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0') 179s 179s def test_memoize_pathlike_arg(cache, tmp_path): 179s calls = [] 179s 179s @cache.memoize_path 179s def strify(x): 179s calls.append(x) 179s return str(x) 179s 179s path = tmp_path / "foo" 179s path.touch() 179s foo = PathWrapper(path) 179s 179s path2 = tmp_path / "bar" 179s path2.touch() 179s bar = PathWrapper(path2) 179s 179s time.sleep(cache._min_dtime * 1.1) 179s 179s > assert strify(path) == str(path) 179s 179s tests/test_cache.py:500: 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 179s ret = fingerprinted(*args, **kwargs_) 179s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 179s return self._cached_call(args, kwargs, shelving=False)[0] 179s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 179s args_id = self._get_args_id(*args, **kwargs) 179s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 179s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 179s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 179s return hasher.hash(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 179s self.dump(obj) 179s /usr/lib/python3.14/pickle.py:498: in dump 179s self.save(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 179s Pickler.save(self, obj) 179s /usr/lib/python3.14/pickle.py:572: in save 179s f(self, obj) # Call unbound method with explicit self 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s 179s self = 179s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0/foo', 1763379864604044801, 1763379864604044801, 0, 84582)} 179s 179s def save_dict(self, obj): 179s if self.bin: 179s self.write(EMPTY_DICT) 179s else: # proto 0 -- can't use EMPTY_DICT 179s self.write(MARK + DICT) 179s 179s self.memoize(obj) 179s > self._batch_setitems(obj.items(), obj) 179s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 179s 179s /usr/lib/python3.14/pickle.py:1064: TypeError 179s ------------------------------ Captured log call ------------------------------- 179s 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' 179s Level 5 fscacher.cache:cache.py:179 Fingerprint for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0/foo: FileFingerprint(mtime_ns=1763379864604044801, ctime_ns=1763379864604044801, size=0, inode=84582) 179s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .strify at 0xf483c4a0> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_pathlike_arg0/foo 179s _______________________ test_memoize_path_exclude_kwargs _______________________ 179s 179s cache = 179s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0') 179s 179s def test_memoize_path_exclude_kwargs(cache, tmp_path): 179s calls = [] 179s 179s @cache.memoize_path(exclude_kwargs=["extra"]) 179s def memoread_extra(path, arg, kwarg=None, extra=None): 179s calls.append((path, arg, kwarg, extra)) 179s with open(path) as f: 179s return f.read() 179s 179s path = tmp_path / "file.dat" 179s path.write_text("content") 179s 179s time.sleep(cache._min_dtime * 1.1) 179s 179s > assert memoread_extra(path, 1, extra="foo") == "content" 179s 179s tests/test_cache.py:533: 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s /usr/lib/python3/dist-packages/fscacher/cache.py:164: in fingerprinter 179s ret = fingerprinted(*args, **kwargs_) 179s /usr/lib/python3/dist-packages/joblib/memory.py:577: in __call__ 179s return self._cached_call(args, kwargs, shelving=False)[0] 179s /usr/lib/python3/dist-packages/joblib/memory.py:483: in _cached_call 179s args_id = self._get_args_id(*args, **kwargs) 179s /usr/lib/python3/dist-packages/joblib/memory.py:616: in _get_args_id 179s return hashing.hash(filter_args(self.func, self.ignore, args, kwargs), 179s /usr/lib/python3/dist-packages/joblib/hashing.py:265: in hash 179s return hasher.hash(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:63: in hash 179s self.dump(obj) 179s /usr/lib/python3.14/pickle.py:498: in dump 179s self.save(obj) 179s /usr/lib/python3/dist-packages/joblib/hashing.py:89: in save 179s Pickler.save(self, obj) 179s /usr/lib/python3.14/pickle.py:572: in save 179s f(self, obj) # Call unbound method with explicit self 179s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 179s 179s self = 179s obj = {'_cache_fingerprint': ('/tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0/file.dat', 1763379864712044556, 1763379864712044556, 7, 84593), 'arg': 1, 'kwarg': None} 179s 179s def save_dict(self, obj): 179s if self.bin: 179s self.write(EMPTY_DICT) 179s else: # proto 0 -- can't use EMPTY_DICT 179s self.write(MARK + DICT) 179s 179s self.memoize(obj) 179s > self._batch_setitems(obj.items(), obj) 179s E TypeError: Hasher._batch_setitems() takes 2 positional arguments but 3 were given 179s 179s /usr/lib/python3.14/pickle.py:1064: TypeError 179s ------------------------------ Captured log call ------------------------------- 179s 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' 179s 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=1763379864712044556, ctime_ns=1763379864712044556, size=7, inode=84593) 179s DEBUG fscacher.cache:cache.py:156 Calling memoized version of .memoread_extra at 0xf4964fa0> for /tmp/pytest-of-ubuntu/pytest-0/test_memoize_path_exclude_kwar0/file.dat 179s =============================== warnings summary =============================== 179s tests/test_cache.py: 12 warnings 179s /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 179s if asyncio.iscoroutinefunction(func) 179s 179s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 179s =========================== short test summary info ============================ 179s FAILED tests/test_cache.py::test_memoize - TypeError: Hasher._batch_setitems(... 179s FAILED tests/test_cache.py::test_memoize_multiple - TypeError: Hasher._batch_... 179s FAILED tests/test_cache.py::test_memoize_path - TypeError: Hasher._batch_seti... 179s FAILED tests/test_cache.py::test_memoize_path_dir - TypeError: Hasher._batch_... 179s FAILED tests/test_cache.py::test_memoize_path_persist - AssertionError: asser... 179s FAILED tests/test_cache.py::test_memoize_path_tokens - TypeError: Hasher._bat... 179s FAILED tests/test_cache.py::test_memoize_path_nonpath_arg - TypeError: Hasher... 179s FAILED tests/test_cache.py::test_memoize_non_pathlike_arg - TypeError: Hasher... 179s FAILED tests/test_cache.py::test_memoize_pathlike_arg - TypeError: Hasher._ba... 179s FAILED tests/test_cache.py::test_memoize_path_exclude_kwargs - TypeError: Has... 179s ============ 10 failed, 16 passed, 1 skipped, 12 warnings in 2.12s ============= 179s E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.04OuTC/autopkgtest_tmp/build; python3.14 -m pytest 179s I: pybuild base:311: cd /tmp/autopkgtest.04OuTC/autopkgtest_tmp/build; python3.13 -m pytest 179s ============================= test session starts ============================== 179s platform linux -- Python 3.13.9, pytest-8.3.5, pluggy-1.6.0 179s rootdir: /tmp/autopkgtest.04OuTC/autopkgtest_tmp/build 179s plugins: typeguard-4.4.2, cov-5.0.0, mock-3.15.1, rerunfailures-16.1 179s collected 27 items 179s 180s tests/test_cache.py ................s..... [ 81%] 180s tests/test_util.py ..... [100%] 180s 180s ======================== 26 passed, 1 skipped in 0.94s ========================= 180s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.14 3.13" returned exit code 13 180s make: *** [/tmp/YIPkKfQT0z/run:4: pybuild-autopkgtest] Error 25 180s pybuild-autopkgtest: error: /tmp/YIPkKfQT0z/run pybuild-autopkgtest returned exit code 2 180s autopkgtest [11:44:26]: test pybuild-autopkgtest: -----------------------] 184s autopkgtest [11:44:30]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 184s pybuild-autopkgtest FAIL non-zero exit status 25 188s autopkgtest [11:44:34]: @@@@@@@@@@@@@@@@@@@@ summary 188s pybuild-autopkgtest FAIL non-zero exit status 25