0s autopkgtest [16:35:24]: starting date and time: 2026-02-05 16:35:24+0000 0s autopkgtest [16:35:24]: git checkout: 508d4a25 a-v-ssh wait_for_ssh: demote "ssh connection failed" to a debug message 0s autopkgtest [16:35:24]: host juju-7f2275-prod-proposed-migration-environment-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.ydg2rpdx/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:tqdm --apt-upgrade python-nxtomomill --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=tqdm/4.67.3-1 -- lxd -r lxd-armhf-10.145.243.56 lxd-armhf-10.145.243.56:autopkgtest/ubuntu/resolute/armhf 21s autopkgtest [16:35:45]: testbed dpkg architecture: armhf 23s autopkgtest [16:35:47]: testbed apt version: 3.1.14 27s autopkgtest [16:35:51]: @@@@@@@@@@@@@@@@@@@@ test bed setup 29s autopkgtest [16:35:53]: testbed release detected to be: None 36s autopkgtest [16:36:00]: updating testbed package index (apt update) 38s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 39s Get:2 http://ftpmaster.internal/ubuntu resolute InRelease [124 kB] 39s Get:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease [124 kB] 39s Get:4 http://ftpmaster.internal/ubuntu resolute-security InRelease [124 kB] 40s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1686 kB] 42s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [5260 B] 42s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [230 kB] 42s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [36.0 kB] 42s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main armhf Packages [256 kB] 43s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf Packages [1372 kB] 45s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse armhf Packages [10.3 kB] 45s Get:12 http://ftpmaster.internal/ubuntu resolute/main Sources [1399 kB] 47s Get:13 http://ftpmaster.internal/ubuntu resolute/universe Sources [21.3 MB] 81s Get:14 http://ftpmaster.internal/ubuntu resolute/main armhf Packages [1374 kB] 83s Get:15 http://ftpmaster.internal/ubuntu resolute/universe armhf Packages [15.3 MB] 108s Fetched 43.4 MB in 1min 9s (625 kB/s) 109s Reading package lists... 115s autopkgtest [16:37:19]: upgrading testbed (apt dist-upgrade and autopurge) 117s Reading package lists... 117s Building dependency tree... 117s Reading state information... 117s Calculating upgrade... 118s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 120s Reading package lists... 120s Building dependency tree... 120s Reading state information... 120s Solving dependencies... 121s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 123s autopkgtest [16:37:27]: rebooting testbed after setup commands that affected boot 164s autopkgtest [16:38:08]: testbed running kernel: Linux 6.8.0-87-generic #88~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Oct 14 14:00:09 UTC 2 189s autopkgtest [16:38:33]: @@@@@@@@@@@@@@@@@@@@ apt-source python-nxtomomill 201s Get:1 http://ftpmaster.internal/ubuntu resolute/universe python-nxtomomill 1.1.0-6 (dsc) [2003 B] 201s Get:2 http://ftpmaster.internal/ubuntu resolute/universe python-nxtomomill 1.1.0-6 (tar) [1121 kB] 201s Get:3 http://ftpmaster.internal/ubuntu resolute/universe python-nxtomomill 1.1.0-6 (diff) [3604 B] 201s gpgv: Signature made Wed Oct 8 13:51:19 2025 UTC 201s gpgv: using RSA key D54C3BFAFFB042DE382DA5D741CE7F0B9F1B8B32 201s gpgv: Can't check signature: No public key 201s dpkg-source: warning: cannot verify inline signature for ./python-nxtomomill_1.1.0-6.dsc: no acceptable signature found 202s autopkgtest [16:38:46]: testing package python-nxtomomill version 1.1.0-6 204s autopkgtest [16:38:48]: build not needed 207s autopkgtest [16:38:51]: test pybuild-autopkgtest: preparing testbed 209s Reading package lists... 209s Building dependency tree... 209s Reading state information... 209s Solving dependencies... 210s The following NEW packages will be installed: 210s autoconf automake autopoint autotools-dev bitshuffle build-essential 210s clang-18 cpp cpp-15 cpp-15-arm-linux-gnueabihf cpp-arm-linux-gnueabihf 210s debhelper debugedit dh-autoreconf dh-python dh-strip-nondeterminism dwz 210s fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono fonts-lyx 210s g++ g++-15 g++-15-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-15 210s gcc-15-arm-linux-gnueabihf gcc-arm-linux-gnueabihf gdb gettext 210s intltool-debian libarchive-zip-perl libasan8 libavahi-client3 210s libavahi-common-data libavahi-common3 libbabeltrace1 libblas3 libc-dev-bin 210s libc6-dbg libc6-dev libcc1-0 libclang-common-18-dev libclang-cpp18 210s libclang1-18 libcrypt-dev libcups2t64 libdebhelper-perl libdebuginfod-common 210s libdebuginfod1t64 libdeflate0 libdouble-conversion3 libdw1t64 libegl-mesa0 210s libegl1 libfile-stripnondeterminism-perl libfontconfig1 libfreetype6 libgbm1 210s libgc1 libgcc-15-dev libgfortran5 libgl1 libgl1-mesa-dri libgles2 210s libglu1-mesa libglut3.12 libglvnd0 libglx-mesa0 libglx0 libgomp1 210s libgraphite2-3 libharfbuzz0b libhdf5-310 libhdf5-hl-310 libhdf5-mpich-310 210s libhwloc15 libice6 libimagequant0 libinput-bin libinput10 libisl23 libjbig0 210s libjpeg-turbo8 libjpeg8 liblapack3 liblcms2-2 liblerc4 libllvm18 libllvm21 210s libllvmspirvlib18.1 liblzf1 libmd4c0 libmpc3 libmpich12 libmtdev1t64 210s libnorm1t64 libobjc-15-dev libobjc4 libopengl0 libopenjp2-7 libpcre2-16-0 210s libpgm-5.3-0t64 libpocl2-common libpocl2t64 libpython3.13 libpython3.14 210s libpython3.14-minimal libpython3.14-stdlib libqhull-r8.0 libqt5core5t64 210s libqt5dbus5t64 libqt5designer5 libqt5gui5t64 libqt5help5 libqt5network5t64 210s libqt5opengl5t64 libqt5printsupport5t64 libqt5sql5t64 libqt5svg5 210s libqt5test5t64 libqt5widgets5t64 libqt5xml5t64 libraqm0 libsharpyuv0 libsm6 210s libsodium23 libsource-highlight-common libsource-highlight4t64 210s libstdc++-15-dev libsz2 libtcl8.6 libtiff6 libtk8.6 libtool libubsan1 210s libvulkan1 libwacom-common libwacom9 libwayland-client0 libwebp7 210s libwebpdemux2 libwebpmux3 libx11-xcb1 libxcb-dri3-0 libxcb-glx0 210s libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-present0 libxcb-randr0 210s libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 210s libxcb-util1 libxcb-xfixes0 libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1 210s libxft2 libxi6 libxkbcommon-x11-0 libxrender1 libxshmfence1 libxslt1.1 210s libxss1 libxxf86vm1 libzmq5 libzopfli1 linux-libc-dev llvm-18-linker-tools 210s llvm-spirv-18 m4 mesa-libgallium ocl-icd-libopencl1 po-debconf 210s pocl-opencl-icd pybuild-plugin-autopkgtest pybuild-plugin-pyproject 210s python-matplotlib-data python3-all python3-astroid python3-asttokens 210s python3-brotli python3-build python3-comm python3-contourpy python3-coverage 210s python3-cycler python3-debugpy python3-decorator python3-dicttoxml 210s python3-executing python3-fabio python3-fonttools python3-gitlab 210s python3-h5py python3-h5py-serial python3-hdf5plugin python3-iniconfig 210s python3-installer python3-ipykernel python3-ipython python3-jedi 210s python3-jupyter-client python3-jupyter-core python3-kiwisolver python3-lxml 210s python3-lz4 python3-mako python3-matplotlib python3-matplotlib-inline 210s python3-mpmath python3-nest-asyncio python3-numpy python3-numpy-dev 210s python3-nxtomo python3-nxtomomill python3-opengl python3-parso python3-pil 210s python3-pil.imagetk python3-platformdirs python3-pluggy python3-pooch 210s python3-prompt-toolkit python3-psutil python3-pure-eval python3-pyopencl 210s python3-pyproject-hooks python3-pyqt5 python3-pyqt5.qtopengl 210s python3-pyqt5.qtsvg python3-pyqt5.sip python3-pytest python3-pytools 210s python3-pyunitsystem python3-qtconsole python3-qtpy 210s python3-requests-toolbelt python3-scipy python3-silx python3-stack-data 210s python3-sympy python3-tk python3-tomoscan python3-tornado python3-tqdm 210s python3-traitlets python3-typeshed python3-ufolib2 python3-wcwidth 210s python3-wheel python3-zmq python3-zopfli python3.13-tk python3.14 210s python3.14-minimal python3.14-tk rpcsvc-proto unicode-data x11-common 210s 0 upgraded, 266 newly installed, 0 to remove and 0 not upgraded. 210s Need to get 276 MB of archives. 210s After this operation, 1049 MB of additional disk space will be used. 210s Get:1 http://ftpmaster.internal/ubuntu resolute/main armhf libdebuginfod-common all 0.194-1 [15.1 kB] 210s Get:2 http://ftpmaster.internal/ubuntu resolute/main armhf python3-numpy-dev armhf 1:2.3.5+ds-3 [141 kB] 210s Get:3 http://ftpmaster.internal/ubuntu resolute/main armhf libblas3 armhf 3.12.1-7ubuntu1 [133 kB] 210s Get:4 http://ftpmaster.internal/ubuntu resolute/main armhf libgfortran5 armhf 15.2.0-12ubuntu1 [334 kB] 211s Get:5 http://ftpmaster.internal/ubuntu resolute/main armhf liblapack3 armhf 3.12.1-7ubuntu1 [2090 kB] 212s Get:6 http://ftpmaster.internal/ubuntu resolute/main armhf python3-numpy armhf 1:2.3.5+ds-3 [4729 kB] 215s Get:7 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-minimal armhf 3.14.2-1 [905 kB] 215s Get:8 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14-minimal armhf 3.14.2-1 [2155 kB] 216s Get:9 http://ftpmaster.internal/ubuntu resolute/main armhf m4 armhf 1.4.20-2 [212 kB] 216s Get:10 http://ftpmaster.internal/ubuntu resolute/main armhf autoconf all 2.72-3.1ubuntu1 [384 kB] 216s Get:11 http://ftpmaster.internal/ubuntu resolute/main armhf autotools-dev all 20240727.1 [43.4 kB] 216s Get:12 http://ftpmaster.internal/ubuntu resolute/main armhf automake all 1:1.18.1-3build1 [582 kB] 217s Get:13 http://ftpmaster.internal/ubuntu resolute/main armhf autopoint all 0.23.2-1 [620 kB] 217s Get:14 http://ftpmaster.internal/ubuntu resolute/universe armhf libsz2 armhf 1.1.5-1 [16.3 kB] 217s Get:15 http://ftpmaster.internal/ubuntu resolute/universe armhf libhdf5-310 armhf 1.14.6+repack-2 [1423 kB] 218s Get:16 http://ftpmaster.internal/ubuntu resolute/universe armhf libhdf5-hl-310 armhf 1.14.6+repack-2 [58.9 kB] 218s Get:17 http://ftpmaster.internal/ubuntu resolute/universe armhf liblzf1 armhf 3.6-4build1 [6592 B] 218s Get:18 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-h5py-serial armhf 3.15.1-4 [1562 kB] 219s Get:19 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-h5py all 3.15.1-4 [11.3 kB] 219s Get:20 http://ftpmaster.internal/ubuntu resolute/main armhf libgomp1 armhf 15.2.0-12ubuntu1 [129 kB] 219s Get:21 http://ftpmaster.internal/ubuntu resolute/universe armhf libhwloc15 armhf 2.12.2-1 [149 kB] 219s Get:22 http://ftpmaster.internal/ubuntu resolute/universe armhf libmpich12 armhf 4.3.2-2 [1694 kB] 221s Get:23 http://ftpmaster.internal/ubuntu resolute/universe armhf libhdf5-mpich-310 armhf 1.14.6+repack-2 [1483 kB] 221s Get:24 http://ftpmaster.internal/ubuntu resolute/universe armhf bitshuffle armhf 0.5.2-1build3 [190 kB] 221s Get:25 http://ftpmaster.internal/ubuntu resolute/main armhf libc-dev-bin armhf 2.42-2ubuntu4 [21.8 kB] 221s Get:26 http://ftpmaster.internal/ubuntu resolute/main armhf linux-libc-dev armhf 6.18.0-9.9 [1819 kB] 222s Get:27 http://ftpmaster.internal/ubuntu resolute/main armhf libcrypt-dev armhf 1:4.5.1-1 [128 kB] 222s Get:28 http://ftpmaster.internal/ubuntu resolute/main armhf rpcsvc-proto armhf 1.4.3-1build1 [62.6 kB] 222s Get:29 http://ftpmaster.internal/ubuntu resolute/main armhf libc6-dev armhf 2.42-2ubuntu4 [1416 kB] 223s Get:30 http://ftpmaster.internal/ubuntu resolute/main armhf libisl23 armhf 0.27-1build1 [553 kB] 223s Get:31 http://ftpmaster.internal/ubuntu resolute/main armhf libmpc3 armhf 1.3.1-2 [47.0 kB] 224s Get:32 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-15-arm-linux-gnueabihf armhf 15.2.0-12ubuntu1 [10.1 MB] 229s Get:33 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-15 armhf 15.2.0-12ubuntu1 [1032 B] 229s Get:34 http://ftpmaster.internal/ubuntu resolute/main armhf cpp-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [5756 B] 229s Get:35 http://ftpmaster.internal/ubuntu resolute/main armhf cpp armhf 4:15.2.0-4ubuntu1 [22.4 kB] 229s Get:36 http://ftpmaster.internal/ubuntu resolute/main armhf libcc1-0 armhf 15.2.0-12ubuntu1 [43.5 kB] 229s Get:37 http://ftpmaster.internal/ubuntu resolute/main armhf libasan8 armhf 15.2.0-12ubuntu1 [2949 kB] 232s Get:38 http://ftpmaster.internal/ubuntu resolute/main armhf libubsan1 armhf 15.2.0-12ubuntu1 [1187 kB] 233s Get:39 http://ftpmaster.internal/ubuntu resolute/main armhf libgcc-15-dev armhf 15.2.0-12ubuntu1 [898 kB] 233s Get:40 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-15-arm-linux-gnueabihf armhf 15.2.0-12ubuntu1 [19.5 MB] 257s Get:41 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-15 armhf 15.2.0-12ubuntu1 [499 kB] 258s Get:42 http://ftpmaster.internal/ubuntu resolute/main armhf gcc-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [1220 B] 258s Get:43 http://ftpmaster.internal/ubuntu resolute/main armhf gcc armhf 4:15.2.0-4ubuntu1 [5022 B] 258s Get:44 http://ftpmaster.internal/ubuntu resolute/main armhf libstdc++-15-dev armhf 15.2.0-12ubuntu1 [2638 kB] 261s Get:45 http://ftpmaster.internal/ubuntu resolute/main armhf g++-15-arm-linux-gnueabihf armhf 15.2.0-12ubuntu1 [11.4 MB] 271s Get:46 http://ftpmaster.internal/ubuntu resolute/main armhf g++-15 armhf 15.2.0-12ubuntu1 [25.3 kB] 271s Get:47 http://ftpmaster.internal/ubuntu resolute/main armhf g++-arm-linux-gnueabihf armhf 4:15.2.0-4ubuntu1 [968 B] 271s Get:48 http://ftpmaster.internal/ubuntu resolute/main armhf g++ armhf 4:15.2.0-4ubuntu1 [1086 B] 271s Get:49 http://ftpmaster.internal/ubuntu resolute/main armhf build-essential armhf 12.12ubuntu2 [5256 B] 271s Get:50 http://ftpmaster.internal/ubuntu resolute/universe armhf libllvm18 armhf 1:18.1.8-20ubuntu5 [26.4 MB] 295s Get:51 http://ftpmaster.internal/ubuntu resolute/universe armhf libclang-cpp18 armhf 1:18.1.8-20ubuntu5 [12.6 MB] 306s Get:52 http://ftpmaster.internal/ubuntu resolute/main armhf libgc1 armhf 1:8.2.10-1 [82.7 kB] 306s Get:53 http://ftpmaster.internal/ubuntu resolute/universe armhf libobjc4 armhf 15.2.0-12ubuntu1 [38.6 kB] 306s Get:54 http://ftpmaster.internal/ubuntu resolute/universe armhf libobjc-15-dev armhf 15.2.0-12ubuntu1 [186 kB] 306s Get:55 http://ftpmaster.internal/ubuntu resolute/universe armhf libclang-common-18-dev armhf 1:18.1.8-20ubuntu5 [737 kB] 307s Get:56 http://ftpmaster.internal/ubuntu resolute/universe armhf llvm-18-linker-tools armhf 1:18.1.8-20ubuntu5 [1147 kB] 308s Get:57 http://ftpmaster.internal/ubuntu resolute/universe armhf libclang1-18 armhf 1:18.1.8-20ubuntu5 [7252 kB] 314s Get:58 http://ftpmaster.internal/ubuntu resolute/universe armhf clang-18 armhf 1:18.1.8-20ubuntu5 [75.5 kB] 314s Get:59 http://ftpmaster.internal/ubuntu resolute/main armhf libdebhelper-perl all 13.28ubuntu1 [97.4 kB] 315s Get:60 http://ftpmaster.internal/ubuntu resolute/main armhf libtool all 2.5.4-9 [169 kB] 315s Get:61 http://ftpmaster.internal/ubuntu resolute/main armhf dh-autoreconf all 21 [12.5 kB] 315s Get:62 http://ftpmaster.internal/ubuntu resolute/main armhf libarchive-zip-perl all 1.68-1 [90.2 kB] 315s Get:63 http://ftpmaster.internal/ubuntu resolute/main armhf libfile-stripnondeterminism-perl all 1.15.0-1build1 [20.6 kB] 315s Get:64 http://ftpmaster.internal/ubuntu resolute/main armhf dh-strip-nondeterminism all 1.15.0-1build1 [5110 B] 315s Get:65 http://ftpmaster.internal/ubuntu resolute/main armhf libdw1t64 armhf 0.194-1 [254 kB] 315s Get:66 http://ftpmaster.internal/ubuntu resolute/main armhf debugedit armhf 1:5.2-3build1 [49.0 kB] 315s Get:67 http://ftpmaster.internal/ubuntu resolute/main armhf dwz armhf 0.16-2 [114 kB] 315s Get:68 http://ftpmaster.internal/ubuntu resolute/main armhf gettext armhf 0.23.2-1 [1059 kB] 316s Get:69 http://ftpmaster.internal/ubuntu resolute/main armhf intltool-debian all 0.35.0+20060710.6build1 [24.1 kB] 316s Get:70 http://ftpmaster.internal/ubuntu resolute/main armhf po-debconf all 1.0.22 [215 kB] 316s Get:71 http://ftpmaster.internal/ubuntu resolute/main armhf debhelper all 13.28ubuntu1 [916 kB] 317s Get:72 http://ftpmaster.internal/ubuntu resolute/universe armhf dh-python all 7.20260125 [122 kB] 318s Get:73 http://ftpmaster.internal/ubuntu resolute/main armhf libfreetype6 armhf 2.14.1+dfsg-2 [345 kB] 318s Get:74 http://ftpmaster.internal/ubuntu resolute/main armhf fonts-dejavu-mono all 2.37-8build1 [502 kB] 319s Get:75 http://ftpmaster.internal/ubuntu resolute/main armhf fonts-dejavu-core all 2.37-8build1 [834 kB] 319s Get:76 http://ftpmaster.internal/ubuntu resolute/main armhf fontconfig-config armhf 2.17.1-3ubuntu1 [38.5 kB] 320s Get:77 http://ftpmaster.internal/ubuntu resolute/main armhf libfontconfig1 armhf 2.17.1-3ubuntu1 [117 kB] 320s Get:78 http://ftpmaster.internal/ubuntu resolute/main armhf fontconfig armhf 2.17.1-3ubuntu1 [180 kB] 320s Get:79 http://ftpmaster.internal/ubuntu resolute/universe armhf fonts-lyx all 2.5.0~RC2-3 [171 kB] 321s Get:80 http://ftpmaster.internal/ubuntu resolute/main armhf libbabeltrace1 armhf 1.5.11-5 [155 kB] 321s Get:81 http://ftpmaster.internal/ubuntu resolute/main armhf libdebuginfod1t64 armhf 0.194-1 [18.8 kB] 321s Get:82 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14-stdlib armhf 3.14.2-1 [2270 kB] 323s Get:83 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.14 armhf 3.14.2-1 [2213 kB] 326s Get:84 http://ftpmaster.internal/ubuntu resolute/main armhf libsource-highlight-common all 3.1.9-4.3build2 [64.2 kB] 326s Get:85 http://ftpmaster.internal/ubuntu resolute/main armhf libsource-highlight4t64 armhf 3.1.9-4.3build2 [297 kB] 326s Get:86 http://ftpmaster.internal/ubuntu resolute/main armhf libc6-dbg armhf 2.42-2ubuntu4 [4516 kB] 331s Get:87 http://ftpmaster.internal/ubuntu resolute/main armhf gdb armhf 17.1-1ubuntu2 [3731 kB] 334s Get:88 http://ftpmaster.internal/ubuntu resolute/main armhf libavahi-common-data armhf 0.8-17ubuntu2 [31.5 kB] 334s Get:89 http://ftpmaster.internal/ubuntu resolute/main armhf libavahi-common3 armhf 0.8-17ubuntu2 [20.4 kB] 334s Get:90 http://ftpmaster.internal/ubuntu resolute/main armhf libavahi-client3 armhf 0.8-17ubuntu2 [24.4 kB] 334s Get:91 http://ftpmaster.internal/ubuntu resolute/main armhf libcups2t64 armhf 2.4.16-1ubuntu1 [242 kB] 334s Get:92 http://ftpmaster.internal/ubuntu resolute/main armhf libdeflate0 armhf 1.23-2 [38.7 kB] 334s Get:93 http://ftpmaster.internal/ubuntu resolute/universe armhf libdouble-conversion3 armhf 3.4.0-1 [39.3 kB] 335s Get:94 http://ftpmaster.internal/ubuntu resolute/main armhf libllvm21 armhf 1:21.1.8-1ubuntu1 [30.3 MB] 359s Get:95 http://ftpmaster.internal/ubuntu resolute/main armhf libx11-xcb1 armhf 2:1.8.12-1build1 [7920 B] 359s Get:96 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-dri3-0 armhf 1.17.0-2ubuntu1 [7342 B] 359s Get:97 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-present0 armhf 1.17.0-2ubuntu1 [6080 B] 359s Get:98 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-randr0 armhf 1.17.0-2ubuntu1 [16.9 kB] 359s Get:99 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-sync1 armhf 1.17.0-2ubuntu1 [8840 B] 359s Get:100 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-xfixes0 armhf 1.17.0-2ubuntu1 [10.2 kB] 360s Get:101 http://ftpmaster.internal/ubuntu resolute/main armhf libxshmfence1 armhf 1.3.3-1build1 [5000 B] 360s Get:102 http://ftpmaster.internal/ubuntu resolute/main armhf mesa-libgallium armhf 25.3.3-1ubuntu1 [8874 kB] 367s Get:103 http://ftpmaster.internal/ubuntu resolute/main armhf libgbm1 armhf 25.3.3-1ubuntu1 [30.0 kB] 367s Get:104 http://ftpmaster.internal/ubuntu resolute/main armhf libwayland-client0 armhf 1.24.0-2 [24.6 kB] 367s Get:105 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-shm0 armhf 1.17.0-2ubuntu1 [5956 B] 367s Get:106 http://ftpmaster.internal/ubuntu resolute/main armhf libegl-mesa0 armhf 25.3.3-1ubuntu1 [96.0 kB] 368s Get:107 http://ftpmaster.internal/ubuntu resolute/main armhf libvulkan1 armhf 1.4.335.0-1 [137 kB] 368s Get:108 http://ftpmaster.internal/ubuntu resolute/main armhf libgl1-mesa-dri armhf 25.3.3-1ubuntu1 [32.7 kB] 368s Get:109 http://ftpmaster.internal/ubuntu resolute/main armhf libglvnd0 armhf 1.7.0-3 [71.3 kB] 368s Get:110 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-glx0 armhf 1.17.0-2ubuntu1 [22.8 kB] 368s Get:111 http://ftpmaster.internal/ubuntu resolute/main armhf libxxf86vm1 armhf 1:1.1.4-2 [9110 B] 368s Get:112 http://ftpmaster.internal/ubuntu resolute/main armhf libglx-mesa0 armhf 25.3.3-1ubuntu1 [87.3 kB] 368s Get:113 http://ftpmaster.internal/ubuntu resolute/main armhf libglx0 armhf 1.7.0-3 [37.9 kB] 368s Get:114 http://ftpmaster.internal/ubuntu resolute/main armhf libgl1 armhf 1.7.0-3 [102 kB] 369s Get:115 http://ftpmaster.internal/ubuntu resolute/main armhf libxi6 armhf 2:1.8.2-2 [26.7 kB] 369s Get:116 http://ftpmaster.internal/ubuntu resolute/universe armhf libglut3.12 armhf 3.4.0-6 [84.7 kB] 369s Get:117 http://ftpmaster.internal/ubuntu resolute/main armhf libgraphite2-3 armhf 1.3.14-11ubuntu1 [65.2 kB] 369s Get:118 http://ftpmaster.internal/ubuntu resolute/main armhf libharfbuzz0b armhf 12.3.2-1 [501 kB] 370s Get:119 http://ftpmaster.internal/ubuntu resolute/main armhf x11-common all 1:7.7+24ubuntu1 [22.4 kB] 370s Get:120 http://ftpmaster.internal/ubuntu resolute/main armhf libice6 armhf 2:1.1.1-1build1 [37.5 kB] 370s Get:121 http://ftpmaster.internal/ubuntu resolute/main armhf libimagequant0 armhf 2.18.0-1build1 [31.1 kB] 370s Get:122 http://ftpmaster.internal/ubuntu resolute/main armhf libwacom-common all 2.16.1-1 [113 kB] 370s Get:123 http://ftpmaster.internal/ubuntu resolute/main armhf libwacom9 armhf 2.16.1-1 [24.7 kB] 370s Get:124 http://ftpmaster.internal/ubuntu resolute/main armhf libinput-bin armhf 1.30.1-1 [27.7 kB] 370s Get:125 http://ftpmaster.internal/ubuntu resolute/main armhf libmtdev1t64 armhf 1.1.7-1build1 [13.2 kB] 371s Get:126 http://ftpmaster.internal/ubuntu resolute/main armhf libinput10 armhf 1.30.1-1 [144 kB] 371s Get:127 http://ftpmaster.internal/ubuntu resolute/main armhf libjpeg-turbo8 armhf 2.1.5-4ubuntu2 [127 kB] 371s Get:128 http://ftpmaster.internal/ubuntu resolute/main armhf libjpeg8 armhf 8c-2ubuntu11 [2148 B] 371s Get:129 http://ftpmaster.internal/ubuntu resolute/main armhf liblcms2-2 armhf 2.17-1 [139 kB] 371s Get:130 http://ftpmaster.internal/ubuntu resolute/main armhf liblerc4 armhf 4.0.0+ds-5ubuntu2 [162 kB] 372s Get:131 http://ftpmaster.internal/ubuntu resolute/universe armhf libllvmspirvlib18.1 armhf 18.1.19-1 [871 kB] 373s Get:132 http://ftpmaster.internal/ubuntu resolute/universe armhf libmd4c0 armhf 0.5.2-2build1 [38.6 kB] 373s Get:133 http://ftpmaster.internal/ubuntu resolute/universe armhf libnorm1t64 armhf 1.5.9+dfsg-4 [210 kB] 373s Get:134 http://ftpmaster.internal/ubuntu resolute/main armhf libpcre2-16-0 armhf 10.46-1 [206 kB] 373s Get:135 http://ftpmaster.internal/ubuntu resolute/universe armhf libpgm-5.3-0t64 armhf 5.3.128~dfsg-2.1build2 [173 kB] 374s Get:136 http://ftpmaster.internal/ubuntu resolute/universe armhf libpocl2-common all 6.0-7 [83.0 kB] 374s Get:137 http://ftpmaster.internal/ubuntu resolute/universe armhf llvm-spirv-18 armhf 18.1.19-1 [506 kB] 374s Get:138 http://ftpmaster.internal/ubuntu resolute/universe armhf libpocl2t64 armhf 6.0-7 [1947 kB] 376s Get:139 http://ftpmaster.internal/ubuntu resolute/main armhf libpython3.13 armhf 3.13.11-1 [2124 kB] 378s Get:140 http://ftpmaster.internal/ubuntu resolute/universe armhf libqhull-r8.0 armhf 2020.2-8 [175 kB] 378s Get:141 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5core5t64 armhf 5.15.18+dfsg-1ubuntu1 [1792 kB] 380s Get:142 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5dbus5t64 armhf 5.15.18+dfsg-1ubuntu1 [200 kB] 380s Get:143 http://ftpmaster.internal/ubuntu resolute/main armhf libegl1 armhf 1.7.0-3 [30.2 kB] 380s Get:144 http://ftpmaster.internal/ubuntu resolute/main armhf libgles2 armhf 1.7.0-3 [18.2 kB] 380s Get:145 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5network5t64 armhf 5.15.18+dfsg-1ubuntu1 [661 kB] 381s Get:146 http://ftpmaster.internal/ubuntu resolute/main armhf libsm6 armhf 2:1.2.6-1 [15.3 kB] 381s Get:147 http://ftpmaster.internal/ubuntu resolute/universe armhf libxcb-icccm4 armhf 0.4.2-1build1 [9914 B] 381s Get:148 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-util1 armhf 0.4.1-1build1 [9628 B] 381s Get:149 http://ftpmaster.internal/ubuntu resolute/universe armhf libxcb-image0 armhf 0.4.0-2build2 [9776 B] 381s Get:150 http://ftpmaster.internal/ubuntu resolute/universe armhf libxcb-keysyms1 armhf 0.4.1-1build1 [8090 B] 381s Get:151 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-render0 armhf 1.17.0-2ubuntu1 [15.5 kB] 381s Get:152 http://ftpmaster.internal/ubuntu resolute/universe armhf libxcb-render-util0 armhf 0.3.10-1build1 [9460 B] 381s Get:153 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-shape0 armhf 1.17.0-2ubuntu1 [6186 B] 381s Get:154 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-xinerama0 armhf 1.17.0-2ubuntu1 [5360 B] 381s Get:155 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-xinput0 armhf 1.17.0-2ubuntu1 [29.2 kB] 382s Get:156 http://ftpmaster.internal/ubuntu resolute/main armhf libxcb-xkb1 armhf 1.17.0-2ubuntu1 [28.4 kB] 382s Get:157 http://ftpmaster.internal/ubuntu resolute/main armhf libxkbcommon-x11-0 armhf 1.12.3-1 [14.8 kB] 382s Get:158 http://ftpmaster.internal/ubuntu resolute/main armhf libxrender1 armhf 1:0.9.12-1 [16.6 kB] 382s Get:159 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5gui5t64 armhf 5.15.18+dfsg-1ubuntu1 [3012 kB] 384s Get:160 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5widgets5t64 armhf 5.15.18+dfsg-1ubuntu1 [2290 kB] 386s Get:161 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5xml5t64 armhf 5.15.18+dfsg-1ubuntu1 [110 kB] 387s Get:162 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5designer5 armhf 5.15.18-1 [2736 kB] 389s Get:163 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5sql5t64 armhf 5.15.18+dfsg-1ubuntu1 [109 kB] 389s Get:164 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5help5 armhf 5.15.18-1 [145 kB] 389s Get:165 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5opengl5t64 armhf 5.15.18+dfsg-1ubuntu1 [127 kB] 389s Get:166 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5printsupport5t64 armhf 5.15.18+dfsg-1ubuntu1 [193 kB] 390s Get:167 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5svg5 armhf 5.15.18-1 [129 kB] 390s Get:168 http://ftpmaster.internal/ubuntu resolute/universe armhf libqt5test5t64 armhf 5.15.18+dfsg-1ubuntu1 [136 kB] 390s Get:169 http://ftpmaster.internal/ubuntu resolute/main armhf libraqm0 armhf 0.10.3-1 [12.7 kB] 390s Get:170 http://ftpmaster.internal/ubuntu resolute/main armhf libsharpyuv0 armhf 1.5.0-0.1build1 [16.3 kB] 390s Get:171 http://ftpmaster.internal/ubuntu resolute/main armhf libsodium23 armhf 1.0.18-2 [141 kB] 391s Get:172 http://ftpmaster.internal/ubuntu resolute/main armhf libtcl8.6 armhf 8.6.17+dfsg-1build1 [918 kB] 391s Get:173 http://ftpmaster.internal/ubuntu resolute/main armhf libjbig0 armhf 2.1-6.1ubuntu3 [25.3 kB] 392s Get:174 http://ftpmaster.internal/ubuntu resolute/main armhf libwebp7 armhf 1.5.0-0.1build1 [189 kB] 392s Get:175 http://ftpmaster.internal/ubuntu resolute/main armhf libtiff6 armhf 4.7.0-3ubuntu3 [188 kB] 392s Get:176 http://ftpmaster.internal/ubuntu resolute/main armhf libxft2 armhf 2.3.6-1build2 [37.2 kB] 392s Get:177 http://ftpmaster.internal/ubuntu resolute/main armhf libxss1 armhf 1:1.2.3-1build4 [6328 B] 393s Get:178 http://ftpmaster.internal/ubuntu resolute/main armhf libtk8.6 armhf 8.6.17-1 [694 kB] 393s Get:179 http://ftpmaster.internal/ubuntu resolute/main armhf libwebpdemux2 armhf 1.5.0-0.1build1 [11.7 kB] 393s Get:180 http://ftpmaster.internal/ubuntu resolute/main armhf libwebpmux3 armhf 1.5.0-0.1build1 [22.4 kB] 393s Get:181 http://ftpmaster.internal/ubuntu resolute/main armhf libxslt1.1 armhf 1.1.43-0.3 [146 kB] 394s Get:182 http://ftpmaster.internal/ubuntu resolute/universe armhf libzmq5 armhf 4.3.5-1build3 [271 kB] 394s Get:183 http://ftpmaster.internal/ubuntu resolute/universe armhf libzopfli1 armhf 1.0.3-3build1 [91.2 kB] 394s Get:184 http://ftpmaster.internal/ubuntu resolute/universe armhf pybuild-plugin-autopkgtest all 7.20260125 [1744 B] 394s Get:185 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 394s Get:186 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-wheel all 0.46.1-2 [22.1 kB] 394s Get:187 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-build all 1.2.2-5 [30.9 kB] 395s Get:188 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 395s Get:189 http://ftpmaster.internal/ubuntu resolute/universe armhf pybuild-plugin-pyproject all 7.20260125 [1712 B] 395s Get:190 http://ftpmaster.internal/ubuntu resolute/universe armhf python-matplotlib-data all 3.10.7+dfsg1-1 [2930 kB] 397s Get:191 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14 armhf 3.14.2-1 [816 kB] 398s Get:192 http://ftpmaster.internal/ubuntu resolute/main armhf python3-all armhf 3.13.9-3 [890 B] 398s Get:193 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-astroid all 4.0.2-1ubuntu1 [172 kB] 399s Get:194 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-asttokens all 3.0.1-1 [20.7 kB] 399s Get:195 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-brotli armhf 1.1.0-2build6 [327 kB] 399s Get:196 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-traitlets all 5.14.3+really5.14.3-2 [71.7 kB] 400s Get:197 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-comm all 0.2.1-1build1 [7148 B] 400s Get:198 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-contourpy armhf 1.3.3-1 [268 kB] 400s Get:199 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-coverage armhf 7.8.2+dfsg1-1ubuntu1 [158 kB] 400s Get:200 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-cycler all 0.12.1-2 [9850 B] 401s Get:201 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-debugpy armhf 1.8.19+ds-1ubuntu1 [910 kB] 401s Get:202 http://ftpmaster.internal/ubuntu resolute/main armhf python3-decorator all 5.2.1-2 [28.1 kB] 402s Get:203 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-dicttoxml all 1.7.16-2 [22.7 kB] 402s Get:204 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-executing all 2.2.1-0.1 [26.2 kB] 402s Get:205 http://ftpmaster.internal/ubuntu resolute/main armhf python3-lxml armhf 6.0.2-1 [2260 kB] 404s Get:206 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-lz4 armhf 4.4.5+dfsg-1 [26.1 kB] 404s Get:207 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-scipy armhf 1.16.3-4 [18.3 MB] 420s Get:208 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-mpmath all 1.3.0-2 [423 kB] 420s Get:209 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-sympy all 1.14.0-2 [4306 kB] 424s Get:210 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-ufolib2 all 0.18.1+dfsg1-1 [33.7 kB] 425s Get:211 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-zopfli armhf 0.4.0-1 [10.5 kB] 425s Get:212 http://ftpmaster.internal/ubuntu resolute/universe armhf unicode-data all 16.0.0-1build1 [9543 kB] 434s Get:213 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-fonttools armhf 4.61.1-3 [1697 kB] 435s Get:214 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-requests-toolbelt all 1.0.0-4 [37.0 kB] 436s Get:215 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-gitlab all 1:4.9.0-1.1 [75.1 kB] 436s Get:216 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-hdf5plugin all 5.1.0-1 [23.3 kB] 436s Get:217 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-iniconfig all 2.1.0-2 [6962 B] 436s Get:218 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-parso all 0.8.5-1 [68.0 kB] 436s Get:219 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-typeshed all 0.0~git20241223.ea91db2-4 [1554 kB] 437s Get:220 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-jedi all 0.19.1+ds1-1build1 [694 kB] 439s Get:221 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-matplotlib-inline all 0.2.1-1 [9462 B] 439s Get:222 http://ftpmaster.internal/ubuntu resolute/main armhf python3-wcwidth all 0.2.14+dfsg1-1build1 [26.5 kB] 439s Get:223 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-prompt-toolkit all 3.0.52-2 [258 kB] 439s Get:224 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pure-eval all 0.2.3-1 [11.4 kB] 439s Get:225 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-stack-data all 0.6.3-3 [22.2 kB] 439s Get:226 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-ipython all 8.35.0-2 [575 kB] 439s Get:227 http://ftpmaster.internal/ubuntu resolute/main armhf python3-platformdirs all 4.5.1-1 [17.1 kB] 439s Get:228 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-jupyter-core all 5.9.1-1 [28.9 kB] 439s Get:229 http://ftpmaster.internal/ubuntu resolute/main armhf python3-psutil armhf 7.1.0-1ubuntu1 [189 kB] 440s Get:230 http://ftpmaster.internal/ubuntu resolute/main armhf python3-tornado armhf 6.5.4-0.1 [306 kB] 440s Get:231 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-zmq armhf 27.1.0-1 [223 kB] 440s Get:232 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-jupyter-client all 8.7.0-1 [78.5 kB] 440s Get:233 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-nest-asyncio all 1.6.0-1 [6686 B] 440s Get:234 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-ipykernel all 6.30.1-1 [82.8 kB] 440s Get:235 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-kiwisolver armhf 1.4.10~rc0-1 [77.8 kB] 440s Get:236 http://ftpmaster.internal/ubuntu resolute/main armhf python3-mako all 1.3.10-3build1 [63.9 kB] 441s Get:237 http://ftpmaster.internal/ubuntu resolute/main armhf libopenjp2-7 armhf 2.5.4-1 [175 kB] 441s Get:238 http://ftpmaster.internal/ubuntu resolute/main armhf python3-pil armhf 12.0.0-1ubuntu1 [462 kB] 441s Get:239 http://ftpmaster.internal/ubuntu resolute/main armhf python3.13-tk armhf 3.13.11-1 [104 kB] 441s Get:240 http://ftpmaster.internal/ubuntu resolute/main armhf python3.14-tk armhf 3.14.2-1 [105 kB] 441s Get:241 http://ftpmaster.internal/ubuntu resolute/main armhf python3-tk armhf 3.13.9-3 [11.2 kB] 442s Get:242 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pil.imagetk armhf 12.0.0-1ubuntu1 [9168 B] 442s Get:243 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-matplotlib armhf 3.10.7+dfsg1-1 [17.2 MB] 451s Get:244 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pyunitsystem all 2.0.0-1 [6828 B] 452s Get:245 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pyqt5.sip armhf 12.17.2-1 [75.1 kB] 452s Get:246 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pyqt5 armhf 5.15.11+dfsg-3build2 [2205 kB] 453s Get:247 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-fabio armhf 2024.9.0-9 [789 kB] 454s Get:248 http://ftpmaster.internal/ubuntu resolute/main armhf libopengl0 armhf 1.7.0-3 [35.6 kB] 454s Get:249 http://ftpmaster.internal/ubuntu resolute/universe armhf libglu1-mesa armhf 9.0.2-1.1build2 [157 kB] 454s Get:250 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-opengl all 3.1.10+dfsg-1 [633 kB] 455s Get:251 http://ftpmaster.internal/ubuntu resolute/main armhf ocl-icd-libopencl1 armhf 2.3.4-1 [37.6 kB] 455s Get:252 http://ftpmaster.internal/ubuntu resolute/universe armhf pocl-opencl-icd armhf 6.0-7 [7172 B] 455s Get:253 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytools all 2025.1.2-1 [69.9 kB] 455s Get:254 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pyopencl armhf 2025.1-2 [500 kB] 456s Get:255 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pyqt5.qtopengl armhf 5.15.11+dfsg-3build2 [47.5 kB] 456s Get:256 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pyqt5.qtsvg armhf 5.15.11+dfsg-3build2 [26.3 kB] 456s Get:257 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-qtpy all 2.4.3-1 [57.5 kB] 456s Get:258 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-qtconsole all 5.6.1-4 [84.7 kB] 456s Get:259 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pooch all 1.8.2-1 [49.9 kB] 456s Get:260 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-silx armhf 2.2.1+dfsg-5 [2990 kB] 459s Get:261 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-nxtomo all 1.3.0.dev9-1 [52.9 kB] 459s Get:262 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-tomoscan all 2.2.0~dev0-2 [104 kB] 459s Get:263 http://ftpmaster.internal/ubuntu resolute-proposed/universe armhf python3-tqdm all 4.67.3-1 [93.3 kB] 459s Get:264 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-nxtomomill all 1.1.0-6 [101 kB] 459s Get:265 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pluggy all 1.6.0-2 [21.1 kB] 460s Get:266 http://ftpmaster.internal/ubuntu resolute/universe armhf python3-pytest all 9.0.2-2 [277 kB] 461s Preconfiguring packages ... 461s Fetched 276 MB in 4min 10s (1103 kB/s) 461s Selecting previously unselected package libdebuginfod-common. 461s (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 ... 68395 files and directories currently installed.) 461s Preparing to unpack .../000-libdebuginfod-common_0.194-1_all.deb ... 461s Unpacking libdebuginfod-common (0.194-1) ... 461s Selecting previously unselected package python3-numpy-dev:armhf. 461s Preparing to unpack .../001-python3-numpy-dev_1%3a2.3.5+ds-3_armhf.deb ... 461s Unpacking python3-numpy-dev:armhf (1:2.3.5+ds-3) ... 461s Selecting previously unselected package libblas3:armhf. 461s Preparing to unpack .../002-libblas3_3.12.1-7ubuntu1_armhf.deb ... 461s Unpacking libblas3:armhf (3.12.1-7ubuntu1) ... 461s Selecting previously unselected package libgfortran5:armhf. 461s Preparing to unpack .../003-libgfortran5_15.2.0-12ubuntu1_armhf.deb ... 461s Unpacking libgfortran5:armhf (15.2.0-12ubuntu1) ... 461s Selecting previously unselected package liblapack3:armhf. 461s Preparing to unpack .../004-liblapack3_3.12.1-7ubuntu1_armhf.deb ... 461s Unpacking liblapack3:armhf (3.12.1-7ubuntu1) ... 461s Selecting previously unselected package python3-numpy. 461s Preparing to unpack .../005-python3-numpy_1%3a2.3.5+ds-3_armhf.deb ... 461s Unpacking python3-numpy (1:2.3.5+ds-3) ... 461s Selecting previously unselected package libpython3.14-minimal:armhf. 462s Preparing to unpack .../006-libpython3.14-minimal_3.14.2-1_armhf.deb ... 462s Unpacking libpython3.14-minimal:armhf (3.14.2-1) ... 462s Selecting previously unselected package python3.14-minimal. 462s Preparing to unpack .../007-python3.14-minimal_3.14.2-1_armhf.deb ... 462s Unpacking python3.14-minimal (3.14.2-1) ... 462s Selecting previously unselected package m4. 462s Preparing to unpack .../008-m4_1.4.20-2_armhf.deb ... 462s Unpacking m4 (1.4.20-2) ... 462s Selecting previously unselected package autoconf. 462s Preparing to unpack .../009-autoconf_2.72-3.1ubuntu1_all.deb ... 462s Unpacking autoconf (2.72-3.1ubuntu1) ... 462s Selecting previously unselected package autotools-dev. 462s Preparing to unpack .../010-autotools-dev_20240727.1_all.deb ... 462s Unpacking autotools-dev (20240727.1) ... 462s Selecting previously unselected package automake. 462s Preparing to unpack .../011-automake_1%3a1.18.1-3build1_all.deb ... 462s Unpacking automake (1:1.18.1-3build1) ... 462s Selecting previously unselected package autopoint. 462s Preparing to unpack .../012-autopoint_0.23.2-1_all.deb ... 462s Unpacking autopoint (0.23.2-1) ... 462s Selecting previously unselected package libsz2:armhf. 462s Preparing to unpack .../013-libsz2_1.1.5-1_armhf.deb ... 462s Unpacking libsz2:armhf (1.1.5-1) ... 462s Selecting previously unselected package libhdf5-310:armhf. 462s Preparing to unpack .../014-libhdf5-310_1.14.6+repack-2_armhf.deb ... 462s Unpacking libhdf5-310:armhf (1.14.6+repack-2) ... 462s Selecting previously unselected package libhdf5-hl-310:armhf. 462s Preparing to unpack .../015-libhdf5-hl-310_1.14.6+repack-2_armhf.deb ... 462s Unpacking libhdf5-hl-310:armhf (1.14.6+repack-2) ... 462s Selecting previously unselected package liblzf1:armhf. 462s Preparing to unpack .../016-liblzf1_3.6-4build1_armhf.deb ... 462s Unpacking liblzf1:armhf (3.6-4build1) ... 462s Selecting previously unselected package python3-h5py-serial. 462s Preparing to unpack .../017-python3-h5py-serial_3.15.1-4_armhf.deb ... 462s Unpacking python3-h5py-serial (3.15.1-4) ... 462s Selecting previously unselected package python3-h5py. 462s Preparing to unpack .../018-python3-h5py_3.15.1-4_all.deb ... 462s Unpacking python3-h5py (3.15.1-4) ... 462s Selecting previously unselected package libgomp1:armhf. 462s Preparing to unpack .../019-libgomp1_15.2.0-12ubuntu1_armhf.deb ... 462s Unpacking libgomp1:armhf (15.2.0-12ubuntu1) ... 462s Selecting previously unselected package libhwloc15:armhf. 462s Preparing to unpack .../020-libhwloc15_2.12.2-1_armhf.deb ... 462s Unpacking libhwloc15:armhf (2.12.2-1) ... 462s Selecting previously unselected package libmpich12:armhf. 462s Preparing to unpack .../021-libmpich12_4.3.2-2_armhf.deb ... 462s Unpacking libmpich12:armhf (4.3.2-2) ... 462s Selecting previously unselected package libhdf5-mpich-310:armhf. 462s Preparing to unpack .../022-libhdf5-mpich-310_1.14.6+repack-2_armhf.deb ... 462s Unpacking libhdf5-mpich-310:armhf (1.14.6+repack-2) ... 463s Selecting previously unselected package bitshuffle. 463s Preparing to unpack .../023-bitshuffle_0.5.2-1build3_armhf.deb ... 463s Unpacking bitshuffle (0.5.2-1build3) ... 463s Selecting previously unselected package libc-dev-bin. 463s Preparing to unpack .../024-libc-dev-bin_2.42-2ubuntu4_armhf.deb ... 463s Unpacking libc-dev-bin (2.42-2ubuntu4) ... 463s Selecting previously unselected package linux-libc-dev:armhf. 463s Preparing to unpack .../025-linux-libc-dev_6.18.0-9.9_armhf.deb ... 463s Unpacking linux-libc-dev:armhf (6.18.0-9.9) ... 463s Selecting previously unselected package libcrypt-dev:armhf. 463s Preparing to unpack .../026-libcrypt-dev_1%3a4.5.1-1_armhf.deb ... 463s Unpacking libcrypt-dev:armhf (1:4.5.1-1) ... 463s Selecting previously unselected package rpcsvc-proto. 463s Preparing to unpack .../027-rpcsvc-proto_1.4.3-1build1_armhf.deb ... 463s Unpacking rpcsvc-proto (1.4.3-1build1) ... 463s Selecting previously unselected package libc6-dev:armhf. 463s Preparing to unpack .../028-libc6-dev_2.42-2ubuntu4_armhf.deb ... 463s Unpacking libc6-dev:armhf (2.42-2ubuntu4) ... 463s Selecting previously unselected package libisl23:armhf. 463s Preparing to unpack .../029-libisl23_0.27-1build1_armhf.deb ... 463s Unpacking libisl23:armhf (0.27-1build1) ... 463s Selecting previously unselected package libmpc3:armhf. 463s Preparing to unpack .../030-libmpc3_1.3.1-2_armhf.deb ... 463s Unpacking libmpc3:armhf (1.3.1-2) ... 463s Selecting previously unselected package cpp-15-arm-linux-gnueabihf. 463s Preparing to unpack .../031-cpp-15-arm-linux-gnueabihf_15.2.0-12ubuntu1_armhf.deb ... 463s Unpacking cpp-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 463s Selecting previously unselected package cpp-15. 463s Preparing to unpack .../032-cpp-15_15.2.0-12ubuntu1_armhf.deb ... 463s Unpacking cpp-15 (15.2.0-12ubuntu1) ... 463s Selecting previously unselected package cpp-arm-linux-gnueabihf. 463s Preparing to unpack .../033-cpp-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 463s Unpacking cpp-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 463s Selecting previously unselected package cpp. 464s Preparing to unpack .../034-cpp_4%3a15.2.0-4ubuntu1_armhf.deb ... 464s Unpacking cpp (4:15.2.0-4ubuntu1) ... 464s Selecting previously unselected package libcc1-0:armhf. 464s Preparing to unpack .../035-libcc1-0_15.2.0-12ubuntu1_armhf.deb ... 464s Unpacking libcc1-0:armhf (15.2.0-12ubuntu1) ... 464s Selecting previously unselected package libasan8:armhf. 464s Preparing to unpack .../036-libasan8_15.2.0-12ubuntu1_armhf.deb ... 464s Unpacking libasan8:armhf (15.2.0-12ubuntu1) ... 464s Selecting previously unselected package libubsan1:armhf. 464s Preparing to unpack .../037-libubsan1_15.2.0-12ubuntu1_armhf.deb ... 464s Unpacking libubsan1:armhf (15.2.0-12ubuntu1) ... 464s Selecting previously unselected package libgcc-15-dev:armhf. 464s Preparing to unpack .../038-libgcc-15-dev_15.2.0-12ubuntu1_armhf.deb ... 464s Unpacking libgcc-15-dev:armhf (15.2.0-12ubuntu1) ... 464s Selecting previously unselected package gcc-15-arm-linux-gnueabihf. 464s Preparing to unpack .../039-gcc-15-arm-linux-gnueabihf_15.2.0-12ubuntu1_armhf.deb ... 464s Unpacking gcc-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 464s Selecting previously unselected package gcc-15. 465s Preparing to unpack .../040-gcc-15_15.2.0-12ubuntu1_armhf.deb ... 465s Unpacking gcc-15 (15.2.0-12ubuntu1) ... 465s Selecting previously unselected package gcc-arm-linux-gnueabihf. 465s Preparing to unpack .../041-gcc-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 465s Unpacking gcc-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 465s Selecting previously unselected package gcc. 465s Preparing to unpack .../042-gcc_4%3a15.2.0-4ubuntu1_armhf.deb ... 465s Unpacking gcc (4:15.2.0-4ubuntu1) ... 465s Selecting previously unselected package libstdc++-15-dev:armhf. 465s Preparing to unpack .../043-libstdc++-15-dev_15.2.0-12ubuntu1_armhf.deb ... 465s Unpacking libstdc++-15-dev:armhf (15.2.0-12ubuntu1) ... 465s Selecting previously unselected package g++-15-arm-linux-gnueabihf. 465s Preparing to unpack .../044-g++-15-arm-linux-gnueabihf_15.2.0-12ubuntu1_armhf.deb ... 465s Unpacking g++-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 465s Selecting previously unselected package g++-15. 465s Preparing to unpack .../045-g++-15_15.2.0-12ubuntu1_armhf.deb ... 465s Unpacking g++-15 (15.2.0-12ubuntu1) ... 465s Selecting previously unselected package g++-arm-linux-gnueabihf. 465s Preparing to unpack .../046-g++-arm-linux-gnueabihf_4%3a15.2.0-4ubuntu1_armhf.deb ... 465s Unpacking g++-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 465s Selecting previously unselected package g++. 465s Preparing to unpack .../047-g++_4%3a15.2.0-4ubuntu1_armhf.deb ... 465s Unpacking g++ (4:15.2.0-4ubuntu1) ... 465s Selecting previously unselected package build-essential. 465s Preparing to unpack .../048-build-essential_12.12ubuntu2_armhf.deb ... 465s Unpacking build-essential (12.12ubuntu2) ... 465s Selecting previously unselected package libllvm18:armhf. 465s Preparing to unpack .../049-libllvm18_1%3a18.1.8-20ubuntu5_armhf.deb ... 465s Unpacking libllvm18:armhf (1:18.1.8-20ubuntu5) ... 466s Selecting previously unselected package libclang-cpp18. 466s Preparing to unpack .../050-libclang-cpp18_1%3a18.1.8-20ubuntu5_armhf.deb ... 466s Unpacking libclang-cpp18 (1:18.1.8-20ubuntu5) ... 467s Selecting previously unselected package libgc1:armhf. 467s Preparing to unpack .../051-libgc1_1%3a8.2.10-1_armhf.deb ... 467s Unpacking libgc1:armhf (1:8.2.10-1) ... 467s Selecting previously unselected package libobjc4:armhf. 467s Preparing to unpack .../052-libobjc4_15.2.0-12ubuntu1_armhf.deb ... 467s Unpacking libobjc4:armhf (15.2.0-12ubuntu1) ... 467s Selecting previously unselected package libobjc-15-dev:armhf. 467s Preparing to unpack .../053-libobjc-15-dev_15.2.0-12ubuntu1_armhf.deb ... 467s Unpacking libobjc-15-dev:armhf (15.2.0-12ubuntu1) ... 467s Selecting previously unselected package libclang-common-18-dev:armhf. 467s Preparing to unpack .../054-libclang-common-18-dev_1%3a18.1.8-20ubuntu5_armhf.deb ... 467s Unpacking libclang-common-18-dev:armhf (1:18.1.8-20ubuntu5) ... 467s Selecting previously unselected package llvm-18-linker-tools. 467s Preparing to unpack .../055-llvm-18-linker-tools_1%3a18.1.8-20ubuntu5_armhf.deb ... 467s Unpacking llvm-18-linker-tools (1:18.1.8-20ubuntu5) ... 467s Selecting previously unselected package libclang1-18. 467s Preparing to unpack .../056-libclang1-18_1%3a18.1.8-20ubuntu5_armhf.deb ... 467s Unpacking libclang1-18 (1:18.1.8-20ubuntu5) ... 467s Selecting previously unselected package clang-18. 467s Preparing to unpack .../057-clang-18_1%3a18.1.8-20ubuntu5_armhf.deb ... 467s Unpacking clang-18 (1:18.1.8-20ubuntu5) ... 467s Selecting previously unselected package libdebhelper-perl. 467s Preparing to unpack .../058-libdebhelper-perl_13.28ubuntu1_all.deb ... 467s Unpacking libdebhelper-perl (13.28ubuntu1) ... 468s Selecting previously unselected package libtool. 468s Preparing to unpack .../059-libtool_2.5.4-9_all.deb ... 468s Unpacking libtool (2.5.4-9) ... 468s Selecting previously unselected package dh-autoreconf. 468s Preparing to unpack .../060-dh-autoreconf_21_all.deb ... 468s Unpacking dh-autoreconf (21) ... 468s Selecting previously unselected package libarchive-zip-perl. 468s Preparing to unpack .../061-libarchive-zip-perl_1.68-1_all.deb ... 468s Unpacking libarchive-zip-perl (1.68-1) ... 468s Selecting previously unselected package libfile-stripnondeterminism-perl. 468s Preparing to unpack .../062-libfile-stripnondeterminism-perl_1.15.0-1build1_all.deb ... 468s Unpacking libfile-stripnondeterminism-perl (1.15.0-1build1) ... 468s Selecting previously unselected package dh-strip-nondeterminism. 468s Preparing to unpack .../063-dh-strip-nondeterminism_1.15.0-1build1_all.deb ... 468s Unpacking dh-strip-nondeterminism (1.15.0-1build1) ... 468s Selecting previously unselected package libdw1t64:armhf. 468s Preparing to unpack .../064-libdw1t64_0.194-1_armhf.deb ... 468s Unpacking libdw1t64:armhf (0.194-1) ... 468s Selecting previously unselected package debugedit. 468s Preparing to unpack .../065-debugedit_1%3a5.2-3build1_armhf.deb ... 468s Unpacking debugedit (1:5.2-3build1) ... 468s Selecting previously unselected package dwz. 468s Preparing to unpack .../066-dwz_0.16-2_armhf.deb ... 468s Unpacking dwz (0.16-2) ... 468s Selecting previously unselected package gettext. 468s Preparing to unpack .../067-gettext_0.23.2-1_armhf.deb ... 468s Unpacking gettext (0.23.2-1) ... 468s Selecting previously unselected package intltool-debian. 468s Preparing to unpack .../068-intltool-debian_0.35.0+20060710.6build1_all.deb ... 468s Unpacking intltool-debian (0.35.0+20060710.6build1) ... 468s Selecting previously unselected package po-debconf. 468s Preparing to unpack .../069-po-debconf_1.0.22_all.deb ... 468s Unpacking po-debconf (1.0.22) ... 468s Selecting previously unselected package debhelper. 468s Preparing to unpack .../070-debhelper_13.28ubuntu1_all.deb ... 468s Unpacking debhelper (13.28ubuntu1) ... 468s Selecting previously unselected package dh-python. 468s Preparing to unpack .../071-dh-python_7.20260125_all.deb ... 468s Unpacking dh-python (7.20260125) ... 468s Selecting previously unselected package libfreetype6:armhf. 468s Preparing to unpack .../072-libfreetype6_2.14.1+dfsg-2_armhf.deb ... 468s Unpacking libfreetype6:armhf (2.14.1+dfsg-2) ... 468s Selecting previously unselected package fonts-dejavu-mono. 468s Preparing to unpack .../073-fonts-dejavu-mono_2.37-8build1_all.deb ... 468s Unpacking fonts-dejavu-mono (2.37-8build1) ... 468s Selecting previously unselected package fonts-dejavu-core. 468s Preparing to unpack .../074-fonts-dejavu-core_2.37-8build1_all.deb ... 469s Unpacking fonts-dejavu-core (2.37-8build1) ... 469s Selecting previously unselected package fontconfig-config. 469s Preparing to unpack .../075-fontconfig-config_2.17.1-3ubuntu1_armhf.deb ... 469s Unpacking fontconfig-config (2.17.1-3ubuntu1) ... 469s Selecting previously unselected package libfontconfig1:armhf. 469s Preparing to unpack .../076-libfontconfig1_2.17.1-3ubuntu1_armhf.deb ... 469s Unpacking libfontconfig1:armhf (2.17.1-3ubuntu1) ... 469s Selecting previously unselected package fontconfig. 469s Preparing to unpack .../077-fontconfig_2.17.1-3ubuntu1_armhf.deb ... 469s Unpacking fontconfig (2.17.1-3ubuntu1) ... 469s Selecting previously unselected package fonts-lyx. 469s Preparing to unpack .../078-fonts-lyx_2.5.0~RC2-3_all.deb ... 469s Unpacking fonts-lyx (2.5.0~RC2-3) ... 469s Selecting previously unselected package libbabeltrace1:armhf. 469s Preparing to unpack .../079-libbabeltrace1_1.5.11-5_armhf.deb ... 469s Unpacking libbabeltrace1:armhf (1.5.11-5) ... 470s Selecting previously unselected package libdebuginfod1t64:armhf. 470s Preparing to unpack .../080-libdebuginfod1t64_0.194-1_armhf.deb ... 470s Unpacking libdebuginfod1t64:armhf (0.194-1) ... 470s Selecting previously unselected package libpython3.14-stdlib:armhf. 470s Preparing to unpack .../081-libpython3.14-stdlib_3.14.2-1_armhf.deb ... 470s Unpacking libpython3.14-stdlib:armhf (3.14.2-1) ... 470s Selecting previously unselected package libpython3.14:armhf. 470s Preparing to unpack .../082-libpython3.14_3.14.2-1_armhf.deb ... 470s Unpacking libpython3.14:armhf (3.14.2-1) ... 470s Selecting previously unselected package libsource-highlight-common. 470s Preparing to unpack .../083-libsource-highlight-common_3.1.9-4.3build2_all.deb ... 470s Unpacking libsource-highlight-common (3.1.9-4.3build2) ... 470s Selecting previously unselected package libsource-highlight4t64:armhf. 470s Preparing to unpack .../084-libsource-highlight4t64_3.1.9-4.3build2_armhf.deb ... 470s Unpacking libsource-highlight4t64:armhf (3.1.9-4.3build2) ... 470s Selecting previously unselected package libc6-dbg:armhf. 470s Preparing to unpack .../085-libc6-dbg_2.42-2ubuntu4_armhf.deb ... 470s Unpacking libc6-dbg:armhf (2.42-2ubuntu4) ... 470s Selecting previously unselected package gdb. 470s Preparing to unpack .../086-gdb_17.1-1ubuntu2_armhf.deb ... 470s Unpacking gdb (17.1-1ubuntu2) ... 470s Selecting previously unselected package libavahi-common-data:armhf. 470s Preparing to unpack .../087-libavahi-common-data_0.8-17ubuntu2_armhf.deb ... 470s Unpacking libavahi-common-data:armhf (0.8-17ubuntu2) ... 470s Selecting previously unselected package libavahi-common3:armhf. 470s Preparing to unpack .../088-libavahi-common3_0.8-17ubuntu2_armhf.deb ... 470s Unpacking libavahi-common3:armhf (0.8-17ubuntu2) ... 470s Selecting previously unselected package libavahi-client3:armhf. 470s Preparing to unpack .../089-libavahi-client3_0.8-17ubuntu2_armhf.deb ... 470s Unpacking libavahi-client3:armhf (0.8-17ubuntu2) ... 470s Selecting previously unselected package libcups2t64:armhf. 470s Preparing to unpack .../090-libcups2t64_2.4.16-1ubuntu1_armhf.deb ... 470s Unpacking libcups2t64:armhf (2.4.16-1ubuntu1) ... 470s Selecting previously unselected package libdeflate0:armhf. 470s Preparing to unpack .../091-libdeflate0_1.23-2_armhf.deb ... 470s Unpacking libdeflate0:armhf (1.23-2) ... 470s Selecting previously unselected package libdouble-conversion3:armhf. 470s Preparing to unpack .../092-libdouble-conversion3_3.4.0-1_armhf.deb ... 470s Unpacking libdouble-conversion3:armhf (3.4.0-1) ... 470s Selecting previously unselected package libllvm21:armhf. 471s Preparing to unpack .../093-libllvm21_1%3a21.1.8-1ubuntu1_armhf.deb ... 471s Unpacking libllvm21:armhf (1:21.1.8-1ubuntu1) ... 472s Selecting previously unselected package libx11-xcb1:armhf. 472s Preparing to unpack .../094-libx11-xcb1_2%3a1.8.12-1build1_armhf.deb ... 472s Unpacking libx11-xcb1:armhf (2:1.8.12-1build1) ... 472s Selecting previously unselected package libxcb-dri3-0:armhf. 472s Preparing to unpack .../095-libxcb-dri3-0_1.17.0-2ubuntu1_armhf.deb ... 472s Unpacking libxcb-dri3-0:armhf (1.17.0-2ubuntu1) ... 472s Selecting previously unselected package libxcb-present0:armhf. 472s Preparing to unpack .../096-libxcb-present0_1.17.0-2ubuntu1_armhf.deb ... 472s Unpacking libxcb-present0:armhf (1.17.0-2ubuntu1) ... 472s Selecting previously unselected package libxcb-randr0:armhf. 472s Preparing to unpack .../097-libxcb-randr0_1.17.0-2ubuntu1_armhf.deb ... 472s Unpacking libxcb-randr0:armhf (1.17.0-2ubuntu1) ... 472s Selecting previously unselected package libxcb-sync1:armhf. 472s Preparing to unpack .../098-libxcb-sync1_1.17.0-2ubuntu1_armhf.deb ... 472s Unpacking libxcb-sync1:armhf (1.17.0-2ubuntu1) ... 472s Selecting previously unselected package libxcb-xfixes0:armhf. 472s Preparing to unpack .../099-libxcb-xfixes0_1.17.0-2ubuntu1_armhf.deb ... 472s Unpacking libxcb-xfixes0:armhf (1.17.0-2ubuntu1) ... 472s Selecting previously unselected package libxshmfence1:armhf. 472s Preparing to unpack .../100-libxshmfence1_1.3.3-1build1_armhf.deb ... 472s Unpacking libxshmfence1:armhf (1.3.3-1build1) ... 472s Selecting previously unselected package mesa-libgallium:armhf. 472s Preparing to unpack .../101-mesa-libgallium_25.3.3-1ubuntu1_armhf.deb ... 472s Unpacking mesa-libgallium:armhf (25.3.3-1ubuntu1) ... 472s Selecting previously unselected package libgbm1:armhf. 472s Preparing to unpack .../102-libgbm1_25.3.3-1ubuntu1_armhf.deb ... 472s Unpacking libgbm1:armhf (25.3.3-1ubuntu1) ... 472s Selecting previously unselected package libwayland-client0:armhf. 472s Preparing to unpack .../103-libwayland-client0_1.24.0-2_armhf.deb ... 472s Unpacking libwayland-client0:armhf (1.24.0-2) ... 472s Selecting previously unselected package libxcb-shm0:armhf. 472s Preparing to unpack .../104-libxcb-shm0_1.17.0-2ubuntu1_armhf.deb ... 472s Unpacking libxcb-shm0:armhf (1.17.0-2ubuntu1) ... 472s Selecting previously unselected package libegl-mesa0:armhf. 472s Preparing to unpack .../105-libegl-mesa0_25.3.3-1ubuntu1_armhf.deb ... 472s Unpacking libegl-mesa0:armhf (25.3.3-1ubuntu1) ... 472s Selecting previously unselected package libvulkan1:armhf. 472s Preparing to unpack .../106-libvulkan1_1.4.335.0-1_armhf.deb ... 472s Unpacking libvulkan1:armhf (1.4.335.0-1) ... 472s Selecting previously unselected package libgl1-mesa-dri:armhf. 472s Preparing to unpack .../107-libgl1-mesa-dri_25.3.3-1ubuntu1_armhf.deb ... 472s Unpacking libgl1-mesa-dri:armhf (25.3.3-1ubuntu1) ... 472s Selecting previously unselected package libglvnd0:armhf. 472s Preparing to unpack .../108-libglvnd0_1.7.0-3_armhf.deb ... 472s Unpacking libglvnd0:armhf (1.7.0-3) ... 472s Selecting previously unselected package libxcb-glx0:armhf. 472s Preparing to unpack .../109-libxcb-glx0_1.17.0-2ubuntu1_armhf.deb ... 472s Unpacking libxcb-glx0:armhf (1.17.0-2ubuntu1) ... 472s Selecting previously unselected package libxxf86vm1:armhf. 473s Preparing to unpack .../110-libxxf86vm1_1%3a1.1.4-2_armhf.deb ... 473s Unpacking libxxf86vm1:armhf (1:1.1.4-2) ... 473s Selecting previously unselected package libglx-mesa0:armhf. 473s Preparing to unpack .../111-libglx-mesa0_25.3.3-1ubuntu1_armhf.deb ... 473s Unpacking libglx-mesa0:armhf (25.3.3-1ubuntu1) ... 473s Selecting previously unselected package libglx0:armhf. 473s Preparing to unpack .../112-libglx0_1.7.0-3_armhf.deb ... 473s Unpacking libglx0:armhf (1.7.0-3) ... 473s Selecting previously unselected package libgl1:armhf. 473s Preparing to unpack .../113-libgl1_1.7.0-3_armhf.deb ... 473s Unpacking libgl1:armhf (1.7.0-3) ... 473s Selecting previously unselected package libxi6:armhf. 473s Preparing to unpack .../114-libxi6_2%3a1.8.2-2_armhf.deb ... 473s Unpacking libxi6:armhf (2:1.8.2-2) ... 473s Selecting previously unselected package libglut3.12:armhf. 473s Preparing to unpack .../115-libglut3.12_3.4.0-6_armhf.deb ... 473s Unpacking libglut3.12:armhf (3.4.0-6) ... 473s Selecting previously unselected package libgraphite2-3:armhf. 473s Preparing to unpack .../116-libgraphite2-3_1.3.14-11ubuntu1_armhf.deb ... 473s Unpacking libgraphite2-3:armhf (1.3.14-11ubuntu1) ... 473s Selecting previously unselected package libharfbuzz0b:armhf. 473s Preparing to unpack .../117-libharfbuzz0b_12.3.2-1_armhf.deb ... 473s Unpacking libharfbuzz0b:armhf (12.3.2-1) ... 473s Selecting previously unselected package x11-common. 473s Preparing to unpack .../118-x11-common_1%3a7.7+24ubuntu1_all.deb ... 473s Unpacking x11-common (1:7.7+24ubuntu1) ... 473s Selecting previously unselected package libice6:armhf. 473s Preparing to unpack .../119-libice6_2%3a1.1.1-1build1_armhf.deb ... 473s Unpacking libice6:armhf (2:1.1.1-1build1) ... 473s Selecting previously unselected package libimagequant0:armhf. 473s Preparing to unpack .../120-libimagequant0_2.18.0-1build1_armhf.deb ... 473s Unpacking libimagequant0:armhf (2.18.0-1build1) ... 473s Selecting previously unselected package libwacom-common. 473s Preparing to unpack .../121-libwacom-common_2.16.1-1_all.deb ... 473s Unpacking libwacom-common (2.16.1-1) ... 473s Selecting previously unselected package libwacom9:armhf. 473s Preparing to unpack .../122-libwacom9_2.16.1-1_armhf.deb ... 473s Unpacking libwacom9:armhf (2.16.1-1) ... 473s Selecting previously unselected package libinput-bin. 473s Preparing to unpack .../123-libinput-bin_1.30.1-1_armhf.deb ... 473s Unpacking libinput-bin (1.30.1-1) ... 473s Selecting previously unselected package libmtdev1t64:armhf. 473s Preparing to unpack .../124-libmtdev1t64_1.1.7-1build1_armhf.deb ... 473s Unpacking libmtdev1t64:armhf (1.1.7-1build1) ... 473s Selecting previously unselected package libinput10:armhf. 473s Preparing to unpack .../125-libinput10_1.30.1-1_armhf.deb ... 473s Unpacking libinput10:armhf (1.30.1-1) ... 473s Selecting previously unselected package libjpeg-turbo8:armhf. 473s Preparing to unpack .../126-libjpeg-turbo8_2.1.5-4ubuntu2_armhf.deb ... 473s Unpacking libjpeg-turbo8:armhf (2.1.5-4ubuntu2) ... 473s Selecting previously unselected package libjpeg8:armhf. 473s Preparing to unpack .../127-libjpeg8_8c-2ubuntu11_armhf.deb ... 473s Unpacking libjpeg8:armhf (8c-2ubuntu11) ... 473s Selecting previously unselected package liblcms2-2:armhf. 473s Preparing to unpack .../128-liblcms2-2_2.17-1_armhf.deb ... 473s Unpacking liblcms2-2:armhf (2.17-1) ... 473s Selecting previously unselected package liblerc4:armhf. 473s Preparing to unpack .../129-liblerc4_4.0.0+ds-5ubuntu2_armhf.deb ... 473s Unpacking liblerc4:armhf (4.0.0+ds-5ubuntu2) ... 473s Selecting previously unselected package libllvmspirvlib18.1:armhf. 473s Preparing to unpack .../130-libllvmspirvlib18.1_18.1.19-1_armhf.deb ... 473s Unpacking libllvmspirvlib18.1:armhf (18.1.19-1) ... 474s Selecting previously unselected package libmd4c0:armhf. 474s Preparing to unpack .../131-libmd4c0_0.5.2-2build1_armhf.deb ... 474s Unpacking libmd4c0:armhf (0.5.2-2build1) ... 474s Selecting previously unselected package libnorm1t64:armhf. 474s Preparing to unpack .../132-libnorm1t64_1.5.9+dfsg-4_armhf.deb ... 474s Unpacking libnorm1t64:armhf (1.5.9+dfsg-4) ... 474s Selecting previously unselected package libpcre2-16-0:armhf. 474s Preparing to unpack .../133-libpcre2-16-0_10.46-1_armhf.deb ... 474s Unpacking libpcre2-16-0:armhf (10.46-1) ... 474s Selecting previously unselected package libpgm-5.3-0t64:armhf. 474s Preparing to unpack .../134-libpgm-5.3-0t64_5.3.128~dfsg-2.1build2_armhf.deb ... 474s Unpacking libpgm-5.3-0t64:armhf (5.3.128~dfsg-2.1build2) ... 474s Selecting previously unselected package libpocl2-common. 474s Preparing to unpack .../135-libpocl2-common_6.0-7_all.deb ... 474s Unpacking libpocl2-common (6.0-7) ... 474s Selecting previously unselected package llvm-spirv-18. 474s Preparing to unpack .../136-llvm-spirv-18_18.1.19-1_armhf.deb ... 474s Unpacking llvm-spirv-18 (18.1.19-1) ... 474s Selecting previously unselected package libpocl2t64:armhf. 474s Preparing to unpack .../137-libpocl2t64_6.0-7_armhf.deb ... 474s Unpacking libpocl2t64:armhf (6.0-7) ... 474s Selecting previously unselected package libpython3.13:armhf. 474s Preparing to unpack .../138-libpython3.13_3.13.11-1_armhf.deb ... 474s Unpacking libpython3.13:armhf (3.13.11-1) ... 474s Selecting previously unselected package libqhull-r8.0:armhf. 474s Preparing to unpack .../139-libqhull-r8.0_2020.2-8_armhf.deb ... 474s Unpacking libqhull-r8.0:armhf (2020.2-8) ... 474s Selecting previously unselected package libqt5core5t64:armhf. 474s Preparing to unpack .../140-libqt5core5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 474s Unpacking libqt5core5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 474s Selecting previously unselected package libqt5dbus5t64:armhf. 474s Preparing to unpack .../141-libqt5dbus5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 474s Unpacking libqt5dbus5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 474s Selecting previously unselected package libegl1:armhf. 474s Preparing to unpack .../142-libegl1_1.7.0-3_armhf.deb ... 474s Unpacking libegl1:armhf (1.7.0-3) ... 474s Selecting previously unselected package libgles2:armhf. 474s Preparing to unpack .../143-libgles2_1.7.0-3_armhf.deb ... 474s Unpacking libgles2:armhf (1.7.0-3) ... 474s Selecting previously unselected package libqt5network5t64:armhf. 474s Preparing to unpack .../144-libqt5network5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 474s Unpacking libqt5network5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 474s Selecting previously unselected package libsm6:armhf. 474s Preparing to unpack .../145-libsm6_2%3a1.2.6-1_armhf.deb ... 474s Unpacking libsm6:armhf (2:1.2.6-1) ... 474s Selecting previously unselected package libxcb-icccm4:armhf. 474s Preparing to unpack .../146-libxcb-icccm4_0.4.2-1build1_armhf.deb ... 474s Unpacking libxcb-icccm4:armhf (0.4.2-1build1) ... 474s Selecting previously unselected package libxcb-util1:armhf. 474s Preparing to unpack .../147-libxcb-util1_0.4.1-1build1_armhf.deb ... 474s Unpacking libxcb-util1:armhf (0.4.1-1build1) ... 474s Selecting previously unselected package libxcb-image0:armhf. 474s Preparing to unpack .../148-libxcb-image0_0.4.0-2build2_armhf.deb ... 474s Unpacking libxcb-image0:armhf (0.4.0-2build2) ... 474s Selecting previously unselected package libxcb-keysyms1:armhf. 474s Preparing to unpack .../149-libxcb-keysyms1_0.4.1-1build1_armhf.deb ... 474s Unpacking libxcb-keysyms1:armhf (0.4.1-1build1) ... 475s Selecting previously unselected package libxcb-render0:armhf. 475s Preparing to unpack .../150-libxcb-render0_1.17.0-2ubuntu1_armhf.deb ... 475s Unpacking libxcb-render0:armhf (1.17.0-2ubuntu1) ... 475s Selecting previously unselected package libxcb-render-util0:armhf. 475s Preparing to unpack .../151-libxcb-render-util0_0.3.10-1build1_armhf.deb ... 475s Unpacking libxcb-render-util0:armhf (0.3.10-1build1) ... 475s Selecting previously unselected package libxcb-shape0:armhf. 475s Preparing to unpack .../152-libxcb-shape0_1.17.0-2ubuntu1_armhf.deb ... 475s Unpacking libxcb-shape0:armhf (1.17.0-2ubuntu1) ... 475s Selecting previously unselected package libxcb-xinerama0:armhf. 475s Preparing to unpack .../153-libxcb-xinerama0_1.17.0-2ubuntu1_armhf.deb ... 475s Unpacking libxcb-xinerama0:armhf (1.17.0-2ubuntu1) ... 475s Selecting previously unselected package libxcb-xinput0:armhf. 475s Preparing to unpack .../154-libxcb-xinput0_1.17.0-2ubuntu1_armhf.deb ... 475s Unpacking libxcb-xinput0:armhf (1.17.0-2ubuntu1) ... 475s Selecting previously unselected package libxcb-xkb1:armhf. 475s Preparing to unpack .../155-libxcb-xkb1_1.17.0-2ubuntu1_armhf.deb ... 475s Unpacking libxcb-xkb1:armhf (1.17.0-2ubuntu1) ... 475s Selecting previously unselected package libxkbcommon-x11-0:armhf. 475s Preparing to unpack .../156-libxkbcommon-x11-0_1.12.3-1_armhf.deb ... 475s Unpacking libxkbcommon-x11-0:armhf (1.12.3-1) ... 475s Selecting previously unselected package libxrender1:armhf. 475s Preparing to unpack .../157-libxrender1_1%3a0.9.12-1_armhf.deb ... 475s Unpacking libxrender1:armhf (1:0.9.12-1) ... 475s Selecting previously unselected package libqt5gui5t64:armhf. 475s Preparing to unpack .../158-libqt5gui5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 475s Unpacking libqt5gui5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 475s Selecting previously unselected package libqt5widgets5t64:armhf. 475s Preparing to unpack .../159-libqt5widgets5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 475s Unpacking libqt5widgets5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 475s Selecting previously unselected package libqt5xml5t64:armhf. 475s Preparing to unpack .../160-libqt5xml5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 475s Unpacking libqt5xml5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 475s Selecting previously unselected package libqt5designer5:armhf. 475s Preparing to unpack .../161-libqt5designer5_5.15.18-1_armhf.deb ... 475s Unpacking libqt5designer5:armhf (5.15.18-1) ... 475s Selecting previously unselected package libqt5sql5t64:armhf. 475s Preparing to unpack .../162-libqt5sql5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 475s Unpacking libqt5sql5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 475s Selecting previously unselected package libqt5help5:armhf. 475s Preparing to unpack .../163-libqt5help5_5.15.18-1_armhf.deb ... 475s Unpacking libqt5help5:armhf (5.15.18-1) ... 475s Selecting previously unselected package libqt5opengl5t64:armhf. 475s Preparing to unpack .../164-libqt5opengl5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 475s Unpacking libqt5opengl5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 475s Selecting previously unselected package libqt5printsupport5t64:armhf. 475s Preparing to unpack .../165-libqt5printsupport5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 475s Unpacking libqt5printsupport5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 475s Selecting previously unselected package libqt5svg5:armhf. 475s Preparing to unpack .../166-libqt5svg5_5.15.18-1_armhf.deb ... 475s Unpacking libqt5svg5:armhf (5.15.18-1) ... 475s Selecting previously unselected package libqt5test5t64:armhf. 475s Preparing to unpack .../167-libqt5test5t64_5.15.18+dfsg-1ubuntu1_armhf.deb ... 475s Unpacking libqt5test5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 475s Selecting previously unselected package libraqm0:armhf. 475s Preparing to unpack .../168-libraqm0_0.10.3-1_armhf.deb ... 475s Unpacking libraqm0:armhf (0.10.3-1) ... 475s Selecting previously unselected package libsharpyuv0:armhf. 476s Preparing to unpack .../169-libsharpyuv0_1.5.0-0.1build1_armhf.deb ... 476s Unpacking libsharpyuv0:armhf (1.5.0-0.1build1) ... 476s Selecting previously unselected package libsodium23:armhf. 476s Preparing to unpack .../170-libsodium23_1.0.18-2_armhf.deb ... 476s Unpacking libsodium23:armhf (1.0.18-2) ... 476s Selecting previously unselected package libtcl8.6:armhf. 476s Preparing to unpack .../171-libtcl8.6_8.6.17+dfsg-1build1_armhf.deb ... 476s Unpacking libtcl8.6:armhf (8.6.17+dfsg-1build1) ... 476s Selecting previously unselected package libjbig0:armhf. 476s Preparing to unpack .../172-libjbig0_2.1-6.1ubuntu3_armhf.deb ... 476s Unpacking libjbig0:armhf (2.1-6.1ubuntu3) ... 476s Selecting previously unselected package libwebp7:armhf. 476s Preparing to unpack .../173-libwebp7_1.5.0-0.1build1_armhf.deb ... 476s Unpacking libwebp7:armhf (1.5.0-0.1build1) ... 476s Selecting previously unselected package libtiff6:armhf. 476s Preparing to unpack .../174-libtiff6_4.7.0-3ubuntu3_armhf.deb ... 476s Unpacking libtiff6:armhf (4.7.0-3ubuntu3) ... 476s Selecting previously unselected package libxft2:armhf. 476s Preparing to unpack .../175-libxft2_2.3.6-1build2_armhf.deb ... 476s Unpacking libxft2:armhf (2.3.6-1build2) ... 476s Selecting previously unselected package libxss1:armhf. 476s Preparing to unpack .../176-libxss1_1%3a1.2.3-1build4_armhf.deb ... 476s Unpacking libxss1:armhf (1:1.2.3-1build4) ... 476s Selecting previously unselected package libtk8.6:armhf. 476s Preparing to unpack .../177-libtk8.6_8.6.17-1_armhf.deb ... 476s Unpacking libtk8.6:armhf (8.6.17-1) ... 476s Selecting previously unselected package libwebpdemux2:armhf. 476s Preparing to unpack .../178-libwebpdemux2_1.5.0-0.1build1_armhf.deb ... 476s Unpacking libwebpdemux2:armhf (1.5.0-0.1build1) ... 476s Selecting previously unselected package libwebpmux3:armhf. 476s Preparing to unpack .../179-libwebpmux3_1.5.0-0.1build1_armhf.deb ... 476s Unpacking libwebpmux3:armhf (1.5.0-0.1build1) ... 476s Selecting previously unselected package libxslt1.1:armhf. 476s Preparing to unpack .../180-libxslt1.1_1.1.43-0.3_armhf.deb ... 476s Unpacking libxslt1.1:armhf (1.1.43-0.3) ... 476s Selecting previously unselected package libzmq5:armhf. 476s Preparing to unpack .../181-libzmq5_4.3.5-1build3_armhf.deb ... 476s Unpacking libzmq5:armhf (4.3.5-1build3) ... 476s Selecting previously unselected package libzopfli1. 476s Preparing to unpack .../182-libzopfli1_1.0.3-3build1_armhf.deb ... 476s Unpacking libzopfli1 (1.0.3-3build1) ... 476s Selecting previously unselected package pybuild-plugin-autopkgtest. 476s Preparing to unpack .../183-pybuild-plugin-autopkgtest_7.20260125_all.deb ... 476s Unpacking pybuild-plugin-autopkgtest (7.20260125) ... 476s Selecting previously unselected package python3-pyproject-hooks. 476s Preparing to unpack .../184-python3-pyproject-hooks_1.2.0-1_all.deb ... 476s Unpacking python3-pyproject-hooks (1.2.0-1) ... 476s Selecting previously unselected package python3-wheel. 476s Preparing to unpack .../185-python3-wheel_0.46.1-2_all.deb ... 476s Unpacking python3-wheel (0.46.1-2) ... 476s Selecting previously unselected package python3-build. 476s Preparing to unpack .../186-python3-build_1.2.2-5_all.deb ... 476s Unpacking python3-build (1.2.2-5) ... 476s Selecting previously unselected package python3-installer. 476s Preparing to unpack .../187-python3-installer_0.7.0+dfsg1-3_all.deb ... 476s Unpacking python3-installer (0.7.0+dfsg1-3) ... 476s Selecting previously unselected package pybuild-plugin-pyproject. 476s Preparing to unpack .../188-pybuild-plugin-pyproject_7.20260125_all.deb ... 476s Unpacking pybuild-plugin-pyproject (7.20260125) ... 476s Selecting previously unselected package python-matplotlib-data. 476s Preparing to unpack .../189-python-matplotlib-data_3.10.7+dfsg1-1_all.deb ... 476s Unpacking python-matplotlib-data (3.10.7+dfsg1-1) ... 477s Selecting previously unselected package python3.14. 477s Preparing to unpack .../190-python3.14_3.14.2-1_armhf.deb ... 477s Unpacking python3.14 (3.14.2-1) ... 477s Selecting previously unselected package python3-all. 477s Preparing to unpack .../191-python3-all_3.13.9-3_armhf.deb ... 477s Unpacking python3-all (3.13.9-3) ... 477s Selecting previously unselected package python3-astroid. 477s Preparing to unpack .../192-python3-astroid_4.0.2-1ubuntu1_all.deb ... 477s Unpacking python3-astroid (4.0.2-1ubuntu1) ... 477s Selecting previously unselected package python3-asttokens. 477s Preparing to unpack .../193-python3-asttokens_3.0.1-1_all.deb ... 477s Unpacking python3-asttokens (3.0.1-1) ... 477s Selecting previously unselected package python3-brotli. 477s Preparing to unpack .../194-python3-brotli_1.1.0-2build6_armhf.deb ... 477s Unpacking python3-brotli (1.1.0-2build6) ... 477s Selecting previously unselected package python3-traitlets. 477s Preparing to unpack .../195-python3-traitlets_5.14.3+really5.14.3-2_all.deb ... 477s Unpacking python3-traitlets (5.14.3+really5.14.3-2) ... 477s Selecting previously unselected package python3-comm. 477s Preparing to unpack .../196-python3-comm_0.2.1-1build1_all.deb ... 477s Unpacking python3-comm (0.2.1-1build1) ... 477s Selecting previously unselected package python3-contourpy. 477s Preparing to unpack .../197-python3-contourpy_1.3.3-1_armhf.deb ... 477s Unpacking python3-contourpy (1.3.3-1) ... 477s Selecting previously unselected package python3-coverage. 477s Preparing to unpack .../198-python3-coverage_7.8.2+dfsg1-1ubuntu1_armhf.deb ... 477s Unpacking python3-coverage (7.8.2+dfsg1-1ubuntu1) ... 477s Selecting previously unselected package python3-cycler. 477s Preparing to unpack .../199-python3-cycler_0.12.1-2_all.deb ... 477s Unpacking python3-cycler (0.12.1-2) ... 477s Selecting previously unselected package python3-debugpy. 477s Preparing to unpack .../200-python3-debugpy_1.8.19+ds-1ubuntu1_armhf.deb ... 477s Unpacking python3-debugpy (1.8.19+ds-1ubuntu1) ... 477s Selecting previously unselected package python3-decorator. 477s Preparing to unpack .../201-python3-decorator_5.2.1-2_all.deb ... 477s Unpacking python3-decorator (5.2.1-2) ... 477s Selecting previously unselected package python3-dicttoxml. 477s Preparing to unpack .../202-python3-dicttoxml_1.7.16-2_all.deb ... 477s Unpacking python3-dicttoxml (1.7.16-2) ... 477s Selecting previously unselected package python3-executing. 477s Preparing to unpack .../203-python3-executing_2.2.1-0.1_all.deb ... 477s Unpacking python3-executing (2.2.1-0.1) ... 477s Selecting previously unselected package python3-lxml:armhf. 477s Preparing to unpack .../204-python3-lxml_6.0.2-1_armhf.deb ... 477s Unpacking python3-lxml:armhf (6.0.2-1) ... 477s Selecting previously unselected package python3-lz4. 477s Preparing to unpack .../205-python3-lz4_4.4.5+dfsg-1_armhf.deb ... 477s Unpacking python3-lz4 (4.4.5+dfsg-1) ... 477s Selecting previously unselected package python3-scipy. 477s Preparing to unpack .../206-python3-scipy_1.16.3-4_armhf.deb ... 477s Unpacking python3-scipy (1.16.3-4) ... 478s Selecting previously unselected package python3-mpmath. 478s Preparing to unpack .../207-python3-mpmath_1.3.0-2_all.deb ... 478s Unpacking python3-mpmath (1.3.0-2) ... 478s Selecting previously unselected package python3-sympy. 478s Preparing to unpack .../208-python3-sympy_1.14.0-2_all.deb ... 478s Unpacking python3-sympy (1.14.0-2) ... 479s Selecting previously unselected package python3-ufolib2. 479s Preparing to unpack .../209-python3-ufolib2_0.18.1+dfsg1-1_all.deb ... 479s Unpacking python3-ufolib2 (0.18.1+dfsg1-1) ... 479s Selecting previously unselected package python3-zopfli. 479s Preparing to unpack .../210-python3-zopfli_0.4.0-1_armhf.deb ... 479s Unpacking python3-zopfli (0.4.0-1) ... 479s Selecting previously unselected package unicode-data. 479s Preparing to unpack .../211-unicode-data_16.0.0-1build1_all.deb ... 479s Unpacking unicode-data (16.0.0-1build1) ... 479s Selecting previously unselected package python3-fonttools. 479s Preparing to unpack .../212-python3-fonttools_4.61.1-3_armhf.deb ... 479s Unpacking python3-fonttools (4.61.1-3) ... 479s Selecting previously unselected package python3-requests-toolbelt. 479s Preparing to unpack .../213-python3-requests-toolbelt_1.0.0-4_all.deb ... 479s Unpacking python3-requests-toolbelt (1.0.0-4) ... 479s Selecting previously unselected package python3-gitlab. 479s Preparing to unpack .../214-python3-gitlab_1%3a4.9.0-1.1_all.deb ... 479s Unpacking python3-gitlab (1:4.9.0-1.1) ... 479s Selecting previously unselected package python3-hdf5plugin. 479s Preparing to unpack .../215-python3-hdf5plugin_5.1.0-1_all.deb ... 479s Unpacking python3-hdf5plugin (5.1.0-1) ... 479s Selecting previously unselected package python3-iniconfig. 479s Preparing to unpack .../216-python3-iniconfig_2.1.0-2_all.deb ... 479s Unpacking python3-iniconfig (2.1.0-2) ... 479s Selecting previously unselected package python3-parso. 479s Preparing to unpack .../217-python3-parso_0.8.5-1_all.deb ... 479s Unpacking python3-parso (0.8.5-1) ... 479s Selecting previously unselected package python3-typeshed. 479s Preparing to unpack .../218-python3-typeshed_0.0~git20241223.ea91db2-4_all.deb ... 479s Unpacking python3-typeshed (0.0~git20241223.ea91db2-4) ... 480s Selecting previously unselected package python3-jedi. 480s Preparing to unpack .../219-python3-jedi_0.19.1+ds1-1build1_all.deb ... 480s Unpacking python3-jedi (0.19.1+ds1-1build1) ... 481s Selecting previously unselected package python3-matplotlib-inline. 481s Preparing to unpack .../220-python3-matplotlib-inline_0.2.1-1_all.deb ... 481s Unpacking python3-matplotlib-inline (0.2.1-1) ... 481s Selecting previously unselected package python3-wcwidth. 481s Preparing to unpack .../221-python3-wcwidth_0.2.14+dfsg1-1build1_all.deb ... 481s Unpacking python3-wcwidth (0.2.14+dfsg1-1build1) ... 481s Selecting previously unselected package python3-prompt-toolkit. 481s Preparing to unpack .../222-python3-prompt-toolkit_3.0.52-2_all.deb ... 481s Unpacking python3-prompt-toolkit (3.0.52-2) ... 481s Selecting previously unselected package python3-pure-eval. 481s Preparing to unpack .../223-python3-pure-eval_0.2.3-1_all.deb ... 481s Unpacking python3-pure-eval (0.2.3-1) ... 481s Selecting previously unselected package python3-stack-data. 481s Preparing to unpack .../224-python3-stack-data_0.6.3-3_all.deb ... 481s Unpacking python3-stack-data (0.6.3-3) ... 481s Selecting previously unselected package python3-ipython. 481s Preparing to unpack .../225-python3-ipython_8.35.0-2_all.deb ... 481s Unpacking python3-ipython (8.35.0-2) ... 481s Selecting previously unselected package python3-platformdirs. 481s Preparing to unpack .../226-python3-platformdirs_4.5.1-1_all.deb ... 481s Unpacking python3-platformdirs (4.5.1-1) ... 481s Selecting previously unselected package python3-jupyter-core. 481s Preparing to unpack .../227-python3-jupyter-core_5.9.1-1_all.deb ... 481s Unpacking python3-jupyter-core (5.9.1-1) ... 481s Selecting previously unselected package python3-psutil. 481s Preparing to unpack .../228-python3-psutil_7.1.0-1ubuntu1_armhf.deb ... 481s Unpacking python3-psutil (7.1.0-1ubuntu1) ... 481s Selecting previously unselected package python3-tornado. 481s Preparing to unpack .../229-python3-tornado_6.5.4-0.1_armhf.deb ... 481s Unpacking python3-tornado (6.5.4-0.1) ... 481s Selecting previously unselected package python3-zmq. 481s Preparing to unpack .../230-python3-zmq_27.1.0-1_armhf.deb ... 481s Unpacking python3-zmq (27.1.0-1) ... 481s Selecting previously unselected package python3-jupyter-client. 481s Preparing to unpack .../231-python3-jupyter-client_8.7.0-1_all.deb ... 481s Unpacking python3-jupyter-client (8.7.0-1) ... 481s Selecting previously unselected package python3-nest-asyncio. 481s Preparing to unpack .../232-python3-nest-asyncio_1.6.0-1_all.deb ... 481s Unpacking python3-nest-asyncio (1.6.0-1) ... 481s Selecting previously unselected package python3-ipykernel. 481s Preparing to unpack .../233-python3-ipykernel_6.30.1-1_all.deb ... 481s Unpacking python3-ipykernel (6.30.1-1) ... 481s Selecting previously unselected package python3-kiwisolver. 481s Preparing to unpack .../234-python3-kiwisolver_1.4.10~rc0-1_armhf.deb ... 481s Unpacking python3-kiwisolver (1.4.10~rc0-1) ... 482s Selecting previously unselected package python3-mako. 482s Preparing to unpack .../235-python3-mako_1.3.10-3build1_all.deb ... 482s Unpacking python3-mako (1.3.10-3build1) ... 482s Selecting previously unselected package libopenjp2-7:armhf. 482s Preparing to unpack .../236-libopenjp2-7_2.5.4-1_armhf.deb ... 482s Unpacking libopenjp2-7:armhf (2.5.4-1) ... 482s Selecting previously unselected package python3-pil:armhf. 482s Preparing to unpack .../237-python3-pil_12.0.0-1ubuntu1_armhf.deb ... 482s Unpacking python3-pil:armhf (12.0.0-1ubuntu1) ... 482s Selecting previously unselected package python3.13-tk. 482s Preparing to unpack .../238-python3.13-tk_3.13.11-1_armhf.deb ... 482s Unpacking python3.13-tk (3.13.11-1) ... 482s Selecting previously unselected package python3.14-tk. 482s Preparing to unpack .../239-python3.14-tk_3.14.2-1_armhf.deb ... 482s Unpacking python3.14-tk (3.14.2-1) ... 482s Selecting previously unselected package python3-tk. 482s Preparing to unpack .../240-python3-tk_3.13.9-3_armhf.deb ... 482s Unpacking python3-tk (3.13.9-3) ... 482s Selecting previously unselected package python3-pil.imagetk:armhf. 482s Preparing to unpack .../241-python3-pil.imagetk_12.0.0-1ubuntu1_armhf.deb ... 482s Unpacking python3-pil.imagetk:armhf (12.0.0-1ubuntu1) ... 482s Selecting previously unselected package python3-matplotlib. 482s Preparing to unpack .../242-python3-matplotlib_3.10.7+dfsg1-1_armhf.deb ... 482s Unpacking python3-matplotlib (3.10.7+dfsg1-1) ... 483s Selecting previously unselected package python3-pyunitsystem. 483s Preparing to unpack .../243-python3-pyunitsystem_2.0.0-1_all.deb ... 483s Unpacking python3-pyunitsystem (2.0.0-1) ... 483s Selecting previously unselected package python3-pyqt5.sip. 483s Preparing to unpack .../244-python3-pyqt5.sip_12.17.2-1_armhf.deb ... 483s Unpacking python3-pyqt5.sip (12.17.2-1) ... 483s Selecting previously unselected package python3-pyqt5. 483s Preparing to unpack .../245-python3-pyqt5_5.15.11+dfsg-3build2_armhf.deb ... 483s Unpacking python3-pyqt5 (5.15.11+dfsg-3build2) ... 483s Selecting previously unselected package python3-fabio. 483s Preparing to unpack .../246-python3-fabio_2024.9.0-9_armhf.deb ... 483s Unpacking python3-fabio (2024.9.0-9) ... 483s Selecting previously unselected package libopengl0:armhf. 483s Preparing to unpack .../247-libopengl0_1.7.0-3_armhf.deb ... 483s Unpacking libopengl0:armhf (1.7.0-3) ... 483s Selecting previously unselected package libglu1-mesa:armhf. 483s Preparing to unpack .../248-libglu1-mesa_9.0.2-1.1build2_armhf.deb ... 483s Unpacking libglu1-mesa:armhf (9.0.2-1.1build2) ... 483s Selecting previously unselected package python3-opengl. 483s Preparing to unpack .../249-python3-opengl_3.1.10+dfsg-1_all.deb ... 483s Unpacking python3-opengl (3.1.10+dfsg-1) ... 483s Selecting previously unselected package ocl-icd-libopencl1:armhf. 483s Preparing to unpack .../250-ocl-icd-libopencl1_2.3.4-1_armhf.deb ... 483s Unpacking ocl-icd-libopencl1:armhf (2.3.4-1) ... 483s Selecting previously unselected package pocl-opencl-icd:armhf. 483s Preparing to unpack .../251-pocl-opencl-icd_6.0-7_armhf.deb ... 483s Unpacking pocl-opencl-icd:armhf (6.0-7) ... 484s Selecting previously unselected package python3-pytools. 484s Preparing to unpack .../252-python3-pytools_2025.1.2-1_all.deb ... 484s Unpacking python3-pytools (2025.1.2-1) ... 484s Selecting previously unselected package python3-pyopencl. 484s Preparing to unpack .../253-python3-pyopencl_2025.1-2_armhf.deb ... 484s Unpacking python3-pyopencl (2025.1-2) ... 484s Selecting previously unselected package python3-pyqt5.qtopengl. 484s Preparing to unpack .../254-python3-pyqt5.qtopengl_5.15.11+dfsg-3build2_armhf.deb ... 484s Unpacking python3-pyqt5.qtopengl (5.15.11+dfsg-3build2) ... 484s Selecting previously unselected package python3-pyqt5.qtsvg. 484s Preparing to unpack .../255-python3-pyqt5.qtsvg_5.15.11+dfsg-3build2_armhf.deb ... 484s Unpacking python3-pyqt5.qtsvg (5.15.11+dfsg-3build2) ... 484s Selecting previously unselected package python3-qtpy. 484s Preparing to unpack .../256-python3-qtpy_2.4.3-1_all.deb ... 484s Unpacking python3-qtpy (2.4.3-1) ... 484s Selecting previously unselected package python3-qtconsole. 484s Preparing to unpack .../257-python3-qtconsole_5.6.1-4_all.deb ... 484s Unpacking python3-qtconsole (5.6.1-4) ... 484s Selecting previously unselected package python3-pooch. 484s Preparing to unpack .../258-python3-pooch_1.8.2-1_all.deb ... 484s Unpacking python3-pooch (1.8.2-1) ... 484s Selecting previously unselected package python3-silx. 484s Preparing to unpack .../259-python3-silx_2.2.1+dfsg-5_armhf.deb ... 484s Unpacking python3-silx (2.2.1+dfsg-5) ... 484s Selecting previously unselected package python3-nxtomo. 484s Preparing to unpack .../260-python3-nxtomo_1.3.0.dev9-1_all.deb ... 484s Unpacking python3-nxtomo (1.3.0.dev9-1) ... 484s Selecting previously unselected package python3-tomoscan. 485s Preparing to unpack .../261-python3-tomoscan_2.2.0~dev0-2_all.deb ... 485s Unpacking python3-tomoscan (2.2.0~dev0-2) ... 485s Selecting previously unselected package python3-tqdm. 485s Preparing to unpack .../262-python3-tqdm_4.67.3-1_all.deb ... 485s Unpacking python3-tqdm (4.67.3-1) ... 485s Selecting previously unselected package python3-nxtomomill. 485s Preparing to unpack .../263-python3-nxtomomill_1.1.0-6_all.deb ... 485s Unpacking python3-nxtomomill (1.1.0-6) ... 485s Selecting previously unselected package python3-pluggy. 485s Preparing to unpack .../264-python3-pluggy_1.6.0-2_all.deb ... 485s Unpacking python3-pluggy (1.6.0-2) ... 485s Selecting previously unselected package python3-pytest. 485s Preparing to unpack .../265-python3-pytest_9.0.2-2_all.deb ... 485s Unpacking python3-pytest (9.0.2-2) ... 485s Setting up libpython3.13:armhf (3.13.11-1) ... 485s Setting up dh-python (7.20260125) ... 485s Setting up libgraphite2-3:armhf (1.3.14-11ubuntu1) ... 485s Setting up libxcb-dri3-0:armhf (1.17.0-2ubuntu1) ... 485s Setting up liblcms2-2:armhf (2.17-1) ... 485s Setting up python3-iniconfig (2.1.0-2) ... 486s Setting up python3-tornado (6.5.4-0.1) ... 487s Setting up libnorm1t64:armhf (1.5.9+dfsg-4) ... 487s Setting up libsharpyuv0:armhf (1.5.0-0.1build1) ... 487s Setting up libx11-xcb1:armhf (2:1.8.12-1build1) ... 487s Setting up python3-pure-eval (0.2.3-1) ... 487s Setting up libdouble-conversion3:armhf (3.4.0-1) ... 487s Setting up libsodium23:armhf (1.0.18-2) ... 487s Setting up libxcb-xfixes0:armhf (1.17.0-2ubuntu1) ... 487s Setting up python3-requests-toolbelt (1.0.0-4) ... 487s Setting up liblerc4:armhf (4.0.0+ds-5ubuntu2) ... 487s Setting up libxi6:armhf (2:1.8.2-2) ... 487s Setting up libxcb-xinput0:armhf (1.17.0-2ubuntu1) ... 487s Setting up libxrender1:armhf (1:0.9.12-1) ... 487s Setting up libdebuginfod-common (0.194-1) ... 487s Setting up python3-parso (0.8.5-1) ... 487s Setting up python3-lz4 (4.4.5+dfsg-1) ... 488s Setting up libxcb-render0:armhf (1.17.0-2ubuntu1) ... 488s Setting up libarchive-zip-perl (1.68-1) ... 488s Setting up libglvnd0:armhf (1.7.0-3) ... 488s Setting up fonts-lyx (2.5.0~RC2-3) ... 488s Setting up libxcb-glx0:armhf (1.17.0-2ubuntu1) ... 488s Setting up libdebhelper-perl (13.28ubuntu1) ... 488s Setting up libpython3.14-minimal:armhf (3.14.2-1) ... 488s Setting up python3-tqdm (4.67.3-1) ... 488s Setting up python3-dicttoxml (1.7.16-2) ... 488s Setting up libxcb-keysyms1:armhf (0.4.1-1build1) ... 488s Setting up libxcb-shape0:armhf (1.17.0-2ubuntu1) ... 488s Setting up x11-common (1:7.7+24ubuntu1) ... 489s Setting up libdeflate0:armhf (1.23-2) ... 489s Setting up linux-libc-dev:armhf (6.18.0-9.9) ... 489s Setting up m4 (1.4.20-2) ... 489s Setting up libqhull-r8.0:armhf (2020.2-8) ... 489s Setting up libxcb-render-util0:armhf (0.3.10-1build1) ... 489s Setting up libxcb-shm0:armhf (1.17.0-2ubuntu1) ... 489s Setting up libxcb-icccm4:armhf (0.4.2-1build1) ... 489s Setting up libgomp1:armhf (15.2.0-12ubuntu1) ... 489s Setting up python3-wheel (0.46.1-2) ... 489s Setting up libjbig0:armhf (2.1-6.1ubuntu3) ... 489s Setting up libpcre2-16-0:armhf (10.46-1) ... 489s Setting up python3-platformdirs (4.5.1-1) ... 489s Setting up python3-psutil (7.1.0-1ubuntu1) ... 490s Setting up libsource-highlight-common (3.1.9-4.3build2) ... 490s Setting up libopengl0:armhf (1.7.0-3) ... 490s Setting up libxcb-util1:armhf (0.4.1-1build1) ... 490s Setting up libxxf86vm1:armhf (1:1.1.4-2) ... 490s Setting up libc6-dbg:armhf (2.42-2ubuntu4) ... 490s Setting up libxcb-xkb1:armhf (1.17.0-2ubuntu1) ... 490s Setting up libxcb-image0:armhf (0.4.0-2build2) ... 490s Setting up libdw1t64:armhf (0.194-1) ... 490s Setting up libxcb-present0:armhf (1.17.0-2ubuntu1) ... 490s Setting up unicode-data (16.0.0-1build1) ... 490s Setting up libpgm-5.3-0t64:armhf (5.3.128~dfsg-2.1build2) ... 490s Setting up libqt5core5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 490s Setting up python3-decorator (5.2.1-2) ... 490s Setting up autotools-dev (20240727.1) ... 490s Setting up libblas3:armhf (3.12.1-7ubuntu1) ... 490s update-alternatives: using /usr/lib/arm-linux-gnueabihf/blas/libblas.so.3 to provide /usr/lib/arm-linux-gnueabihf/libblas.so.3 (libblas.so.3-arm-linux-gnueabihf) in auto mode 490s Setting up libxcb-xinerama0:armhf (1.17.0-2ubuntu1) ... 490s Setting up rpcsvc-proto (1.4.3-1build1) ... 490s Setting up libgles2:armhf (1.7.0-3) ... 490s Setting up python3-wcwidth (0.2.14+dfsg1-1build1) ... 490s Setting up python3-pyproject-hooks (1.2.0-1) ... 491s Setting up libzopfli1 (1.0.3-3build1) ... 491s Setting up libfreetype6:armhf (2.14.1+dfsg-2) ... 491s Setting up python3-typeshed (0.0~git20241223.ea91db2-4) ... 491s Setting up libxcb-sync1:armhf (1.17.0-2ubuntu1) ... 491s Setting up python3-pooch (1.8.2-1) ... 491s Setting up libllvm21:armhf (1:21.1.8-1ubuntu1) ... 491s Setting up python3-nest-asyncio (1.6.0-1) ... 491s Setting up python3-brotli (1.1.0-2build6) ... 491s Setting up libavahi-common-data:armhf (0.8-17ubuntu2) ... 491s Setting up liblzf1:armhf (3.6-4build1) ... 491s Setting up libpocl2-common (6.0-7) ... 491s Setting up python3-cycler (0.12.1-2) ... 492s Setting up libimagequant0:armhf (2.18.0-1build1) ... 492s Setting up libxkbcommon-x11-0:armhf (1.12.3-1) ... 492s Setting up python3-pyunitsystem (2.0.0-1) ... 492s Setting up fonts-dejavu-mono (2.37-8build1) ... 492s Setting up python3-kiwisolver (1.4.10~rc0-1) ... 492s Setting up libhwloc15:armhf (2.12.2-1) ... 492s Setting up libmpc3:armhf (1.3.1-2) ... 492s Setting up python3-numpy-dev:armhf (1:2.3.5+ds-3) ... 492s Setting up libtcl8.6:armhf (8.6.17+dfsg-1build1) ... 492s Setting up autopoint (0.23.2-1) ... 492s Setting up fonts-dejavu-core (2.37-8build1) ... 492s Setting up libclang-common-18-dev:armhf (1:18.1.8-20ubuntu5) ... 492s Setting up libjpeg-turbo8:armhf (2.1.5-4ubuntu2) ... 492s Setting up libgc1:armhf (1:8.2.10-1) ... 492s Setting up libbabeltrace1:armhf (1.5.11-5) ... 492s Setting up python3-installer (0.7.0+dfsg1-3) ... 492s Setting up libgfortran5:armhf (15.2.0-12ubuntu1) ... 492s Setting up libvulkan1:armhf (1.4.335.0-1) ... 492s Setting up autoconf (2.72-3.1ubuntu1) ... 492s Setting up python3-pluggy (1.6.0-2) ... 493s Setting up libwebp7:armhf (1.5.0-0.1build1) ... 493s Setting up libubsan1:armhf (15.2.0-12ubuntu1) ... 493s Setting up python3-pyqt5.sip (12.17.2-1) ... 493s Setting up dwz (0.16-2) ... 493s Setting up libmpich12:armhf (4.3.2-2) ... 493s Setting up libmtdev1t64:armhf (1.1.7-1build1) ... 493s Setting up ocl-icd-libopencl1:armhf (2.3.4-1) ... 493s Setting up python3-astroid (4.0.2-1ubuntu1) ... 493s Setting up libxshmfence1:armhf (1.3.3-1build1) ... 493s Setting up libcrypt-dev:armhf (1:4.5.1-1) ... 493s Setting up libxcb-randr0:armhf (1.17.0-2ubuntu1) ... 493s Setting up python3-traitlets (5.14.3+really5.14.3-2) ... 494s Setting up libasan8:armhf (15.2.0-12ubuntu1) ... 494s Setting up libxslt1.1:armhf (1.1.43-0.3) ... 494s Setting up libqt5sql5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 494s Setting up debugedit (1:5.2-3build1) ... 494s Setting up libmd4c0:armhf (0.5.2-2build1) ... 494s Setting up python3-qtpy (2.4.3-1) ... 494s Setting up libopenjp2-7:armhf (2.5.4-1) ... 494s Setting up libharfbuzz0b:armhf (12.3.2-1) ... 494s Setting up libglu1-mesa:armhf (9.0.2-1.1build2) ... 494s Setting up libxss1:armhf (1:1.2.3-1build4) ... 494s Setting up python3-mpmath (1.3.0-2) ... 495s Setting up libisl23:armhf (0.27-1build1) ... 495s Setting up python3-build (1.2.2-5) ... 495s Setting up libc-dev-bin (2.42-2ubuntu4) ... 495s Setting up python-matplotlib-data (3.10.7+dfsg1-1) ... 495s Setting up libwebpmux3:armhf (1.5.0-0.1build1) ... 495s Setting up cpp-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 495s Setting up python3-gitlab (1:4.9.0-1.1) ... 496s Setting up python3.14-minimal (3.14.2-1) ... 497s Setting up libcc1-0:armhf (15.2.0-12ubuntu1) ... 497s Setting up python3-jupyter-core (5.9.1-1) ... 498s Setting up cpp-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 498s Setting up libsz2:armhf (1.1.5-1) ... 498s Setting up python3-mako (1.3.10-3build1) ... 498s Setting up libllvm18:armhf (1:18.1.8-20ubuntu5) ... 498s Setting up libwacom-common (2.16.1-1) ... 498s Setting up libwayland-client0:armhf (1.24.0-2) ... 498s Setting up libjpeg8:armhf (8c-2ubuntu11) ... 498s Setting up automake (1:1.18.1-3build1) ... 498s update-alternatives: using /usr/bin/automake-1.18 to provide /usr/bin/automake (automake) in auto mode 498s Setting up python3-prompt-toolkit (3.0.52-2) ... 499s Setting up libfile-stripnondeterminism-perl (1.15.0-1build1) ... 499s Setting up python3-sympy (1.14.0-2) ... 507s /usr/lib/python3/dist-packages/sympy/testing/runtests.py:283: SyntaxWarning: 'return' in a 'finally' block 507s return p.returncode 514s Setting up libclang1-18 (1:18.1.8-20ubuntu5) ... 514s Setting up libdebuginfod1t64:armhf (0.194-1) ... 514s Setting up libice6:armhf (2:1.1.1-1build1) ... 514s Setting up mesa-libgallium:armhf (25.3.3-1ubuntu1) ... 514s Setting up liblapack3:armhf (3.12.1-7ubuntu1) ... 514s update-alternatives: using /usr/lib/arm-linux-gnueabihf/lapack/liblapack.so.3 to provide /usr/lib/arm-linux-gnueabihf/liblapack.so.3 (liblapack.so.3-arm-linux-gnueabihf) in auto mode 514s Setting up libqt5dbus5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 514s Setting up gettext (0.23.2-1) ... 514s Setting up libgcc-15-dev:armhf (15.2.0-12ubuntu1) ... 514s Setting up libzmq5:armhf (4.3.5-1build3) ... 514s Setting up gcc-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 514s Setting up python3-jedi (0.19.1+ds1-1build1) ... 515s Setting up libgbm1:armhf (25.3.3-1ubuntu1) ... 515s Setting up libpython3.14-stdlib:armhf (3.14.2-1) ... 515s Setting up libwacom9:armhf (2.16.1-1) ... 515s Setting up python3-asttokens (3.0.1-1) ... 515s Setting up pybuild-plugin-pyproject (7.20260125) ... 515s Setting up fontconfig-config (2.17.1-3ubuntu1) ... 516s Setting up python3-pytest (9.0.2-2) ... 516s Setting up libwebpdemux2:armhf (1.5.0-0.1build1) ... 516s Setting up libgl1-mesa-dri:armhf (25.3.3-1ubuntu1) ... 516s Setting up libqt5network5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 516s Setting up libavahi-common3:armhf (0.8-17ubuntu2) ... 516s Setting up libqt5xml5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 516s Setting up libobjc4:armhf (15.2.0-12ubuntu1) ... 516s Setting up libsource-highlight4t64:armhf (3.1.9-4.3build2) ... 516s Setting up libqt5test5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 516s Setting up python3-zopfli (0.4.0-1) ... 517s Setting up libinput-bin (1.30.1-1) ... 517s Setting up intltool-debian (0.35.0+20060710.6build1) ... 517s Setting up python3-matplotlib-inline (0.2.1-1) ... 517s Setting up python3-comm (0.2.1-1build1) ... 517s Setting up libegl-mesa0:armhf (25.3.3-1ubuntu1) ... 517s Setting up python3-executing (2.2.1-0.1) ... 517s Setting up python3-zmq (27.1.0-1) ... 518s Setting up libraqm0:armhf (0.10.3-1) ... 518s Setting up python3-numpy (1:2.3.5+ds-3) ... 522s Setting up llvm-18-linker-tools (1:18.1.8-20ubuntu5) ... 522s Setting up dh-strip-nondeterminism (1.15.0-1build1) ... 522s Setting up libhdf5-310:armhf (1.14.6+repack-2) ... 522s Setting up cpp-15 (15.2.0-12ubuntu1) ... 522s Setting up python3-lxml:armhf (6.0.2-1) ... 523s Setting up libtiff6:armhf (4.7.0-3ubuntu3) ... 523s Setting up cpp (4:15.2.0-4ubuntu1) ... 523s Setting up libegl1:armhf (1.7.0-3) ... 523s Setting up libpython3.14:armhf (3.14.2-1) ... 523s Setting up libc6-dev:armhf (2.42-2ubuntu4) ... 523s Setting up python3-jupyter-client (8.7.0-1) ... 523s Setting up python3-contourpy (1.3.3-1) ... 523s Setting up libllvmspirvlib18.1:armhf (18.1.19-1) ... 523s Setting up libfontconfig1:armhf (2.17.1-3ubuntu1) ... 523s Setting up python3.14 (3.14.2-1) ... 525s Setting up libobjc-15-dev:armhf (15.2.0-12ubuntu1) ... 525s Setting up libhdf5-mpich-310:armhf (1.14.6+repack-2) ... 525s Setting up libclang-cpp18 (1:18.1.8-20ubuntu5) ... 525s Setting up libsm6:armhf (2:1.2.6-1) ... 525s Setting up python3-stack-data (0.6.3-3) ... 525s Setting up libavahi-client3:armhf (0.8-17ubuntu2) ... 525s Setting up gcc-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 525s Setting up libinput10:armhf (1.30.1-1) ... 525s Setting up libhdf5-hl-310:armhf (1.14.6+repack-2) ... 525s Setting up fontconfig (2.17.1-3ubuntu1) ... 527s Regenerating fonts cache... done. 527s Setting up libxft2:armhf (2.3.6-1build2) ... 527s Setting up libglx-mesa0:armhf (25.3.3-1ubuntu1) ... 527s Setting up python3-scipy (1.16.3-4) ... 537s Setting up libglx0:armhf (1.7.0-3) ... 537s Setting up po-debconf (1.0.22) ... 537s Setting up libtk8.6:armhf (8.6.17-1) ... 537s Setting up python3-h5py-serial (3.15.1-4) ... 538s Setting up python3-all (3.13.9-3) ... 538s Setting up python3-coverage (7.8.2+dfsg1-1ubuntu1) ... 538s Setting up python3.13-tk (3.13.11-1) ... 538s Setting up python3-pil:armhf (12.0.0-1ubuntu1) ... 539s Setting up gcc-15 (15.2.0-12ubuntu1) ... 539s Setting up libqt5gui5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 539s Setting up gdb (17.1-1ubuntu2) ... 539s Setting up libgl1:armhf (1.7.0-3) ... 539s Setting up libstdc++-15-dev:armhf (15.2.0-12ubuntu1) ... 539s Setting up python3-ipython (8.35.0-2) ... 540s /usr/lib/python3/dist-packages/IPython/core/interactiveshell.py:3141: SyntaxWarning: 'return' in a 'finally' block 540s return result 541s Setting up libglut3.12:armhf (3.4.0-6) ... 541s Setting up python3-h5py (3.15.1-4) ... 541s Setting up python3-pytools (2025.1.2-1) ... 541s Setting up python3-hdf5plugin (5.1.0-1) ... 542s Setting up llvm-spirv-18 (18.1.19-1) ... 542s Setting up libcups2t64:armhf (2.4.16-1ubuntu1) ... 542s Setting up bitshuffle (0.5.2-1build3) ... 542s Setting up python3.14-tk (3.14.2-1) ... 542s Setting up libtool (2.5.4-9) ... 542s Setting up libqt5widgets5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 542s Setting up libqt5svg5:armhf (5.15.18-1) ... 542s Setting up g++-15-arm-linux-gnueabihf (15.2.0-12ubuntu1) ... 542s Setting up python3-tk (3.13.9-3) ... 542s Setting up clang-18 (1:18.1.8-20ubuntu5) ... 542s Setting up python3-opengl (3.1.10+dfsg-1) ... 546s Setting up python3-debugpy (1.8.19+ds-1ubuntu1) ... 548s Setting up libqt5help5:armhf (5.15.18-1) ... 548s Setting up gcc (4:15.2.0-4ubuntu1) ... 548s Setting up dh-autoreconf (21) ... 548s Setting up python3-pil.imagetk:armhf (12.0.0-1ubuntu1) ... 548s Setting up python3-ipykernel (6.30.1-1) ... 548s Setting up libqt5opengl5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 548s Setting up g++-15 (15.2.0-12ubuntu1) ... 548s Setting up libqt5printsupport5t64:armhf (5.15.18+dfsg-1ubuntu1) ... 548s Setting up g++-arm-linux-gnueabihf (4:15.2.0-4ubuntu1) ... 548s Setting up libqt5designer5:armhf (5.15.18-1) ... 548s Setting up libpocl2t64:armhf (6.0-7) ... 548s Setting up debhelper (13.28ubuntu1) ... 548s Setting up python3-qtconsole (5.6.1-4) ... 549s Setting up pocl-opencl-icd:armhf (6.0-7) ... 549s Setting up g++ (4:15.2.0-4ubuntu1) ... 549s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 549s Setting up build-essential (12.12ubuntu2) ... 549s Setting up python3-pyopencl (2025.1-2) ... 549s Setting up python3-pyqt5 (5.15.11+dfsg-3build2) ... 550s Setting up python3-pyqt5.qtsvg (5.15.11+dfsg-3build2) ... 550s Setting up python3-pyqt5.qtopengl (5.15.11+dfsg-3build2) ... 550s Setting up pybuild-plugin-autopkgtest (7.20260125) ... 550s Setting up python3-ufolib2 (0.18.1+dfsg1-1) ... 550s Setting up python3-fonttools (4.61.1-3) ... 553s Setting up python3-matplotlib (3.10.7+dfsg1-1) ... 556s Setting up python3-fabio (2024.9.0-9) ... 557s Setting up python3-silx (2.2.1+dfsg-5) ... 561s Setting up python3-nxtomo (1.3.0.dev9-1) ... 561s Setting up python3-tomoscan (2.2.0~dev0-2) ... 562s Setting up python3-nxtomomill (1.1.0-6) ... 562s Processing triggers for install-info (7.2-5) ... 562s Processing triggers for libc-bin (2.42-2ubuntu4) ... 563s Processing triggers for systemd (259-1ubuntu3) ... 563s Processing triggers for man-db (2.13.1-1) ... 564s Processing triggers for udev (259-1ubuntu3) ... 573s autopkgtest [16:44:57]: test pybuild-autopkgtest: pybuild-autopkgtest 573s autopkgtest [16:44:57]: test pybuild-autopkgtest: [----------------------- 575s pybuild-autopkgtest 575s I: pybuild base:384: cd /tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build; python3.14 -X faulthandler -m pytest -p no:faulthandler -v -k "not test_fluo2nx_application_" 576s ============================= test session starts ============================== 576s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.14 576s cachedir: .pytest_cache 576s rootdir: /tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build 576s plugins: typeguard-4.4.4 577s collecting ... collected 171 items / 3 deselected / 168 selected 577s 577s nxtomomill/app/tests/test_dxfile2nx_app.py::test_dxfile2nx_application PASSED [ 0%] 577s nxtomomill/app/tests/test_edf2nx_app.py::test_edf2nx_application PASSED [ 1%] 578s nxtomomill/app/tests/test_edf_config_app.py::test_edf_config_application FAILED [ 1%] 578s nxtomomill/app/tests/test_h52nx_app.py::test_h52nx_application PASSED [ 2%] 578s nxtomomill/app/tests/test_h5_config_app.py::test_h5_config_application FAILED [ 2%] 578s nxtomomill/app/tests/test_nx_copy.py::test_nxcopy_get_output_file PASSED [ 3%] 578s nxtomomill/app/tests/test_nx_copy.py::test_copy PASSED [ 4%] 578s nxtomomill/app/tests/test_patch_nx_app.py::test_patch_nx_application PASSED [ 4%] 578s nxtomomill/app/tests/test_split_nxfile_app.py::test_split_nxfile[True] PASSED [ 5%] 579s nxtomomill/app/tests/test_split_nxfile_app.py::test_split_nxfile[False] PASSED [ 5%] 579s nxtomomill/converter/dxfile/tests/test_dxfile.py::test_dx_file_conversion[True] PASSED [ 6%] 579s nxtomomill/converter/dxfile/tests/test_dxfile.py::test_dx_file_conversion[False] PASSED [ 7%] 579s nxtomomill/converter/edf/tests/test_checks.py::test_compare_volumes PASSED [ 7%] 581s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[False-False-absolute] PASSED [ 8%] 583s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[False-False-relative] PASSED [ 8%] 584s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[False-True-absolute] PASSED [ 9%] 586s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[True-False-absolute] PASSED [ 10%] 588s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[True-False-relative] PASSED [ 10%] 590s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[True-True-absolute] PASSED [ 11%] 590s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-True--180] PASSED [ 11%] 590s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-True-180] PASSED [ 12%] 591s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-True-360] PASSED [ 13%] 591s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-False--180] PASSED [ 13%] 591s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-False-180] PASSED [ 14%] 591s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-False-360] PASSED [ 14%] 592s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-True--180] PASSED [ 15%] 592s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-True-180] PASSED [ 16%] 592s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-True-360] PASSED [ 16%] 592s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-False--180] PASSED [ 17%] 593s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-False-180] PASSED [ 17%] 593s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-False-360] PASSED [ 18%] 593s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-True--180] PASSED [ 19%] 593s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-True-180] PASSED [ 19%] 594s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-True-360] PASSED [ 20%] 594s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-False--180] PASSED [ 20%] 594s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-False-180] PASSED [ 21%] 594s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-False-360] PASSED [ 22%] 594s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-True--180] PASSED [ 22%] 595s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-True-180] PASSED [ 23%] 595s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-True-360] PASSED [ 23%] 595s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-False--180] PASSED [ 24%] 595s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-False-180] PASSED [ 25%] 596s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-False-360] PASSED [ 25%] 596s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rot_angle_key_does_not_exists PASSED [ 26%] 596s nxtomomill/converter/edf/tests/test_edf2nx.py::test_different_info_file PASSED [ 26%] 597s nxtomomill/converter/edf/tests/test_edf2nx.py::test_different_dataset_basename PASSED [ 27%] 597s nxtomomill/converter/edf/tests/test_edf2nx.py::test_delete_edf_input_files PASSED [ 27%] 597s nxtomomill/converter/edf/tests/test_edf2nx.py::test_output_checks PASSED [ 28%] 597s nxtomomill/converter/edf/tests/test_edf2nx_check.py::test_edf2nx_check PASSED [ 29%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition.py::test_BaseAquisition PASSED [ 29%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition.py::test_get_dataset_name_from_motor PASSED [ 30%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_deduce_machine_current PASSED [ 30%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-1] PASSED [ 31%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-3] PASSED [ 32%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-4] PASSED [ 32%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-7] PASSED [ 33%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-9] PASSED [ 33%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-12] PASSED [ 34%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-1] PASSED [ 35%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-3] PASSED [ 35%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-4] PASSED [ 36%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-7] PASSED [ 36%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-9] PASSED [ 37%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-12] PASSED [ 38%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_get_entry_type PASSED [ 38%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_group_z_series PASSED [ 39%] 597s nxtomomill/converter/hdf5/acquisition/tests/test_bliss_tomo_config.py::test_tomo_config PASSED [ 39%] 598s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config0-1] PASSED [ 40%] 598s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config0-2] PASSED [ 41%] 598s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config1-1] PASSED [ 41%] 599s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config1-2] PASSED [ 42%] 599s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config2-1] PASSED [ 42%] 599s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config2-2] PASSED [ 43%] 600s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion_with_angle_subselection PASSED [ 44%] 600s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_get_projections_slices PASSED [ 44%] 600s nxtomomill/converter/hdf5/tests/test_h52nx_utils.py::test_get_default_output_file PASSED [ 45%] 600s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_converter_with_nx_detector_attr PASSED [ 45%] 600s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_invalid_tomo_n PASSED [ 46%] 601s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_converter_without_nx_detector_attr PASSED [ 47%] 602s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_providing_existing_camera_name PASSED [ 47%] 602s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_providing_non_existing_camera_name_no_tomo_config PASSED [ 48%] 604s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion_no_tomo_config[z-series-v1] PASSED [ 48%] 605s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion_no_tomo_config[z-series-v3] PASSED [ 49%] 606s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion[z-series-v1] PASSED [ 50%] 608s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion[z-series-v3] PASSED [ 50%] 608s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_ignore_sub_entries PASSED [ 51%] 608s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_get_nx_detectors PASSED [ 51%] 608s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_guess_nx_detector PASSED [ 52%] 608s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_dataset_1 PASSED [ 52%] 609s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_dataset_2 PASSED [ 53%] 610s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion_with_external_urls[z-series-v1] PASSED [ 54%] 610s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_dark_flat_copy[dark_flat_config0-z-series-v1] PASSED [ 54%] 611s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_dark_flat_copy[dark_flat_config0-z-series-v3] PASSED [ 55%] 612s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_dark_flat_copy[dark_flat_config1-z-series-v1] PASSED [ 55%] 613s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_dark_flat_copy[dark_flat_config1-z-series-v3] PASSED [ 56%] 614s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_h52nx_from_command_line PASSED [ 57%] 614s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[uint8] PASSED [ 57%] 615s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[uint16] PASSED [ 58%] 615s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[uint32] PASSED [ 58%] 615s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[uint64] PASSED [ 59%] 616s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[float16] PASSED [ 60%] 616s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[float32] PASSED [ 60%] 616s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[int16] PASSED [ 61%] 617s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[int32] PASSED [ 61%] 617s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[int64] PASSED [ 62%] 617s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_machine_electric_current FAILED [ 63%] 617s nxtomomill/io/config/tests/test_confighandler.py::TestH5Config::test_creation_from_cmd_line_opts FAILED [ 63%] 617s nxtomomill/io/config/tests/test_confighandler.py::TestH5Config::test_creation_from_config_file FAILED [ 64%] 617s nxtomomill/io/config/tests/test_confighandler.py::TestFrameUrls::test_external_paths FAILED [ 64%] 617s nxtomomill/io/config/tests/test_confighandler.py::TestFrameUrls::test_local_paths FAILED [ 65%] 618s nxtomomill/io/config/tests/test_edf_config.py::test_TomoEDFConfig_to_dict FAILED [ 66%] 618s nxtomomill/io/config/tests/test_edf_config.py::test_TomoEDFConfig_default_config FAILED [ 66%] 618s nxtomomill/io/config/tests/test_edf_config.py::test_TomoEDFConfig_setters PASSED [ 67%] 618s nxtomomill/io/config/tests/test_fluo_config.py::test_TomoFluoConfig_to_dict FAILED [ 67%] 618s nxtomomill/io/config/tests/test_fluo_config.py::test_TomoFluoConfig_default_config FAILED [ 68%] 618s nxtomomill/io/config/tests/test_fluo_config.py::test_TomoFluoConfig_setters PASSED [ 69%] 618s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_from_dict PASSED [ 69%] 618s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_from_dict_lowercase PASSED [ 70%] 618s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_generate_default_config PASSED [ 70%] 618s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_raises_errors PASSED [ 71%] 618s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_to_and_from_cfg_file FAILED [ 72%] 618s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_to_dict 618s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_to_dict PASSED [ 72%] 618s nxtomomill/io/tests/test_frame_group.py::TestFrameGroupCreator::test_constructor_frm_str PASSED [ 73%] 618s nxtomomill/io/tests/test_frame_group.py::TestFrameGroupCreator::test_default_constructor PASSED [ 73%] 618s nxtomomill/io/tests/test_frame_group.py::TestFilterCurrentAcquiFrameType::test_search_dark PASSED [ 74%] 618s nxtomomill/io/tests/test_frame_group.py::TestFilterCurrentAcquiFrameType::test_search_flat PASSED [ 75%] 618s nxtomomill/io/tests/test_frame_group.py::TestFilterCurrentAcquiFrameType::test_search_init PASSED [ 75%] 618s nxtomomill/io/tests/test_frame_group.py::TestFilterCurrentAcquiFrameType::test_search_proj PASSED [ 76%] 618s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr1 PASSED [ 76%] 618s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr2 PASSED [ 77%] 618s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr3 PASSED [ 77%] 618s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr4 PASSED [ 78%] 618s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr5 PASSED [ 79%] 618s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_invalid_url_1 PASSED [ 79%] 618s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_invalid_url_2 PASSED [ 80%] 618s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_valid_url_1 PASSED [ 80%] 618s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_valid_url_2 PASSED [ 81%] 618s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_valid_url_3 PASSED [ 82%] 618s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_valid_url_4 PASSED [ 82%] 618s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToFrameGrp::test_invalid_1 PASSED [ 83%] 618s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToFrameGrp::test_valid_1 PASSED [ 83%] 618s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToFrameGrp::test_valid_2 PASSED [ 84%] 618s nxtomomill/tests/test_version.py::test_version PASSED [ 85%] 619s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-True-True] FAILED [ 85%] 619s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-True-False] FAILED [ 86%] 620s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-False-True] FAILED [ 86%] 621s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-False-False] FAILED [ 87%] 622s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-True-True] FAILED [ 88%] 623s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-True-False] FAILED [ 88%] 623s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-False-True] FAILED [ 89%] 624s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-False-False] FAILED [ 89%] 624s nxtomomill/utils/tests/test_utils.py::TestAddDarkAtStart::testAddDarkAsDataUrl 624s nxtomomill/utils/tests/test_utils.py::TestAddDarkAtStart::testAddDarkAsDataUrl PASSED [ 90%] 624s nxtomomill/utils/tests/test_utils.py::TestAddDarkAtStart::testAddDarkAsNumpyArray 624s nxtomomill/utils/tests/test_utils.py::TestAddDarkAtStart::testAddDarkAsNumpyArray PASSED [ 91%] 625s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtStart::testAddFlatStartAsDataUrl 625s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtStart::testAddFlatStartAsDataUrl PASSED [ 91%] 625s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtStart::testAddFlatStartAsNumpyArray 625s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtStart::testAddFlatStartAsNumpyArray PASSED [ 92%] 625s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtEnd::testAddFlatEndAsNumpyArray 625s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtEnd::testAddFlatEndAsNumpyArray PASSED [ 92%] 625s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtEnd::testAddFlatStartAsDataUrl 625s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtEnd::testAddFlatStartAsDataUrl PASSED [ 93%] 625s nxtomomill/utils/tests/test_utils.py::TestAddDarkAndFlatWithFancySelection::testInValidSlice PASSED [ 94%] 626s nxtomomill/utils/tests/test_utils.py::TestAddDarkAndFlatWithFancySelection::testValid PASSED [ 94%] 626s nxtomomill/utils/tests/test_utils.py::TestCompleteAddFlatAndDark::testWithExtras PASSED [ 95%] 626s nxtomomill/utils/tests/test_utils.py::TestCompleteAddFlatAndDark::testWithoutExtras PASSED [ 95%] 626s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testInputType PASSED [ 96%] 627s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToAlignment PASSED [ 97%] 627s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToDark PASSED [ 97%] 627s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToFlat PASSED [ 98%] 627s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToInvalid PASSED [ 98%] 628s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToProjections PASSED [ 99%] 628s nxtomomill/utils/tests/test_utils.py::TestAddDarkAndFlatFromADifferentFolderWithVDS::test PASSED [100%] 628s 628s =================================== FAILURES =================================== 628s _________________________ test_edf_config_application __________________________ 628s 628s def test_edf_config_application(): 628s """test nxtomomill edf-config output_file""" 628s 628s with tempfile.TemporaryDirectory() as folder: 628s output_file = os.path.join(folder, "config.cfg") 628s assert not os.path.exists(output_file) 628s > main(["edf-config", output_file]) 628s 628s nxtomomill/app/tests/test_edf_config_app.py:13: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/app/h5config.py:64: in main 628s TomoHDF5Config.dict_to_cfg(file_path=options.output_file, dict_=configuration) 628s nxtomomill/io/config/hdf5config.py:1269: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# list of scans to be converted. Frame type should be provided for each scan.\n# Expected format is:\n# * `frame_type...an. \n# * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) \n' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # list of scans to be converted. Frame type should be provided for each scan. 628s E # Expected format is: 628s E # * `frame_type` (mandatory): values can be `projection`, `flat`, `dark`, `alignment` or `init`. 628s E # * `entry` (mandatory): DataUrl with path to the scan to integrate. If the scan is contained in the input_file then you can only provide path/name of the scan. 628s E # * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) 628s E ; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s __________________________ test_h5_config_application __________________________ 628s 628s def test_h5_config_application(): 628s """test nxtomomill h5-config output_file""" 628s 628s with tempfile.TemporaryDirectory() as folder: 628s output_file = os.path.join(folder, "config.cfg") 628s assert not os.path.exists(output_file) 628s > main(["h5-config", output_file]) 628s 628s nxtomomill/app/tests/test_h5_config_app.py:15: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/app/h5config.py:64: in main 628s TomoHDF5Config.dict_to_cfg(file_path=options.output_file, dict_=configuration) 628s nxtomomill/io/config/hdf5config.py:1269: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# list of scans to be converted. Frame type should be provided for each scan.\n# Expected format is:\n# * `frame_type...an. \n# * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) \n' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # list of scans to be converted. Frame type should be provided for each scan. 628s E # Expected format is: 628s E # * `frame_type` (mandatory): values can be `projection`, `flat`, `dark`, `alignment` or `init`. 628s E # * `entry` (mandatory): DataUrl with path to the scan to integrate. If the scan is contained in the input_file then you can only provide path/name of the scan. 628s E # * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) 628s E ; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s ________________________ test_machine_electric_current _________________________ 628s 628s def test_machine_electric_current(): 628s """Test machine electric current is handle by the convertor""" 628s with tempfile.TemporaryDirectory() as root_dir: 628s bliss_mock = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=2, 628s n_darks=5, 628s n_flats=5, 628s with_nx_detector_attr=True, 628s output_dir=root_dir, 628s detector_name="my_detector", 628s ) 628s sample = bliss_mock.samples[0] 628s assert os.path.exists(sample.sample_file) 628s # append current to the bliss file 628s # from the example file I had it looks like this information can be saved at different location 628s # and can be either a number (for dark and flat for example) or a list (for projections) 628s with HDF5File(sample.sample_file, mode="a") as h5f: 628s # overwrite start_time to made ordering work 628s del h5f["1.1"]["start_time"] 628s h5f["1.1"]["start_time"] = "2022-01-15T21:05:58.360095+02:00" 628s 628s with HDF5File(sample.sample_file, mode="a") as h5f: 628s node_names = ("2.1", "3.1") 628s machine_elec_current = (602, 589) # those are in ma 628s start_times = ( 628s "2022-01-15T21:07:58.360095+02:00", 628s "2022-01-15T21:07:59.360095+02:00", 628s ) 628s for node_name, machine_elec_current_ma, st in zip( 628s node_names, machine_elec_current, start_times 628s ): 628s h5f[f"{node_name}/instrument/machine/current"] = machine_elec_current_ma 628s h5f[f"{node_name}/instrument/machine/current"].attrs["units"] = "mA" 628s del h5f[node_name]["start_time"] 628s h5f[node_name]["start_time"] = st 628s 628s assert "4.1" in h5f 628s assert "5.1" in h5f 628s assert ( 628s "6.1" not in h5f 628s ) # this is because n_scan_per_sequence == 2 in MockBlissAcquisition 628s 628s # create some X.2 for machine electric current as this is done in Bliss 628s for node_name in ("4.2", "5.2"): 628s h5f.require_group(node_name)["title"] = _BlissSample.get_title( 628s "projection" 628s ) 628s 628s current_monitor_dataset = h5f.require_dataset( 628s f"{node_name}/measurement/current", shape=(3), dtype=numpy.float32 628s ) 628s current_monitor_dataset[:] = numpy.linspace( 628s 0.9, 0.96, 3, dtype=numpy.float32, endpoint=True 628s ) 628s current_monitor_dataset.attrs["units"] = "A" 628s 628s # define start_time and end_time to insure conversion is correct 628s # start_time and end_time is required for both: 628s # * from X.1 to create frame time stamp 628s # * from X.2 to get machine electric current time stamp 628s start_times = ( 628s "2022-01-15T21:08:58.360095+02:00", 628s "2022-01-15T21:10:58.360095+02:00", 628s ) 628s end_times = ( 628s "2022-01-15T21:09:58.360095+02:00", 628s "2022-01-15T21:11:58.360095+02:00", 628s ) 628s tuple_node_names = (["4.1", "4.2"], ["5.1", "5.2"]) 628s 628s for node_names, st, et in zip(tuple_node_names, start_times, end_times): 628s for node_name in node_names: 628s if "start_time" in h5f[node_name]: 628s del h5f[node_name]["start_time"] 628s h5f[node_name]["start_time"] = st 628s h5f[node_name]["end_time"] = et 628s h5f[node_name].require_group("instrument") 628s 628s # convert the file 628s config = TomoHDF5Config() 628s config.output_file = sample.sample_file.replace(".h5", ".nx") 628s config.single_file = True 628s config.request_input = False 628s config.raises_error = True 628s with pytest.raises(ValueError): 628s converter.from_h5_to_nx(configuration=config) 628s config.input_file = sample.sample_file 628s > converter.from_h5_to_nx(configuration=config) 628s 628s nxtomomill/converter/hdf5/tests/test_hdf5converter.py:1203: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/converter/hdf5/hdf5converter.py:734: in from_h5_to_nx 628s return converter.convert() 628s ^^^^^^^^^^^^^^^^^^^ 628s nxtomomill/converter/hdf5/hdf5converter.py:213: in convert 628s self._entries_created = self.write() 628s ^^^^^^^^^^^^ 628s nxtomomill/converter/hdf5/hdf5converter.py:578: in write 628s raise e 628s nxtomomill/converter/hdf5/hdf5converter.py:569: in write 628s new_entries = acquisition.write_as_nxtomo( 628s nxtomomill/converter/hdf5/acquisition/baseacquisition.py:141: in write_as_nxtomo 628s nx_tomos = self.to_NXtomos( 628s nxtomomill/converter/hdf5/acquisition/standardacquisition.py:942: in to_NXtomos 628s self._preprocess_registered_entries() 628s nxtomomill/converter/hdf5/acquisition/standardacquisition.py:586: in _preprocess_registered_entries 628s self._preprocess_registered_entry(url, type_) 628s nxtomomill/converter/hdf5/acquisition/standardacquisition.py:444: in _preprocess_registered_entry 628s self._register_frame_timestamp(entry, start_time, end_time) 628s nxtomomill/converter/hdf5/acquisition/standardacquisition.py:535: in _register_frame_timestamp 628s numpy.float128 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s attr = 'float128' 628s 628s def __getattr__(attr): 628s # Warn for expired attributes 628s import warnings 628s 628s if attr == "linalg": 628s import numpy.linalg as linalg 628s return linalg 628s elif attr == "fft": 628s import numpy.fft as fft 628s return fft 628s elif attr == "dtypes": 628s import numpy.dtypes as dtypes 628s return dtypes 628s elif attr == "random": 628s import numpy.random as random 628s return random 628s elif attr == "polynomial": 628s import numpy.polynomial as polynomial 628s return polynomial 628s elif attr == "ma": 628s import numpy.ma as ma 628s return ma 628s elif attr == "ctypeslib": 628s import numpy.ctypeslib as ctypeslib 628s return ctypeslib 628s elif attr == "exceptions": 628s import numpy.exceptions as exceptions 628s return exceptions 628s elif attr == "testing": 628s import numpy.testing as testing 628s return testing 628s elif attr == "matlib": 628s import numpy.matlib as matlib 628s return matlib 628s elif attr == "f2py": 628s import numpy.f2py as f2py 628s return f2py 628s elif attr == "typing": 628s import numpy.typing as typing 628s return typing 628s elif attr == "rec": 628s import numpy.rec as rec 628s return rec 628s elif attr == "char": 628s import numpy.char as char 628s return char 628s elif attr == "array_api": 628s raise AttributeError("`numpy.array_api` is not available from " 628s "numpy 2.0 onwards", name=None) 628s elif attr == "core": 628s import numpy.core as core 628s return core 628s elif attr == "strings": 628s import numpy.strings as strings 628s return strings 628s elif attr == "distutils": 628s if 'distutils' in __numpy_submodules__: 628s import numpy.distutils as distutils 628s return distutils 628s else: 628s raise AttributeError("`numpy.distutils` is not available from " 628s "Python 3.12 onwards", name=None) 628s 628s if attr in __future_scalars__: 628s # And future warnings for those that will change, but also give 628s # the AttributeError 628s warnings.warn( 628s f"In the future `np.{attr}` will be defined as the " 628s "corresponding NumPy scalar.", FutureWarning, stacklevel=2) 628s 628s if attr in __former_attrs__: 628s raise AttributeError(__former_attrs__[attr], name=None) 628s 628s if attr in __expired_attributes__: 628s raise AttributeError( 628s f"`np.{attr}` was removed in the NumPy 2.0 release. " 628s f"{__expired_attributes__[attr]}", 628s name=None 628s ) 628s 628s if attr == "chararray": 628s warnings.warn( 628s "`np.chararray` is deprecated and will be removed from " 628s "the main namespace in the future. Use an array with a string " 628s "or bytes dtype instead.", DeprecationWarning, stacklevel=2) 628s import numpy.char as char 628s return char.chararray 628s 628s > raise AttributeError(f"module {__name__!r} has no attribute {attr!r}") 628s E AttributeError: module 'numpy' has no attribute 'float128'. Did you mean: 'float16'? 628s 628s /usr/lib/python3/dist-packages/numpy/__init__.py:795: AttributeError 628s ------------------------------ Captured log call ------------------------------- 628s WARNING nxtomomill.converter.hdf5.acquisition.standardacquisition:standardacquisition.py:528 Unable to find start_time and / or end_time. Takes 2022-01-15T19:07:58.360 as frame time stamp for 628s WARNING nxtomomill.converter.hdf5.acquisition.standardacquisition:standardacquisition.py:474 Unable to find end_time. Will pick the first available electric_current for the frame 628s WARNING nxtomomill.converter.hdf5.acquisition.standardacquisition:standardacquisition.py:528 Unable to find start_time and / or end_time. Takes 2022-01-15T19:07:59.360 as frame time stamp for 628s WARNING nxtomomill.converter.hdf5.acquisition.standardacquisition:standardacquisition.py:474 Unable to find end_time. Will pick the first available electric_current for the frame 628s ________________ TestH5Config.test_creation_from_cmd_line_opts _________________ 628s 628s self = 628s 628s def test_creation_from_cmd_line_opts(self): 628s options = _ARParseMock() 628s input_file_path = os.path.join(self.folder, "output_file.cfg") 628s input_config = TomoHDF5Config() 628s > input_config.to_cfg_file(input_file_path) 628s 628s nxtomomill/io/config/tests/test_confighandler.py:112: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/hdf5config.py:1264: in to_cfg_file 628s self.dict_to_cfg(file_path=file_path, dict_=self.to_dict()) 628s nxtomomill/io/config/hdf5config.py:1269: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# list of scans to be converted. Frame type should be provided for each scan.\n# Expected format is:\n# * `frame_type...an. \n# * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) \n' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # list of scans to be converted. Frame type should be provided for each scan. 628s E # Expected format is: 628s E # * `frame_type` (mandatory): values can be `projection`, `flat`, `dark`, `alignment` or `init`. 628s E # * `entry` (mandatory): DataUrl with path to the scan to integrate. If the scan is contained in the input_file then you can only provide path/name of the scan. 628s E # * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) 628s E ; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s _________________ TestH5Config.test_creation_from_config_file __________________ 628s 628s self = 628s 628s def test_creation_from_config_file(self): 628s options = _ARParseMock() 628s with self.assertRaises(ValueError): 628s TomoHDF5ConfigHandler(argparse_options=options) 628s 628s input_file_path = os.path.join(self.folder, "output_file.cfg") 628s input_config = TomoHDF5Config() 628s > input_config.to_cfg_file(input_file_path) 628s 628s nxtomomill/io/config/tests/test_confighandler.py:65: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/hdf5config.py:1264: in to_cfg_file 628s self.dict_to_cfg(file_path=file_path, dict_=self.to_dict()) 628s nxtomomill/io/config/hdf5config.py:1269: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# list of scans to be converted. Frame type should be provided for each scan.\n# Expected format is:\n# * `frame_type...an. \n# * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) \n' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # list of scans to be converted. Frame type should be provided for each scan. 628s E # Expected format is: 628s E # * `frame_type` (mandatory): values can be `projection`, `flat`, `dark`, `alignment` or `init`. 628s E # * `entry` (mandatory): DataUrl with path to the scan to integrate. If the scan is contained in the input_file then you can only provide path/name of the scan. 628s E # * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) 628s E ; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s ______________________ TestFrameUrls.test_external_paths _______________________ 628s 628s self = 628s 628s def test_external_paths(self): 628s """ 628s Check that DataUrl are handled. 628s 628s Warning: this also check data_slices but those are not handled. 628s """ 628s > res_config = self.write_and_read_configuration( 628s ( 628s FrameGroup( 628s frame_type="flat", 628s url="silx:///myfile.h5?path=/entry0000/data/flats", 628s ), 628s FrameGroup( 628s frame_type="dark", 628s url="h5py:///data/file2.hdf5?path=/entry0000/data/darks", 628s ), 628s FrameGroup(frame_type="proj", url="h5py:///data/file3.hdf5?path=/data"), 628s FrameGroup( 628s frame_type="proj", 628s url="silx:///data/file2.hdf5?path=/entry0000/data/projection2&slice=5:100", 628s ), 628s FrameGroup( 628s frame_type="alignment", 628s url="silx:///myfile.h5?path=/entry0000/data/alignment&slice=5", 628s ), 628s ) 628s ) 628s 628s nxtomomill/io/config/tests/test_confighandler.py:196: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/tests/test_confighandler.py:138: in write_and_read_configuration 628s TomoHDF5Config.dict_to_cfg(file_path=file_path, dict_=configuration) 628s nxtomomill/io/config/hdf5config.py:1269: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# list of scans to be converted. Frame type should be provided for each scan.\n# Expected format is:\n# * `frame_type...an. \n# * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) \n' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # list of scans to be converted. Frame type should be provided for each scan. 628s E # Expected format is: 628s E # * `frame_type` (mandatory): values can be `projection`, `flat`, `dark`, `alignment` or `init`. 628s E # * `entry` (mandatory): DataUrl with path to the scan to integrate. If the scan is contained in the input_file then you can only provide path/name of the scan. 628s E # * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) 628s E ; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s ________________________ TestFrameUrls.test_local_paths ________________________ 628s 628s self = 628s 628s def test_local_paths(self): 628s # TODO: test all option to read / write the configuration 628s > res_config = self.write_and_read_configuration( 628s ( 628s FrameGroup(url="/entry0000/data/flats", frame_type="flat"), 628s FrameGroup(url="/entry0000/data/projection1", frame_type="projection"), 628s FrameGroup(url="/entry0000/data/projection2", frame_type="projection"), 628s FrameGroup(url="/entry0000/data/alignment1", frame_type="alignment"), 628s FrameGroup(url="/entry0000/data/alignment2", frame_type="alignment"), 628s FrameGroup(url="/entry0000/data/darks", frame_type="dark"), 628s ) 628s ) 628s 628s nxtomomill/io/config/tests/test_confighandler.py:149: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/tests/test_confighandler.py:138: in write_and_read_configuration 628s TomoHDF5Config.dict_to_cfg(file_path=file_path, dict_=configuration) 628s nxtomomill/io/config/hdf5config.py:1269: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# list of scans to be converted. Frame type should be provided for each scan.\n# Expected format is:\n# * `frame_type...an. \n# * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) \n' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # list of scans to be converted. Frame type should be provided for each scan. 628s E # Expected format is: 628s E # * `frame_type` (mandatory): values can be `projection`, `flat`, `dark`, `alignment` or `init`. 628s E # * `entry` (mandatory): DataUrl with path to the scan to integrate. If the scan is contained in the input_file then you can only provide path/name of the scan. 628s E # * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) 628s E ; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s __________________________ test_TomoEDFConfig_to_dict __________________________ 628s 628s def test_TomoEDFConfig_to_dict(): 628s """Test processing of the to_dict""" 628s config = TomoEDFConfig() 628s 628s config_dict = config.to_dict() 628s for key in ( 628s TomoEDFConfig.GENERAL_SECTION_DK, 628s TomoEDFConfig.EDF_KEYS_SECTION_DK, 628s TomoEDFConfig.FLAT_DARK_SECTION_DK, 628s TomoEDFConfig.UNIT_SECTION_DK, 628s TomoEDFConfig.SAMPLE_SECTION_DK, 628s TomoEDFConfig.SOURCE_SECTION_DK, 628s TomoEDFConfig.DETECTOR_SECTION_DK, 628s ): 628s assert key in config_dict 628s 628s TomoEDFConfig.from_dict(config_dict) 628s 628s with TemporaryDirectory() as folder: 628s file_path = os.path.join(folder, "config.cfg") 628s assert not os.path.exists(file_path) 628s > config.to_cfg_file(file_path) 628s 628s nxtomomill/io/config/tests/test_edf_config.py:37: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/edfconfig.py:1072: in to_cfg_file 628s self.dict_to_cfg(file_path=file_path, dict_=self.to_dict()) 628s nxtomomill/io/config/edfconfig.py:1077: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = "# Once the conversion is done some checks can be done to check the validity of the conversion. Expected as a list of elements. Possibles tests are: 'compare-output-volume'" 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # Once the conversion is done some checks can be done to check the validity of the conversion. Expected as a list of elements. Possibles tests are: 'compare-output-volume'; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s ------------------------------ Captured log call ------------------------------- 628s WARNING silx.DEPRECATION:deprecation.py:136 Function from_value is deprecated since silx version 2.1.1. Use 'Enum(value)' instead. 628s File "/tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build/nxtomomill/io/config/edfconfig.py", line 721, in to_dict 628s level = OptionLevel.from_value(level) 628s WARNING silx.DEPRECATION:deprecation.py:136 Function from_value is deprecated since silx version 2.1.1. Use 'Enum(value)' instead. 628s File "/tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build/nxtomomill/io/config/configbase.py", line 120, in file_extension 628s self._file_extension = FileExtension.from_value(file_extension) 628s WARNING silx.DEPRECATION:deprecation.py:136 Function from_value is deprecated since silx version 2.1.1. Use 'Enum(value)' instead. 628s File "/tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build/nxtomomill/io/config/edfconfig.py", line 702, in source_type 628s self._source_type = SourceType.from_value(source_type) 628s WARNING silx.DEPRECATION:deprecation.py:136 Function from_value is deprecated since silx version 2.1.1. Use 'Enum(value)' instead. 628s File "/tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build/nxtomomill/io/config/edfconfig.py", line 717, in source_probe 628s self._source_probe = ProbeType.from_value(source_probe) 628s ______________________ test_TomoEDFConfig_default_config _______________________ 628s 628s def test_TomoEDFConfig_default_config(): 628s """insure default configuration generation works""" 628s with TemporaryDirectory() as folder: 628s file_path = os.path.join(folder, "config.cfg") 628s assert not os.path.exists(file_path) 628s config = generate_default_edf_config() 628s assert isinstance(config, dict) 628s > TomoEDFConfig.from_dict(config).to_cfg_file(file_path=file_path) 628s 628s nxtomomill/io/config/tests/test_edf_config.py:51: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/edfconfig.py:1072: in to_cfg_file 628s self.dict_to_cfg(file_path=file_path, dict_=self.to_dict()) 628s nxtomomill/io/config/edfconfig.py:1077: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = "# Once the conversion is done some checks can be done to check the validity of the conversion. Expected as a list of elements. Possibles tests are: 'compare-output-volume'" 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # Once the conversion is done some checks can be done to check the validity of the conversion. Expected as a list of elements. Possibles tests are: 'compare-output-volume'; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s _________________________ test_TomoFluoConfig_to_dict __________________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_TomoFluoConfig_to_dict0') 628s 628s def test_TomoFluoConfig_to_dict(tmp_path): 628s """Test processing of the to_dict""" 628s config = TomoFluoConfig() 628s 628s config_dict = config.to_dict() 628s for key in ( 628s TomoFluoConfig.GENERAL_SECTION_DK, 628s TomoFluoConfig.SOURCE_SECTION_DK, 628s ): 628s assert key in config_dict 628s 628s TomoFluoConfig.from_dict(config_dict) 628s 628s file_path = os.path.join(tmp_path, "config.cfg") 628s assert not os.path.exists(file_path) 628s > config.to_cfg_file(file_path) 628s 628s nxtomomill/io/config/tests/test_fluo_config.py:27: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/fluoconfig.py:403: in to_cfg_file 628s self.dict_to_cfg(file_path=file_path, dict_=self.to_dict()) 628s nxtomomill/io/config/fluoconfig.py:408: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# If False then will create embed all the data into a single file avoiding external link to other file. If True then ...working directory. See external link resolution details: https://docs.hdfgroup.org/hdf5/v1_12/group___h5_l.html#title5' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # If False then will create embed all the data into a single file avoiding external link to other file. If True then the decetor data will point to original tif files. In this case you must be carreful to keep relative paths valid. Warning: to read external dataset you nust be at the hdf5 file working directory. See external link resolution details: https://docs.hdfgroup.org/hdf5/v1_12/group___h5_l.html#title5; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s ------------------------------ Captured log call ------------------------------- 628s WARNING silx.DEPRECATION:deprecation.py:136 Function from_value is deprecated since silx version 2.1.1. Use 'Enum(value)' instead. 628s File "/tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build/nxtomomill/io/config/fluoconfig.py", line 279, in to_dict 628s level = OptionLevel.from_value(level) 628s WARNING silx.DEPRECATION:deprecation.py:136 Function from_value is deprecated since silx version 2.1.1. Use 'Enum(value)' instead. 628s File "/tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build/nxtomomill/io/config/fluoconfig.py", line 197, in external_path_type 628s self._external_path_type = PathType.from_value(path_type) 628s WARNING silx.DEPRECATION:deprecation.py:136 Function from_value is deprecated since silx version 2.1.1. Use 'Enum(value)' instead. 628s File "/tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build/nxtomomill/io/config/fluoconfig.py", line 260, in source_type 628s self._source_type = SourceType.from_value(source_type) 628s WARNING silx.DEPRECATION:deprecation.py:136 Function from_value is deprecated since silx version 2.1.1. Use 'Enum(value)' instead. 628s File "/tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build/nxtomomill/io/config/fluoconfig.py", line 275, in source_probe 628s self._source_probe = ProbeType.from_value(source_probe) 628s ______________________ test_TomoFluoConfig_default_config ______________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_TomoFluoConfig_default_co0') 628s 628s def test_TomoFluoConfig_default_config(tmp_path): 628s """insure default configuration generation works""" 628s file_path = os.path.join(tmp_path, "config.cfg") 628s assert not os.path.exists(file_path) 628s config = generate_default_fluo_config() 628s assert isinstance(config, dict) 628s > TomoFluoConfig.from_dict(config).to_cfg_file(file_path=file_path) 628s 628s nxtomomill/io/config/tests/test_fluo_config.py:40: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/fluoconfig.py:403: in to_cfg_file 628s self.dict_to_cfg(file_path=file_path, dict_=self.to_dict()) 628s nxtomomill/io/config/fluoconfig.py:408: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# If False then will create embed all the data into a single file avoiding external link to other file. If True then ...working directory. See external link resolution details: https://docs.hdfgroup.org/hdf5/v1_12/group___h5_l.html#title5' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # If False then will create embed all the data into a single file avoiding external link to other file. If True then the decetor data will point to original tif files. In this case you must be carreful to keep relative paths valid. Warning: to read external dataset you nust be at the hdf5 file working directory. See external link resolution details: https://docs.hdfgroup.org/hdf5/v1_12/group___h5_l.html#title5; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s ____________________ TestH5Config.test_to_and_from_cfg_file ____________________ 628s 628s self = 628s 628s def test_to_and_from_cfg_file(self): 628s """ 628s Insure we can dump the configuration to a .cfg file and that we 628s can read it back 628s """ 628s file_path = os.path.join(self.folder, "output_file.cfg") 628s input_config = TomoHDF5Config() 628s > input_config.to_cfg_file(file_path) 628s 628s nxtomomill/io/config/tests/test_hdf5_config.py:208: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/io/config/hdf5config.py:1264: in to_cfg_file 628s self.dict_to_cfg(file_path=file_path, dict_=self.to_dict()) 628s nxtomomill/io/config/hdf5config.py:1269: in dict_to_cfg 628s return ConfigBase._dict_to_cfg( 628s nxtomomill/io/config/configbase.py:227: in _dict_to_cfg 628s config.write(config_file) 628s /usr/lib/python3.14/configparser.py:975: in write 628s self._write_section(fp, section, 628s /usr/lib/python3.14/configparser.py:983: in _write_section 628s self._validate_key_contents(key) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s key = '# list of scans to be converted. Frame type should be provided for each scan.\n# Expected format is:\n# * `frame_type...an. \n# * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) \n' 628s 628s def _validate_key_contents(self, key): 628s """Raises an InvalidWriteError for any keys containing 628s delimiters or that begins with the section header pattern""" 628s if re.match(self.SECTCRE, key): 628s raise InvalidWriteError( 628s f"Cannot write key {key}; begins with section pattern") 628s for delim in self._delimiters: 628s if delim in key: 628s > raise InvalidWriteError( 628s f"Cannot write key {key}; contains delimiter {delim}") 628s E configparser.InvalidWriteError: Cannot write key # list of scans to be converted. Frame type should be provided for each scan. 628s E # Expected format is: 628s E # * `frame_type` (mandatory): values can be `projection`, `flat`, `dark`, `alignment` or `init`. 628s E # * `entry` (mandatory): DataUrl with path to the scan to integrate. If the scan is contained in the input_file then you can only provide path/name of the scan. 628s E # * copy (optional): you can provide a different behavior for the this scan (should we duplicate data or not) 628s E ; contains delimiter : 628s 628s /usr/lib/python3.14/configparser.py:1227: InvalidWriteError 628s ______________________ test_flat_reducer[True-True-True] _______________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_True_Tr0') 628s stage_scan_have_flats = True, save_intermediated = True 628s reuse_intermediated = True 628s 628s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 628s @pytest.mark.parametrize("save_intermediated", (True, False)) 628s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 628s def test_flat_reducer( 628s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 628s ): 628s """ 628s test execution of `flat_reducer` function. 628s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 628s 'reference' acquisition (converting projections to reduced flats) 628s """ 628s raw_data_dir = tmp_path / "raw" 628s n_stage = 5 628s # create bliss scan to be converted to NXtomo 628s acqu = MockBlissAcquisition( 628s n_sample=n_stage, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=1 if stage_scan_have_flats else 0, 628s output_dir=raw_data_dir, 628s file_name_z_fill=4, 628s ) 628s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 628s 628s # scan for flat at start 628s ref_start = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_B_0000", 628s ) 628s bliss_ref_start = ref_start.samples[0].sample_file 628s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_start, 628s nx_tomo_ref_start, 628s ) 628s # scan for flat at end 628s ref_end = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_E_0000", 628s ) 628s bliss_ref_end = ref_end.samples[0].sample_file 628s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_end, 628s nx_tomo_ref_end, 628s ) 628s 628s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 628s mixing_factor = (i_stage + 1) / (n_stage) 628s 628s # convert from .h5 to .nx 628s output_nx_file = bliss_file_name.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_file_name, 628s output_nx_file, 628s ) 628s 628s # apply fly reducer 628s > flat_reducer( 628s scan_filename=output_nx_file, 628s ref_start_filename=nx_tomo_ref_start, 628s ref_end_filename=nx_tomo_ref_end, 628s mixing_factor=mixing_factor, 628s save_intermediated=save_intermediated, 628s reuse_intermediated=reuse_intermediated, 628s ) 628s 628s nxtomomill/utils/tests/test_flat_reducer.py:105: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 628s fd_start, fd_start_as_dict = extract_darks_flats( 628s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 628s nxt.load(basename, data_path=entry_name) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 628s detector_data_as = 'as_data_url' 628s 628s def load( 628s self, file_path: str, data_path: str, detector_data_as="as_data_url" 628s ) -> NXobject: 628s """ 628s Load NXtomo instance from file_path and data_path 628s 628s :param file_path: hdf5 file path containing the NXtomo 628s :param data_path: location of the NXtomo 628s :param detector_data_as: how to load detector data. Can be: 628s * "as_virtual_source": load it as h5py's VirtualGroup 628s * "as_data_url": load it as silx's DataUrl 628s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 628s """ 628s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 628s if detector_data_as not in possible_as_values: 628s raise ValueError( 628s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 628s ) 628s 628s if not os.path.exists(file_path): 628s > raise IOError(f"{file_path} does not exists") 628s E OSError: REF_B_0000_0.nx does not exists 628s 628s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 628s ------------------------------ Captured log call ------------------------------- 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_True_Tr0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_True_Tr0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_True_Tr0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ______________________ test_flat_reducer[True-True-False] ______________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_True_Fa0') 628s stage_scan_have_flats = False, save_intermediated = True 628s reuse_intermediated = True 628s 628s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 628s @pytest.mark.parametrize("save_intermediated", (True, False)) 628s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 628s def test_flat_reducer( 628s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 628s ): 628s """ 628s test execution of `flat_reducer` function. 628s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 628s 'reference' acquisition (converting projections to reduced flats) 628s """ 628s raw_data_dir = tmp_path / "raw" 628s n_stage = 5 628s # create bliss scan to be converted to NXtomo 628s acqu = MockBlissAcquisition( 628s n_sample=n_stage, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=1 if stage_scan_have_flats else 0, 628s output_dir=raw_data_dir, 628s file_name_z_fill=4, 628s ) 628s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 628s 628s # scan for flat at start 628s ref_start = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_B_0000", 628s ) 628s bliss_ref_start = ref_start.samples[0].sample_file 628s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_start, 628s nx_tomo_ref_start, 628s ) 628s # scan for flat at end 628s ref_end = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_E_0000", 628s ) 628s bliss_ref_end = ref_end.samples[0].sample_file 628s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_end, 628s nx_tomo_ref_end, 628s ) 628s 628s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 628s mixing_factor = (i_stage + 1) / (n_stage) 628s 628s # convert from .h5 to .nx 628s output_nx_file = bliss_file_name.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_file_name, 628s output_nx_file, 628s ) 628s 628s # apply fly reducer 628s > flat_reducer( 628s scan_filename=output_nx_file, 628s ref_start_filename=nx_tomo_ref_start, 628s ref_end_filename=nx_tomo_ref_end, 628s mixing_factor=mixing_factor, 628s save_intermediated=save_intermediated, 628s reuse_intermediated=reuse_intermediated, 628s ) 628s 628s nxtomomill/utils/tests/test_flat_reducer.py:105: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 628s fd_start, fd_start_as_dict = extract_darks_flats( 628s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 628s nxt.load(basename, data_path=entry_name) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 628s detector_data_as = 'as_data_url' 628s 628s def load( 628s self, file_path: str, data_path: str, detector_data_as="as_data_url" 628s ) -> NXobject: 628s """ 628s Load NXtomo instance from file_path and data_path 628s 628s :param file_path: hdf5 file path containing the NXtomo 628s :param data_path: location of the NXtomo 628s :param detector_data_as: how to load detector data. Can be: 628s * "as_virtual_source": load it as h5py's VirtualGroup 628s * "as_data_url": load it as silx's DataUrl 628s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 628s """ 628s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 628s if detector_data_as not in possible_as_values: 628s raise ValueError( 628s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 628s ) 628s 628s if not os.path.exists(file_path): 628s > raise IOError(f"{file_path} does not exists") 628s E OSError: REF_B_0000_0.nx does not exists 628s 628s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 628s ------------------------------ Captured log call ------------------------------- 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_True_Fa0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_True_Fa0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_True_Fa0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ______________________ test_flat_reducer[True-False-True] ______________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_False_T0') 628s stage_scan_have_flats = True, save_intermediated = False 628s reuse_intermediated = True 628s 628s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 628s @pytest.mark.parametrize("save_intermediated", (True, False)) 628s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 628s def test_flat_reducer( 628s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 628s ): 628s """ 628s test execution of `flat_reducer` function. 628s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 628s 'reference' acquisition (converting projections to reduced flats) 628s """ 628s raw_data_dir = tmp_path / "raw" 628s n_stage = 5 628s # create bliss scan to be converted to NXtomo 628s acqu = MockBlissAcquisition( 628s n_sample=n_stage, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=1 if stage_scan_have_flats else 0, 628s output_dir=raw_data_dir, 628s file_name_z_fill=4, 628s ) 628s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 628s 628s # scan for flat at start 628s ref_start = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_B_0000", 628s ) 628s bliss_ref_start = ref_start.samples[0].sample_file 628s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_start, 628s nx_tomo_ref_start, 628s ) 628s # scan for flat at end 628s ref_end = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_E_0000", 628s ) 628s bliss_ref_end = ref_end.samples[0].sample_file 628s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_end, 628s nx_tomo_ref_end, 628s ) 628s 628s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 628s mixing_factor = (i_stage + 1) / (n_stage) 628s 628s # convert from .h5 to .nx 628s output_nx_file = bliss_file_name.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_file_name, 628s output_nx_file, 628s ) 628s 628s # apply fly reducer 628s > flat_reducer( 628s scan_filename=output_nx_file, 628s ref_start_filename=nx_tomo_ref_start, 628s ref_end_filename=nx_tomo_ref_end, 628s mixing_factor=mixing_factor, 628s save_intermediated=save_intermediated, 628s reuse_intermediated=reuse_intermediated, 628s ) 628s 628s nxtomomill/utils/tests/test_flat_reducer.py:105: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 628s fd_start, fd_start_as_dict = extract_darks_flats( 628s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 628s nxt.load(basename, data_path=entry_name) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 628s detector_data_as = 'as_data_url' 628s 628s def load( 628s self, file_path: str, data_path: str, detector_data_as="as_data_url" 628s ) -> NXobject: 628s """ 628s Load NXtomo instance from file_path and data_path 628s 628s :param file_path: hdf5 file path containing the NXtomo 628s :param data_path: location of the NXtomo 628s :param detector_data_as: how to load detector data. Can be: 628s * "as_virtual_source": load it as h5py's VirtualGroup 628s * "as_data_url": load it as silx's DataUrl 628s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 628s """ 628s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 628s if detector_data_as not in possible_as_values: 628s raise ValueError( 628s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 628s ) 628s 628s if not os.path.exists(file_path): 628s > raise IOError(f"{file_path} does not exists") 628s E OSError: REF_B_0000_0.nx does not exists 628s 628s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 628s ------------------------------ Captured log call ------------------------------- 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_False_T0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_False_T0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_False_T0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s _____________________ test_flat_reducer[True-False-False] ______________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_False_F0') 628s stage_scan_have_flats = False, save_intermediated = False 628s reuse_intermediated = True 628s 628s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 628s @pytest.mark.parametrize("save_intermediated", (True, False)) 628s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 628s def test_flat_reducer( 628s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 628s ): 628s """ 628s test execution of `flat_reducer` function. 628s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 628s 'reference' acquisition (converting projections to reduced flats) 628s """ 628s raw_data_dir = tmp_path / "raw" 628s n_stage = 5 628s # create bliss scan to be converted to NXtomo 628s acqu = MockBlissAcquisition( 628s n_sample=n_stage, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=1 if stage_scan_have_flats else 0, 628s output_dir=raw_data_dir, 628s file_name_z_fill=4, 628s ) 628s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 628s 628s # scan for flat at start 628s ref_start = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_B_0000", 628s ) 628s bliss_ref_start = ref_start.samples[0].sample_file 628s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_start, 628s nx_tomo_ref_start, 628s ) 628s # scan for flat at end 628s ref_end = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_E_0000", 628s ) 628s bliss_ref_end = ref_end.samples[0].sample_file 628s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_end, 628s nx_tomo_ref_end, 628s ) 628s 628s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 628s mixing_factor = (i_stage + 1) / (n_stage) 628s 628s # convert from .h5 to .nx 628s output_nx_file = bliss_file_name.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_file_name, 628s output_nx_file, 628s ) 628s 628s # apply fly reducer 628s > flat_reducer( 628s scan_filename=output_nx_file, 628s ref_start_filename=nx_tomo_ref_start, 628s ref_end_filename=nx_tomo_ref_end, 628s mixing_factor=mixing_factor, 628s save_intermediated=save_intermediated, 628s reuse_intermediated=reuse_intermediated, 628s ) 628s 628s nxtomomill/utils/tests/test_flat_reducer.py:105: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 628s fd_start, fd_start_as_dict = extract_darks_flats( 628s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 628s nxt.load(basename, data_path=entry_name) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 628s detector_data_as = 'as_data_url' 628s 628s def load( 628s self, file_path: str, data_path: str, detector_data_as="as_data_url" 628s ) -> NXobject: 628s """ 628s Load NXtomo instance from file_path and data_path 628s 628s :param file_path: hdf5 file path containing the NXtomo 628s :param data_path: location of the NXtomo 628s :param detector_data_as: how to load detector data. Can be: 628s * "as_virtual_source": load it as h5py's VirtualGroup 628s * "as_data_url": load it as silx's DataUrl 628s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 628s """ 628s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 628s if detector_data_as not in possible_as_values: 628s raise ValueError( 628s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 628s ) 628s 628s if not os.path.exists(file_path): 628s > raise IOError(f"{file_path} does not exists") 628s E OSError: REF_B_0000_0.nx does not exists 628s 628s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 628s ------------------------------ Captured log call ------------------------------- 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_False_F0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_False_F0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_True_False_F0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ______________________ test_flat_reducer[False-True-True] ______________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_True_T0') 628s stage_scan_have_flats = True, save_intermediated = True 628s reuse_intermediated = False 628s 628s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 628s @pytest.mark.parametrize("save_intermediated", (True, False)) 628s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 628s def test_flat_reducer( 628s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 628s ): 628s """ 628s test execution of `flat_reducer` function. 628s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 628s 'reference' acquisition (converting projections to reduced flats) 628s """ 628s raw_data_dir = tmp_path / "raw" 628s n_stage = 5 628s # create bliss scan to be converted to NXtomo 628s acqu = MockBlissAcquisition( 628s n_sample=n_stage, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=1 if stage_scan_have_flats else 0, 628s output_dir=raw_data_dir, 628s file_name_z_fill=4, 628s ) 628s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 628s 628s # scan for flat at start 628s ref_start = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_B_0000", 628s ) 628s bliss_ref_start = ref_start.samples[0].sample_file 628s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_start, 628s nx_tomo_ref_start, 628s ) 628s # scan for flat at end 628s ref_end = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_E_0000", 628s ) 628s bliss_ref_end = ref_end.samples[0].sample_file 628s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_end, 628s nx_tomo_ref_end, 628s ) 628s 628s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 628s mixing_factor = (i_stage + 1) / (n_stage) 628s 628s # convert from .h5 to .nx 628s output_nx_file = bliss_file_name.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_file_name, 628s output_nx_file, 628s ) 628s 628s # apply fly reducer 628s > flat_reducer( 628s scan_filename=output_nx_file, 628s ref_start_filename=nx_tomo_ref_start, 628s ref_end_filename=nx_tomo_ref_end, 628s mixing_factor=mixing_factor, 628s save_intermediated=save_intermediated, 628s reuse_intermediated=reuse_intermediated, 628s ) 628s 628s nxtomomill/utils/tests/test_flat_reducer.py:105: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 628s fd_start, fd_start_as_dict = extract_darks_flats( 628s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 628s nxt.load(basename, data_path=entry_name) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 628s detector_data_as = 'as_data_url' 628s 628s def load( 628s self, file_path: str, data_path: str, detector_data_as="as_data_url" 628s ) -> NXobject: 628s """ 628s Load NXtomo instance from file_path and data_path 628s 628s :param file_path: hdf5 file path containing the NXtomo 628s :param data_path: location of the NXtomo 628s :param detector_data_as: how to load detector data. Can be: 628s * "as_virtual_source": load it as h5py's VirtualGroup 628s * "as_data_url": load it as silx's DataUrl 628s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 628s """ 628s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 628s if detector_data_as not in possible_as_values: 628s raise ValueError( 628s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 628s ) 628s 628s if not os.path.exists(file_path): 628s > raise IOError(f"{file_path} does not exists") 628s E OSError: REF_B_0000_0.nx does not exists 628s 628s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 628s ------------------------------ Captured log call ------------------------------- 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_True_T0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_True_T0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_True_T0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s _____________________ test_flat_reducer[False-True-False] ______________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_True_F0') 628s stage_scan_have_flats = False, save_intermediated = True 628s reuse_intermediated = False 628s 628s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 628s @pytest.mark.parametrize("save_intermediated", (True, False)) 628s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 628s def test_flat_reducer( 628s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 628s ): 628s """ 628s test execution of `flat_reducer` function. 628s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 628s 'reference' acquisition (converting projections to reduced flats) 628s """ 628s raw_data_dir = tmp_path / "raw" 628s n_stage = 5 628s # create bliss scan to be converted to NXtomo 628s acqu = MockBlissAcquisition( 628s n_sample=n_stage, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=1 if stage_scan_have_flats else 0, 628s output_dir=raw_data_dir, 628s file_name_z_fill=4, 628s ) 628s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 628s 628s # scan for flat at start 628s ref_start = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_B_0000", 628s ) 628s bliss_ref_start = ref_start.samples[0].sample_file 628s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_start, 628s nx_tomo_ref_start, 628s ) 628s # scan for flat at end 628s ref_end = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_E_0000", 628s ) 628s bliss_ref_end = ref_end.samples[0].sample_file 628s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_end, 628s nx_tomo_ref_end, 628s ) 628s 628s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 628s mixing_factor = (i_stage + 1) / (n_stage) 628s 628s # convert from .h5 to .nx 628s output_nx_file = bliss_file_name.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_file_name, 628s output_nx_file, 628s ) 628s 628s # apply fly reducer 628s > flat_reducer( 628s scan_filename=output_nx_file, 628s ref_start_filename=nx_tomo_ref_start, 628s ref_end_filename=nx_tomo_ref_end, 628s mixing_factor=mixing_factor, 628s save_intermediated=save_intermediated, 628s reuse_intermediated=reuse_intermediated, 628s ) 628s 628s nxtomomill/utils/tests/test_flat_reducer.py:105: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 628s fd_start, fd_start_as_dict = extract_darks_flats( 628s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 628s nxt.load(basename, data_path=entry_name) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 628s detector_data_as = 'as_data_url' 628s 628s def load( 628s self, file_path: str, data_path: str, detector_data_as="as_data_url" 628s ) -> NXobject: 628s """ 628s Load NXtomo instance from file_path and data_path 628s 628s :param file_path: hdf5 file path containing the NXtomo 628s :param data_path: location of the NXtomo 628s :param detector_data_as: how to load detector data. Can be: 628s * "as_virtual_source": load it as h5py's VirtualGroup 628s * "as_data_url": load it as silx's DataUrl 628s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 628s """ 628s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 628s if detector_data_as not in possible_as_values: 628s raise ValueError( 628s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 628s ) 628s 628s if not os.path.exists(file_path): 628s > raise IOError(f"{file_path} does not exists") 628s E OSError: REF_B_0000_0.nx does not exists 628s 628s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 628s ------------------------------ Captured log call ------------------------------- 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_True_F0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_True_F0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_True_F0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s _____________________ test_flat_reducer[False-False-True] ______________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_False_0') 628s stage_scan_have_flats = True, save_intermediated = False 628s reuse_intermediated = False 628s 628s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 628s @pytest.mark.parametrize("save_intermediated", (True, False)) 628s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 628s def test_flat_reducer( 628s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 628s ): 628s """ 628s test execution of `flat_reducer` function. 628s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 628s 'reference' acquisition (converting projections to reduced flats) 628s """ 628s raw_data_dir = tmp_path / "raw" 628s n_stage = 5 628s # create bliss scan to be converted to NXtomo 628s acqu = MockBlissAcquisition( 628s n_sample=n_stage, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=1 if stage_scan_have_flats else 0, 628s output_dir=raw_data_dir, 628s file_name_z_fill=4, 628s ) 628s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 628s 628s # scan for flat at start 628s ref_start = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_B_0000", 628s ) 628s bliss_ref_start = ref_start.samples[0].sample_file 628s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_start, 628s nx_tomo_ref_start, 628s ) 628s # scan for flat at end 628s ref_end = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_E_0000", 628s ) 628s bliss_ref_end = ref_end.samples[0].sample_file 628s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_end, 628s nx_tomo_ref_end, 628s ) 628s 628s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 628s mixing_factor = (i_stage + 1) / (n_stage) 628s 628s # convert from .h5 to .nx 628s output_nx_file = bliss_file_name.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_file_name, 628s output_nx_file, 628s ) 628s 628s # apply fly reducer 628s > flat_reducer( 628s scan_filename=output_nx_file, 628s ref_start_filename=nx_tomo_ref_start, 628s ref_end_filename=nx_tomo_ref_end, 628s mixing_factor=mixing_factor, 628s save_intermediated=save_intermediated, 628s reuse_intermediated=reuse_intermediated, 628s ) 628s 628s nxtomomill/utils/tests/test_flat_reducer.py:105: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 628s fd_start, fd_start_as_dict = extract_darks_flats( 628s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 628s nxt.load(basename, data_path=entry_name) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 628s detector_data_as = 'as_data_url' 628s 628s def load( 628s self, file_path: str, data_path: str, detector_data_as="as_data_url" 628s ) -> NXobject: 628s """ 628s Load NXtomo instance from file_path and data_path 628s 628s :param file_path: hdf5 file path containing the NXtomo 628s :param data_path: location of the NXtomo 628s :param detector_data_as: how to load detector data. Can be: 628s * "as_virtual_source": load it as h5py's VirtualGroup 628s * "as_data_url": load it as silx's DataUrl 628s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 628s """ 628s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 628s if detector_data_as not in possible_as_values: 628s raise ValueError( 628s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 628s ) 628s 628s if not os.path.exists(file_path): 628s > raise IOError(f"{file_path} does not exists") 628s E OSError: REF_B_0000_0.nx does not exists 628s 628s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 628s ------------------------------ Captured log call ------------------------------- 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_False_0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_False_0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_False_0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s _____________________ test_flat_reducer[False-False-False] _____________________ 628s 628s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_False_1') 628s stage_scan_have_flats = False, save_intermediated = False 628s reuse_intermediated = False 628s 628s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 628s @pytest.mark.parametrize("save_intermediated", (True, False)) 628s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 628s def test_flat_reducer( 628s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 628s ): 628s """ 628s test execution of `flat_reducer` function. 628s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 628s 'reference' acquisition (converting projections to reduced flats) 628s """ 628s raw_data_dir = tmp_path / "raw" 628s n_stage = 5 628s # create bliss scan to be converted to NXtomo 628s acqu = MockBlissAcquisition( 628s n_sample=n_stage, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=1 if stage_scan_have_flats else 0, 628s output_dir=raw_data_dir, 628s file_name_z_fill=4, 628s ) 628s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 628s 628s # scan for flat at start 628s ref_start = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_B_0000", 628s ) 628s bliss_ref_start = ref_start.samples[0].sample_file 628s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_start, 628s nx_tomo_ref_start, 628s ) 628s # scan for flat at end 628s ref_end = MockBlissAcquisition( 628s n_sample=1, 628s n_sequence=1, 628s n_scan_per_sequence=10, 628s n_darks=2, 628s n_flats=0, 628s output_dir=raw_data_dir, 628s file_name_prefix="REF_E_0000", 628s ) 628s bliss_ref_end = ref_end.samples[0].sample_file 628s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_ref_end, 628s nx_tomo_ref_end, 628s ) 628s 628s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 628s mixing_factor = (i_stage + 1) / (n_stage) 628s 628s # convert from .h5 to .nx 628s output_nx_file = bliss_file_name.replace(".h5", ".nx") 628s _convert_bliss2nx( 628s bliss_file_name, 628s output_nx_file, 628s ) 628s 628s # apply fly reducer 628s > flat_reducer( 628s scan_filename=output_nx_file, 628s ref_start_filename=nx_tomo_ref_start, 628s ref_end_filename=nx_tomo_ref_end, 628s mixing_factor=mixing_factor, 628s save_intermediated=save_intermediated, 628s reuse_intermediated=reuse_intermediated, 628s ) 628s 628s nxtomomill/utils/tests/test_flat_reducer.py:105: 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 628s fd_start, fd_start_as_dict = extract_darks_flats( 628s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 628s nxt.load(basename, data_path=entry_name) 628s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 628s 628s self = 628s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 628s detector_data_as = 'as_data_url' 628s 628s def load( 628s self, file_path: str, data_path: str, detector_data_as="as_data_url" 628s ) -> NXobject: 628s """ 628s Load NXtomo instance from file_path and data_path 628s 628s :param file_path: hdf5 file path containing the NXtomo 628s :param data_path: location of the NXtomo 628s :param detector_data_as: how to load detector data. Can be: 628s * "as_virtual_source": load it as h5py's VirtualGroup 628s * "as_data_url": load it as silx's DataUrl 628s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 628s """ 628s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 628s if detector_data_as not in possible_as_values: 628s raise ValueError( 628s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 628s ) 628s 628s if not os.path.exists(file_path): 628s > raise IOError(f"{file_path} does not exists") 628s E OSError: REF_B_0000_0.nx does not exists 628s 628s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 628s ------------------------------ Captured log call ------------------------------- 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_False_1/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_False_1/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-0/test_flat_reducer_False_False_1/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 628s =============================== warnings summary =============================== 628s ../../../../usr/lib/python3/dist-packages/tomoscan/framereducer/framereducerbase.py:4 628s /usr/lib/python3/dist-packages/tomoscan/framereducer/framereducerbase.py:4: DeprecationWarning: numpy.core.numerictypes is deprecated and has been renamed to numpy._core.numerictypes. The numpy._core namespace contains private NumPy internals and its use is discouraged, as NumPy internals can change without warning in any release. In practice, most real-world usage of numpy.core is to access functionality in the public NumPy API. If that is the case, use the public NumPy API. If not, you are using NumPy internals. If you would still like to access an internal attribute, use numpy._core.numerictypes.generic. 628s from numpy.core.numerictypes import generic as numy_generic 628s 628s nxtomomill/app/tests/test_edf2nx_app.py::test_edf2nx_application 628s /usr/lib/python3/dist-packages/tqdm/std.py:636: TqdmWarning: clamping frac to range [0, 1] 628s full_bar = Bar(frac, 628s 628s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 628s =========================== short test summary info ============================ 628s FAILED nxtomomill/app/tests/test_edf_config_app.py::test_edf_config_application 628s FAILED nxtomomill/app/tests/test_h5_config_app.py::test_h5_config_application 628s FAILED nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_machine_electric_current 628s FAILED nxtomomill/io/config/tests/test_confighandler.py::TestH5Config::test_creation_from_cmd_line_opts 628s FAILED nxtomomill/io/config/tests/test_confighandler.py::TestH5Config::test_creation_from_config_file 628s FAILED nxtomomill/io/config/tests/test_confighandler.py::TestFrameUrls::test_external_paths 628s FAILED nxtomomill/io/config/tests/test_confighandler.py::TestFrameUrls::test_local_paths 628s FAILED nxtomomill/io/config/tests/test_edf_config.py::test_TomoEDFConfig_to_dict 628s FAILED nxtomomill/io/config/tests/test_edf_config.py::test_TomoEDFConfig_default_config 628s FAILED nxtomomill/io/config/tests/test_fluo_config.py::test_TomoFluoConfig_to_dict 628s FAILED nxtomomill/io/config/tests/test_fluo_config.py::test_TomoFluoConfig_default_config 628s FAILED nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_to_and_from_cfg_file 628s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-True-True] 628s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-True-False] 628s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-False-True] 628s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-False-False] 628s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-True-True] 628s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-True-False] 628s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-False-True] 628s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-False-False] 628s = 20 failed, 148 passed, 3 deselected, 2 warnings, 27 subtests passed in 52.05s = 628s E: pybuild pybuild:483: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build; {interpreter} -X faulthandler -m pytest -p no:faulthandler -v -k "not test_fluo2nx_application_" 628s I: pybuild base:384: cd /tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build; python3.13 -X faulthandler -m pytest -p no:faulthandler -v -k "not test_fluo2nx_application_" 629s ============================= test session starts ============================== 629s platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.13 629s cachedir: .pytest_cache 629s rootdir: /tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build 629s plugins: typeguard-4.4.4 630s collecting ... collected 171 items / 3 deselected / 168 selected 630s 630s nxtomomill/app/tests/test_dxfile2nx_app.py::test_dxfile2nx_application PASSED [ 0%] 630s nxtomomill/app/tests/test_edf2nx_app.py::test_edf2nx_application PASSED [ 1%] 630s nxtomomill/app/tests/test_edf_config_app.py::test_edf_config_application PASSED [ 1%] 630s nxtomomill/app/tests/test_h52nx_app.py::test_h52nx_application PASSED [ 2%] 630s nxtomomill/app/tests/test_h5_config_app.py::test_h5_config_application PASSED [ 2%] 630s nxtomomill/app/tests/test_nx_copy.py::test_nxcopy_get_output_file PASSED [ 3%] 631s nxtomomill/app/tests/test_nx_copy.py::test_copy PASSED [ 4%] 631s nxtomomill/app/tests/test_patch_nx_app.py::test_patch_nx_application PASSED [ 4%] 631s nxtomomill/app/tests/test_split_nxfile_app.py::test_split_nxfile[True] PASSED [ 5%] 631s nxtomomill/app/tests/test_split_nxfile_app.py::test_split_nxfile[False] PASSED [ 5%] 631s nxtomomill/converter/dxfile/tests/test_dxfile.py::test_dx_file_conversion[True] PASSED [ 6%] 632s nxtomomill/converter/dxfile/tests/test_dxfile.py::test_dx_file_conversion[False] PASSED [ 7%] 632s nxtomomill/converter/edf/tests/test_checks.py::test_compare_volumes PASSED [ 7%] 633s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[False-False-absolute] PASSED [ 8%] 636s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[False-False-relative] PASSED [ 8%] 637s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[False-True-absolute] PASSED [ 9%] 639s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[True-False-absolute] PASSED [ 10%] 642s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[True-False-relative] PASSED [ 10%] 644s nxtomomill/converter/edf/tests/test_edf2nx.py::test_edf_to_nx_converter[True-True-absolute] PASSED [ 11%] 644s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-True--180] PASSED [ 11%] 644s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-True-180] PASSED [ 12%] 644s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-True-360] PASSED [ 13%] 645s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-False--180] PASSED [ 13%] 645s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-False-180] PASSED [ 14%] 645s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-True-False-360] PASSED [ 14%] 645s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-True--180] PASSED [ 15%] 646s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-True-180] PASSED [ 16%] 646s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-True-360] PASSED [ 16%] 646s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-False--180] PASSED [ 17%] 646s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-False-180] PASSED [ 17%] 647s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[True-False-False-360] PASSED [ 18%] 647s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-True--180] PASSED [ 19%] 647s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-True-180] PASSED [ 19%] 648s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-True-360] PASSED [ 20%] 648s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-False--180] PASSED [ 20%] 648s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-False-180] PASSED [ 21%] 648s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-True-False-360] PASSED [ 22%] 649s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-True--180] PASSED [ 22%] 649s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-True-180] PASSED [ 23%] 649s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-True-360] PASSED [ 23%] 649s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-False--180] PASSED [ 24%] 650s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-False-180] PASSED [ 25%] 650s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rotation_angle_infos[False-False-False-360] PASSED [ 25%] 650s nxtomomill/converter/edf/tests/test_edf2nx.py::test_rot_angle_key_does_not_exists PASSED [ 26%] 651s nxtomomill/converter/edf/tests/test_edf2nx.py::test_different_info_file PASSED [ 26%] 651s nxtomomill/converter/edf/tests/test_edf2nx.py::test_different_dataset_basename PASSED [ 27%] 651s nxtomomill/converter/edf/tests/test_edf2nx.py::test_delete_edf_input_files PASSED [ 27%] 651s nxtomomill/converter/edf/tests/test_edf2nx.py::test_output_checks PASSED [ 28%] 652s nxtomomill/converter/edf/tests/test_edf2nx_check.py::test_edf2nx_check PASSED [ 29%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition.py::test_BaseAquisition PASSED [ 29%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition.py::test_get_dataset_name_from_motor PASSED [ 30%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_deduce_machine_current PASSED [ 30%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-1] PASSED [ 31%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-3] PASSED [ 32%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-4] PASSED [ 32%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-7] PASSED [ 33%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-9] PASSED [ 33%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test0-12] PASSED [ 34%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-1] PASSED [ 35%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-3] PASSED [ 35%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-4] PASSED [ 36%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-7] PASSED [ 36%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-9] PASSED [ 37%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_split_timestamps[array_to_test1-12] PASSED [ 38%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_get_entry_type PASSED [ 38%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_acquisition_utils.py::test_group_z_series PASSED [ 39%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_bliss_tomo_config.py::test_tomo_config PASSED [ 39%] 652s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config0-1] PASSED [ 40%] 653s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config0-2] PASSED [ 41%] 653s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config1-1] PASSED [ 41%] 653s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config1-2] PASSED [ 42%] 654s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config2-1] PASSED [ 42%] 654s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion[config2-2] PASSED [ 43%] 654s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_pcotomo_conversion_with_angle_subselection PASSED [ 44%] 654s nxtomomill/converter/hdf5/acquisition/tests/test_pcotomoacquisition.py::test_get_projections_slices PASSED [ 44%] 654s nxtomomill/converter/hdf5/tests/test_h52nx_utils.py::test_get_default_output_file PASSED [ 45%] 655s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_converter_with_nx_detector_attr PASSED [ 45%] 655s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_invalid_tomo_n PASSED [ 46%] 655s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_converter_without_nx_detector_attr PASSED [ 47%] 656s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_providing_existing_camera_name PASSED [ 47%] 657s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_providing_non_existing_camera_name_no_tomo_config PASSED [ 48%] 658s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion_no_tomo_config[z-series-v1] PASSED [ 48%] 659s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion_no_tomo_config[z-series-v3] PASSED [ 49%] 660s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion[z-series-v1] PASSED [ 50%] 661s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion[z-series-v3] PASSED [ 50%] 661s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_ignore_sub_entries PASSED [ 51%] 661s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_get_nx_detectors PASSED [ 51%] 661s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_guess_nx_detector PASSED [ 52%] 661s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_dataset_1 PASSED [ 52%] 662s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_dataset_2 PASSED [ 53%] 662s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_conversion_with_external_urls[z-series-v1] PASSED [ 54%] 663s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_dark_flat_copy[dark_flat_config0-z-series-v1] PASSED [ 54%] 663s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_dark_flat_copy[dark_flat_config0-z-series-v3] PASSED [ 55%] 664s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_dark_flat_copy[dark_flat_config1-z-series-v1] PASSED [ 55%] 665s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_z_series_dark_flat_copy[dark_flat_config1-z-series-v3] PASSED [ 56%] 665s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_h52nx_from_command_line PASSED [ 57%] 666s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[uint8] PASSED [ 57%] 666s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[uint16] PASSED [ 58%] 666s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[uint32] PASSED [ 58%] 666s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[uint64] PASSED [ 59%] 666s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[float16] PASSED [ 60%] 667s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[float32] PASSED [ 60%] 667s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[int16] PASSED [ 61%] 667s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[int32] PASSED [ 61%] 667s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_simple_conversion[int64] PASSED [ 62%] 668s nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_machine_electric_current FAILED [ 63%] 668s nxtomomill/io/config/tests/test_confighandler.py::TestH5Config::test_creation_from_cmd_line_opts PASSED [ 63%] 668s nxtomomill/io/config/tests/test_confighandler.py::TestH5Config::test_creation_from_config_file PASSED [ 64%] 668s nxtomomill/io/config/tests/test_confighandler.py::TestFrameUrls::test_external_paths PASSED [ 64%] 668s nxtomomill/io/config/tests/test_confighandler.py::TestFrameUrls::test_local_paths PASSED [ 65%] 668s nxtomomill/io/config/tests/test_edf_config.py::test_TomoEDFConfig_to_dict PASSED [ 66%] 668s nxtomomill/io/config/tests/test_edf_config.py::test_TomoEDFConfig_default_config PASSED [ 66%] 668s nxtomomill/io/config/tests/test_edf_config.py::test_TomoEDFConfig_setters PASSED [ 67%] 668s nxtomomill/io/config/tests/test_fluo_config.py::test_TomoFluoConfig_to_dict PASSED [ 67%] 668s nxtomomill/io/config/tests/test_fluo_config.py::test_TomoFluoConfig_default_config PASSED [ 68%] 668s nxtomomill/io/config/tests/test_fluo_config.py::test_TomoFluoConfig_setters PASSED [ 69%] 668s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_from_dict PASSED [ 69%] 668s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_from_dict_lowercase PASSED [ 70%] 668s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_generate_default_config PASSED [ 70%] 668s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_raises_errors PASSED [ 71%] 668s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_to_and_from_cfg_file PASSED [ 72%] 668s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_to_dict 668s nxtomomill/io/config/tests/test_hdf5_config.py::TestH5Config::test_to_dict PASSED [ 72%] 668s nxtomomill/io/tests/test_frame_group.py::TestFrameGroupCreator::test_constructor_frm_str PASSED [ 73%] 668s nxtomomill/io/tests/test_frame_group.py::TestFrameGroupCreator::test_default_constructor PASSED [ 73%] 668s nxtomomill/io/tests/test_frame_group.py::TestFilterCurrentAcquiFrameType::test_search_dark PASSED [ 74%] 668s nxtomomill/io/tests/test_frame_group.py::TestFilterCurrentAcquiFrameType::test_search_flat PASSED [ 75%] 668s nxtomomill/io/tests/test_frame_group.py::TestFilterCurrentAcquiFrameType::test_search_init PASSED [ 75%] 668s nxtomomill/io/tests/test_frame_group.py::TestFilterCurrentAcquiFrameType::test_search_proj PASSED [ 76%] 668s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr1 PASSED [ 76%] 668s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr2 PASSED [ 77%] 668s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr3 PASSED [ 77%] 668s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr4 PASSED [ 78%] 668s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToTuple::testStr5 PASSED [ 79%] 668s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_invalid_url_1 PASSED [ 79%] 668s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_invalid_url_2 PASSED [ 80%] 668s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_valid_url_1 PASSED [ 80%] 668s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_valid_url_2 PASSED [ 81%] 668s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_valid_url_3 PASSED [ 82%] 668s nxtomomill/io/tests/test_io_utils.py::TestIsUrlPath::test_valid_url_4 PASSED [ 82%] 668s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToFrameGrp::test_invalid_1 PASSED [ 83%] 668s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToFrameGrp::test_valid_1 PASSED [ 83%] 668s nxtomomill/io/tests/test_io_utils.py::TestConvertStrToFrameGrp::test_valid_2 PASSED [ 84%] 668s nxtomomill/tests/test_version.py::test_version PASSED [ 85%] 668s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-True-True] FAILED [ 85%] 669s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-True-False] FAILED [ 86%] 670s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-False-True] FAILED [ 86%] 671s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-False-False] FAILED [ 87%] 671s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-True-True] FAILED [ 88%] 672s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-True-False] FAILED [ 88%] 673s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-False-True] FAILED [ 89%] 674s nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-False-False] FAILED [ 89%] 674s nxtomomill/utils/tests/test_utils.py::TestAddDarkAtStart::testAddDarkAsDataUrl 674s nxtomomill/utils/tests/test_utils.py::TestAddDarkAtStart::testAddDarkAsDataUrl PASSED [ 90%] 674s nxtomomill/utils/tests/test_utils.py::TestAddDarkAtStart::testAddDarkAsNumpyArray 674s nxtomomill/utils/tests/test_utils.py::TestAddDarkAtStart::testAddDarkAsNumpyArray PASSED [ 91%] 674s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtStart::testAddFlatStartAsDataUrl 674s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtStart::testAddFlatStartAsDataUrl PASSED [ 91%] 675s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtStart::testAddFlatStartAsNumpyArray 675s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtStart::testAddFlatStartAsNumpyArray PASSED [ 92%] 675s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtEnd::testAddFlatEndAsNumpyArray 675s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtEnd::testAddFlatEndAsNumpyArray PASSED [ 92%] 675s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtEnd::testAddFlatStartAsDataUrl 675s nxtomomill/utils/tests/test_utils.py::TestAddFlatAtEnd::testAddFlatStartAsDataUrl PASSED [ 93%] 675s nxtomomill/utils/tests/test_utils.py::TestAddDarkAndFlatWithFancySelection::testInValidSlice PASSED [ 94%] 675s nxtomomill/utils/tests/test_utils.py::TestAddDarkAndFlatWithFancySelection::testValid PASSED [ 94%] 676s nxtomomill/utils/tests/test_utils.py::TestCompleteAddFlatAndDark::testWithExtras PASSED [ 95%] 676s nxtomomill/utils/tests/test_utils.py::TestCompleteAddFlatAndDark::testWithoutExtras PASSED [ 95%] 676s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testInputType PASSED [ 96%] 676s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToAlignment PASSED [ 97%] 676s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToDark PASSED [ 97%] 677s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToFlat PASSED [ 98%] 677s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToInvalid PASSED [ 98%] 677s nxtomomill/utils/tests/test_utils.py::TestChangeImageKeyControl::testUpdateToProjections PASSED [ 99%] 677s nxtomomill/utils/tests/test_utils.py::TestAddDarkAndFlatFromADifferentFolderWithVDS::test PASSED [100%] 677s 677s =================================== FAILURES =================================== 677s ________________________ test_machine_electric_current _________________________ 677s 677s def test_machine_electric_current(): 677s """Test machine electric current is handle by the convertor""" 677s with tempfile.TemporaryDirectory() as root_dir: 677s bliss_mock = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=2, 677s n_darks=5, 677s n_flats=5, 677s with_nx_detector_attr=True, 677s output_dir=root_dir, 677s detector_name="my_detector", 677s ) 677s sample = bliss_mock.samples[0] 677s assert os.path.exists(sample.sample_file) 677s # append current to the bliss file 677s # from the example file I had it looks like this information can be saved at different location 677s # and can be either a number (for dark and flat for example) or a list (for projections) 677s with HDF5File(sample.sample_file, mode="a") as h5f: 677s # overwrite start_time to made ordering work 677s del h5f["1.1"]["start_time"] 677s h5f["1.1"]["start_time"] = "2022-01-15T21:05:58.360095+02:00" 677s 677s with HDF5File(sample.sample_file, mode="a") as h5f: 677s node_names = ("2.1", "3.1") 677s machine_elec_current = (602, 589) # those are in ma 677s start_times = ( 677s "2022-01-15T21:07:58.360095+02:00", 677s "2022-01-15T21:07:59.360095+02:00", 677s ) 677s for node_name, machine_elec_current_ma, st in zip( 677s node_names, machine_elec_current, start_times 677s ): 677s h5f[f"{node_name}/instrument/machine/current"] = machine_elec_current_ma 677s h5f[f"{node_name}/instrument/machine/current"].attrs["units"] = "mA" 677s del h5f[node_name]["start_time"] 677s h5f[node_name]["start_time"] = st 677s 677s assert "4.1" in h5f 677s assert "5.1" in h5f 677s assert ( 677s "6.1" not in h5f 677s ) # this is because n_scan_per_sequence == 2 in MockBlissAcquisition 677s 677s # create some X.2 for machine electric current as this is done in Bliss 677s for node_name in ("4.2", "5.2"): 677s h5f.require_group(node_name)["title"] = _BlissSample.get_title( 677s "projection" 677s ) 677s 677s current_monitor_dataset = h5f.require_dataset( 677s f"{node_name}/measurement/current", shape=(3), dtype=numpy.float32 677s ) 677s current_monitor_dataset[:] = numpy.linspace( 677s 0.9, 0.96, 3, dtype=numpy.float32, endpoint=True 677s ) 677s current_monitor_dataset.attrs["units"] = "A" 677s 677s # define start_time and end_time to insure conversion is correct 677s # start_time and end_time is required for both: 677s # * from X.1 to create frame time stamp 677s # * from X.2 to get machine electric current time stamp 677s start_times = ( 677s "2022-01-15T21:08:58.360095+02:00", 677s "2022-01-15T21:10:58.360095+02:00", 677s ) 677s end_times = ( 677s "2022-01-15T21:09:58.360095+02:00", 677s "2022-01-15T21:11:58.360095+02:00", 677s ) 677s tuple_node_names = (["4.1", "4.2"], ["5.1", "5.2"]) 677s 677s for node_names, st, et in zip(tuple_node_names, start_times, end_times): 677s for node_name in node_names: 677s if "start_time" in h5f[node_name]: 677s del h5f[node_name]["start_time"] 677s h5f[node_name]["start_time"] = st 677s h5f[node_name]["end_time"] = et 677s h5f[node_name].require_group("instrument") 677s 677s # convert the file 677s config = TomoHDF5Config() 677s config.output_file = sample.sample_file.replace(".h5", ".nx") 677s config.single_file = True 677s config.request_input = False 677s config.raises_error = True 677s with pytest.raises(ValueError): 677s converter.from_h5_to_nx(configuration=config) 677s config.input_file = sample.sample_file 677s > converter.from_h5_to_nx(configuration=config) 677s 677s nxtomomill/converter/hdf5/tests/test_hdf5converter.py:1203: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/converter/hdf5/hdf5converter.py:734: in from_h5_to_nx 677s return converter.convert() 677s ^^^^^^^^^^^^^^^^^^^ 677s nxtomomill/converter/hdf5/hdf5converter.py:213: in convert 677s self._entries_created = self.write() 677s ^^^^^^^^^^^^ 677s nxtomomill/converter/hdf5/hdf5converter.py:578: in write 677s raise e 677s nxtomomill/converter/hdf5/hdf5converter.py:569: in write 677s new_entries = acquisition.write_as_nxtomo( 677s nxtomomill/converter/hdf5/acquisition/baseacquisition.py:141: in write_as_nxtomo 677s nx_tomos = self.to_NXtomos( 677s nxtomomill/converter/hdf5/acquisition/standardacquisition.py:942: in to_NXtomos 677s self._preprocess_registered_entries() 677s nxtomomill/converter/hdf5/acquisition/standardacquisition.py:586: in _preprocess_registered_entries 677s self._preprocess_registered_entry(url, type_) 677s nxtomomill/converter/hdf5/acquisition/standardacquisition.py:444: in _preprocess_registered_entry 677s self._register_frame_timestamp(entry, start_time, end_time) 677s nxtomomill/converter/hdf5/acquisition/standardacquisition.py:535: in _register_frame_timestamp 677s numpy.float128 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s attr = 'float128' 677s 677s def __getattr__(attr): 677s # Warn for expired attributes 677s import warnings 677s 677s if attr == "linalg": 677s import numpy.linalg as linalg 677s return linalg 677s elif attr == "fft": 677s import numpy.fft as fft 677s return fft 677s elif attr == "dtypes": 677s import numpy.dtypes as dtypes 677s return dtypes 677s elif attr == "random": 677s import numpy.random as random 677s return random 677s elif attr == "polynomial": 677s import numpy.polynomial as polynomial 677s return polynomial 677s elif attr == "ma": 677s import numpy.ma as ma 677s return ma 677s elif attr == "ctypeslib": 677s import numpy.ctypeslib as ctypeslib 677s return ctypeslib 677s elif attr == "exceptions": 677s import numpy.exceptions as exceptions 677s return exceptions 677s elif attr == "testing": 677s import numpy.testing as testing 677s return testing 677s elif attr == "matlib": 677s import numpy.matlib as matlib 677s return matlib 677s elif attr == "f2py": 677s import numpy.f2py as f2py 677s return f2py 677s elif attr == "typing": 677s import numpy.typing as typing 677s return typing 677s elif attr == "rec": 677s import numpy.rec as rec 677s return rec 677s elif attr == "char": 677s import numpy.char as char 677s return char 677s elif attr == "array_api": 677s raise AttributeError("`numpy.array_api` is not available from " 677s "numpy 2.0 onwards", name=None) 677s elif attr == "core": 677s import numpy.core as core 677s return core 677s elif attr == "strings": 677s import numpy.strings as strings 677s return strings 677s elif attr == "distutils": 677s if 'distutils' in __numpy_submodules__: 677s import numpy.distutils as distutils 677s return distutils 677s else: 677s raise AttributeError("`numpy.distutils` is not available from " 677s "Python 3.12 onwards", name=None) 677s 677s if attr in __future_scalars__: 677s # And future warnings for those that will change, but also give 677s # the AttributeError 677s warnings.warn( 677s f"In the future `np.{attr}` will be defined as the " 677s "corresponding NumPy scalar.", FutureWarning, stacklevel=2) 677s 677s if attr in __former_attrs__: 677s raise AttributeError(__former_attrs__[attr], name=None) 677s 677s if attr in __expired_attributes__: 677s raise AttributeError( 677s f"`np.{attr}` was removed in the NumPy 2.0 release. " 677s f"{__expired_attributes__[attr]}", 677s name=None 677s ) 677s 677s if attr == "chararray": 677s warnings.warn( 677s "`np.chararray` is deprecated and will be removed from " 677s "the main namespace in the future. Use an array with a string " 677s "or bytes dtype instead.", DeprecationWarning, stacklevel=2) 677s import numpy.char as char 677s return char.chararray 677s 677s > raise AttributeError(f"module {__name__!r} has no attribute {attr!r}") 677s E AttributeError: module 'numpy' has no attribute 'float128'. Did you mean: 'float16'? 677s 677s /usr/lib/python3/dist-packages/numpy/__init__.py:795: AttributeError 677s ------------------------------ Captured log call ------------------------------- 677s WARNING nxtomomill.converter.hdf5.acquisition.standardacquisition:standardacquisition.py:528 Unable to find start_time and / or end_time. Takes 2022-01-15T19:07:58.360 as frame time stamp for 677s WARNING nxtomomill.converter.hdf5.acquisition.standardacquisition:standardacquisition.py:474 Unable to find end_time. Will pick the first available electric_current for the frame 677s WARNING nxtomomill.converter.hdf5.acquisition.standardacquisition:standardacquisition.py:528 Unable to find start_time and / or end_time. Takes 2022-01-15T19:07:59.360 as frame time stamp for 677s WARNING nxtomomill.converter.hdf5.acquisition.standardacquisition:standardacquisition.py:474 Unable to find end_time. Will pick the first available electric_current for the frame 677s ______________________ test_flat_reducer[True-True-True] _______________________ 677s 677s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_True_Tr0') 677s stage_scan_have_flats = True, save_intermediated = True 677s reuse_intermediated = True 677s 677s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 677s @pytest.mark.parametrize("save_intermediated", (True, False)) 677s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 677s def test_flat_reducer( 677s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 677s ): 677s """ 677s test execution of `flat_reducer` function. 677s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 677s 'reference' acquisition (converting projections to reduced flats) 677s """ 677s raw_data_dir = tmp_path / "raw" 677s n_stage = 5 677s # create bliss scan to be converted to NXtomo 677s acqu = MockBlissAcquisition( 677s n_sample=n_stage, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=1 if stage_scan_have_flats else 0, 677s output_dir=raw_data_dir, 677s file_name_z_fill=4, 677s ) 677s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 677s 677s # scan for flat at start 677s ref_start = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_B_0000", 677s ) 677s bliss_ref_start = ref_start.samples[0].sample_file 677s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_start, 677s nx_tomo_ref_start, 677s ) 677s # scan for flat at end 677s ref_end = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_E_0000", 677s ) 677s bliss_ref_end = ref_end.samples[0].sample_file 677s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_end, 677s nx_tomo_ref_end, 677s ) 677s 677s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 677s mixing_factor = (i_stage + 1) / (n_stage) 677s 677s # convert from .h5 to .nx 677s output_nx_file = bliss_file_name.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_file_name, 677s output_nx_file, 677s ) 677s 677s # apply fly reducer 677s > flat_reducer( 677s scan_filename=output_nx_file, 677s ref_start_filename=nx_tomo_ref_start, 677s ref_end_filename=nx_tomo_ref_end, 677s mixing_factor=mixing_factor, 677s save_intermediated=save_intermediated, 677s reuse_intermediated=reuse_intermediated, 677s ) 677s 677s nxtomomill/utils/tests/test_flat_reducer.py:105: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 677s fd_start, fd_start_as_dict = extract_darks_flats( 677s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 677s nxt.load(basename, data_path=entry_name) 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s self = 677s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 677s detector_data_as = 'as_data_url' 677s 677s def load( 677s self, file_path: str, data_path: str, detector_data_as="as_data_url" 677s ) -> NXobject: 677s """ 677s Load NXtomo instance from file_path and data_path 677s 677s :param file_path: hdf5 file path containing the NXtomo 677s :param data_path: location of the NXtomo 677s :param detector_data_as: how to load detector data. Can be: 677s * "as_virtual_source": load it as h5py's VirtualGroup 677s * "as_data_url": load it as silx's DataUrl 677s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 677s """ 677s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 677s if detector_data_as not in possible_as_values: 677s raise ValueError( 677s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 677s ) 677s 677s if not os.path.exists(file_path): 677s > raise IOError(f"{file_path} does not exists") 677s E OSError: REF_B_0000_0.nx does not exists 677s 677s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 677s ------------------------------ Captured log call ------------------------------- 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_True_Tr0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_True_Tr0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_True_Tr0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ______________________ test_flat_reducer[True-True-False] ______________________ 677s 677s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_True_Fa0') 677s stage_scan_have_flats = False, save_intermediated = True 677s reuse_intermediated = True 677s 677s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 677s @pytest.mark.parametrize("save_intermediated", (True, False)) 677s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 677s def test_flat_reducer( 677s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 677s ): 677s """ 677s test execution of `flat_reducer` function. 677s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 677s 'reference' acquisition (converting projections to reduced flats) 677s """ 677s raw_data_dir = tmp_path / "raw" 677s n_stage = 5 677s # create bliss scan to be converted to NXtomo 677s acqu = MockBlissAcquisition( 677s n_sample=n_stage, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=1 if stage_scan_have_flats else 0, 677s output_dir=raw_data_dir, 677s file_name_z_fill=4, 677s ) 677s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 677s 677s # scan for flat at start 677s ref_start = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_B_0000", 677s ) 677s bliss_ref_start = ref_start.samples[0].sample_file 677s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_start, 677s nx_tomo_ref_start, 677s ) 677s # scan for flat at end 677s ref_end = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_E_0000", 677s ) 677s bliss_ref_end = ref_end.samples[0].sample_file 677s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_end, 677s nx_tomo_ref_end, 677s ) 677s 677s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 677s mixing_factor = (i_stage + 1) / (n_stage) 677s 677s # convert from .h5 to .nx 677s output_nx_file = bliss_file_name.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_file_name, 677s output_nx_file, 677s ) 677s 677s # apply fly reducer 677s > flat_reducer( 677s scan_filename=output_nx_file, 677s ref_start_filename=nx_tomo_ref_start, 677s ref_end_filename=nx_tomo_ref_end, 677s mixing_factor=mixing_factor, 677s save_intermediated=save_intermediated, 677s reuse_intermediated=reuse_intermediated, 677s ) 677s 677s nxtomomill/utils/tests/test_flat_reducer.py:105: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 677s fd_start, fd_start_as_dict = extract_darks_flats( 677s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 677s nxt.load(basename, data_path=entry_name) 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s self = 677s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 677s detector_data_as = 'as_data_url' 677s 677s def load( 677s self, file_path: str, data_path: str, detector_data_as="as_data_url" 677s ) -> NXobject: 677s """ 677s Load NXtomo instance from file_path and data_path 677s 677s :param file_path: hdf5 file path containing the NXtomo 677s :param data_path: location of the NXtomo 677s :param detector_data_as: how to load detector data. Can be: 677s * "as_virtual_source": load it as h5py's VirtualGroup 677s * "as_data_url": load it as silx's DataUrl 677s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 677s """ 677s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 677s if detector_data_as not in possible_as_values: 677s raise ValueError( 677s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 677s ) 677s 677s if not os.path.exists(file_path): 677s > raise IOError(f"{file_path} does not exists") 677s E OSError: REF_B_0000_0.nx does not exists 677s 677s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 677s ------------------------------ Captured log call ------------------------------- 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_True_Fa0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_True_Fa0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_True_Fa0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ______________________ test_flat_reducer[True-False-True] ______________________ 677s 677s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_False_T0') 677s stage_scan_have_flats = True, save_intermediated = False 677s reuse_intermediated = True 677s 677s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 677s @pytest.mark.parametrize("save_intermediated", (True, False)) 677s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 677s def test_flat_reducer( 677s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 677s ): 677s """ 677s test execution of `flat_reducer` function. 677s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 677s 'reference' acquisition (converting projections to reduced flats) 677s """ 677s raw_data_dir = tmp_path / "raw" 677s n_stage = 5 677s # create bliss scan to be converted to NXtomo 677s acqu = MockBlissAcquisition( 677s n_sample=n_stage, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=1 if stage_scan_have_flats else 0, 677s output_dir=raw_data_dir, 677s file_name_z_fill=4, 677s ) 677s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 677s 677s # scan for flat at start 677s ref_start = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_B_0000", 677s ) 677s bliss_ref_start = ref_start.samples[0].sample_file 677s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_start, 677s nx_tomo_ref_start, 677s ) 677s # scan for flat at end 677s ref_end = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_E_0000", 677s ) 677s bliss_ref_end = ref_end.samples[0].sample_file 677s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_end, 677s nx_tomo_ref_end, 677s ) 677s 677s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 677s mixing_factor = (i_stage + 1) / (n_stage) 677s 677s # convert from .h5 to .nx 677s output_nx_file = bliss_file_name.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_file_name, 677s output_nx_file, 677s ) 677s 677s # apply fly reducer 677s > flat_reducer( 677s scan_filename=output_nx_file, 677s ref_start_filename=nx_tomo_ref_start, 677s ref_end_filename=nx_tomo_ref_end, 677s mixing_factor=mixing_factor, 677s save_intermediated=save_intermediated, 677s reuse_intermediated=reuse_intermediated, 677s ) 677s 677s nxtomomill/utils/tests/test_flat_reducer.py:105: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 677s fd_start, fd_start_as_dict = extract_darks_flats( 677s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 677s nxt.load(basename, data_path=entry_name) 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s self = 677s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 677s detector_data_as = 'as_data_url' 677s 677s def load( 677s self, file_path: str, data_path: str, detector_data_as="as_data_url" 677s ) -> NXobject: 677s """ 677s Load NXtomo instance from file_path and data_path 677s 677s :param file_path: hdf5 file path containing the NXtomo 677s :param data_path: location of the NXtomo 677s :param detector_data_as: how to load detector data. Can be: 677s * "as_virtual_source": load it as h5py's VirtualGroup 677s * "as_data_url": load it as silx's DataUrl 677s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 677s """ 677s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 677s if detector_data_as not in possible_as_values: 677s raise ValueError( 677s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 677s ) 677s 677s if not os.path.exists(file_path): 677s > raise IOError(f"{file_path} does not exists") 677s E OSError: REF_B_0000_0.nx does not exists 677s 677s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 677s ------------------------------ Captured log call ------------------------------- 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_False_T0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_False_T0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_False_T0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s _____________________ test_flat_reducer[True-False-False] ______________________ 677s 677s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_False_F0') 677s stage_scan_have_flats = False, save_intermediated = False 677s reuse_intermediated = True 677s 677s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 677s @pytest.mark.parametrize("save_intermediated", (True, False)) 677s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 677s def test_flat_reducer( 677s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 677s ): 677s """ 677s test execution of `flat_reducer` function. 677s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 677s 'reference' acquisition (converting projections to reduced flats) 677s """ 677s raw_data_dir = tmp_path / "raw" 677s n_stage = 5 677s # create bliss scan to be converted to NXtomo 677s acqu = MockBlissAcquisition( 677s n_sample=n_stage, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=1 if stage_scan_have_flats else 0, 677s output_dir=raw_data_dir, 677s file_name_z_fill=4, 677s ) 677s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 677s 677s # scan for flat at start 677s ref_start = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_B_0000", 677s ) 677s bliss_ref_start = ref_start.samples[0].sample_file 677s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_start, 677s nx_tomo_ref_start, 677s ) 677s # scan for flat at end 677s ref_end = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_E_0000", 677s ) 677s bliss_ref_end = ref_end.samples[0].sample_file 677s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_end, 677s nx_tomo_ref_end, 677s ) 677s 677s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 677s mixing_factor = (i_stage + 1) / (n_stage) 677s 677s # convert from .h5 to .nx 677s output_nx_file = bliss_file_name.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_file_name, 677s output_nx_file, 677s ) 677s 677s # apply fly reducer 677s > flat_reducer( 677s scan_filename=output_nx_file, 677s ref_start_filename=nx_tomo_ref_start, 677s ref_end_filename=nx_tomo_ref_end, 677s mixing_factor=mixing_factor, 677s save_intermediated=save_intermediated, 677s reuse_intermediated=reuse_intermediated, 677s ) 677s 677s nxtomomill/utils/tests/test_flat_reducer.py:105: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 677s fd_start, fd_start_as_dict = extract_darks_flats( 677s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 677s nxt.load(basename, data_path=entry_name) 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s self = 677s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 677s detector_data_as = 'as_data_url' 677s 677s def load( 677s self, file_path: str, data_path: str, detector_data_as="as_data_url" 677s ) -> NXobject: 677s """ 677s Load NXtomo instance from file_path and data_path 677s 677s :param file_path: hdf5 file path containing the NXtomo 677s :param data_path: location of the NXtomo 677s :param detector_data_as: how to load detector data. Can be: 677s * "as_virtual_source": load it as h5py's VirtualGroup 677s * "as_data_url": load it as silx's DataUrl 677s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 677s """ 677s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 677s if detector_data_as not in possible_as_values: 677s raise ValueError( 677s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 677s ) 677s 677s if not os.path.exists(file_path): 677s > raise IOError(f"{file_path} does not exists") 677s E OSError: REF_B_0000_0.nx does not exists 677s 677s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 677s ------------------------------ Captured log call ------------------------------- 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_False_F0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_False_F0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_True_False_F0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ______________________ test_flat_reducer[False-True-True] ______________________ 677s 677s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_True_T0') 677s stage_scan_have_flats = True, save_intermediated = True 677s reuse_intermediated = False 677s 677s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 677s @pytest.mark.parametrize("save_intermediated", (True, False)) 677s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 677s def test_flat_reducer( 677s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 677s ): 677s """ 677s test execution of `flat_reducer` function. 677s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 677s 'reference' acquisition (converting projections to reduced flats) 677s """ 677s raw_data_dir = tmp_path / "raw" 677s n_stage = 5 677s # create bliss scan to be converted to NXtomo 677s acqu = MockBlissAcquisition( 677s n_sample=n_stage, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=1 if stage_scan_have_flats else 0, 677s output_dir=raw_data_dir, 677s file_name_z_fill=4, 677s ) 677s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 677s 677s # scan for flat at start 677s ref_start = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_B_0000", 677s ) 677s bliss_ref_start = ref_start.samples[0].sample_file 677s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_start, 677s nx_tomo_ref_start, 677s ) 677s # scan for flat at end 677s ref_end = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_E_0000", 677s ) 677s bliss_ref_end = ref_end.samples[0].sample_file 677s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_end, 677s nx_tomo_ref_end, 677s ) 677s 677s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 677s mixing_factor = (i_stage + 1) / (n_stage) 677s 677s # convert from .h5 to .nx 677s output_nx_file = bliss_file_name.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_file_name, 677s output_nx_file, 677s ) 677s 677s # apply fly reducer 677s > flat_reducer( 677s scan_filename=output_nx_file, 677s ref_start_filename=nx_tomo_ref_start, 677s ref_end_filename=nx_tomo_ref_end, 677s mixing_factor=mixing_factor, 677s save_intermediated=save_intermediated, 677s reuse_intermediated=reuse_intermediated, 677s ) 677s 677s nxtomomill/utils/tests/test_flat_reducer.py:105: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 677s fd_start, fd_start_as_dict = extract_darks_flats( 677s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 677s nxt.load(basename, data_path=entry_name) 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s self = 677s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 677s detector_data_as = 'as_data_url' 677s 677s def load( 677s self, file_path: str, data_path: str, detector_data_as="as_data_url" 677s ) -> NXobject: 677s """ 677s Load NXtomo instance from file_path and data_path 677s 677s :param file_path: hdf5 file path containing the NXtomo 677s :param data_path: location of the NXtomo 677s :param detector_data_as: how to load detector data. Can be: 677s * "as_virtual_source": load it as h5py's VirtualGroup 677s * "as_data_url": load it as silx's DataUrl 677s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 677s """ 677s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 677s if detector_data_as not in possible_as_values: 677s raise ValueError( 677s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 677s ) 677s 677s if not os.path.exists(file_path): 677s > raise IOError(f"{file_path} does not exists") 677s E OSError: REF_B_0000_0.nx does not exists 677s 677s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 677s ------------------------------ Captured log call ------------------------------- 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_True_T0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_True_T0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_True_T0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s _____________________ test_flat_reducer[False-True-False] ______________________ 677s 677s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_True_F0') 677s stage_scan_have_flats = False, save_intermediated = True 677s reuse_intermediated = False 677s 677s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 677s @pytest.mark.parametrize("save_intermediated", (True, False)) 677s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 677s def test_flat_reducer( 677s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 677s ): 677s """ 677s test execution of `flat_reducer` function. 677s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 677s 'reference' acquisition (converting projections to reduced flats) 677s """ 677s raw_data_dir = tmp_path / "raw" 677s n_stage = 5 677s # create bliss scan to be converted to NXtomo 677s acqu = MockBlissAcquisition( 677s n_sample=n_stage, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=1 if stage_scan_have_flats else 0, 677s output_dir=raw_data_dir, 677s file_name_z_fill=4, 677s ) 677s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 677s 677s # scan for flat at start 677s ref_start = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_B_0000", 677s ) 677s bliss_ref_start = ref_start.samples[0].sample_file 677s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_start, 677s nx_tomo_ref_start, 677s ) 677s # scan for flat at end 677s ref_end = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_E_0000", 677s ) 677s bliss_ref_end = ref_end.samples[0].sample_file 677s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_end, 677s nx_tomo_ref_end, 677s ) 677s 677s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 677s mixing_factor = (i_stage + 1) / (n_stage) 677s 677s # convert from .h5 to .nx 677s output_nx_file = bliss_file_name.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_file_name, 677s output_nx_file, 677s ) 677s 677s # apply fly reducer 677s > flat_reducer( 677s scan_filename=output_nx_file, 677s ref_start_filename=nx_tomo_ref_start, 677s ref_end_filename=nx_tomo_ref_end, 677s mixing_factor=mixing_factor, 677s save_intermediated=save_intermediated, 677s reuse_intermediated=reuse_intermediated, 677s ) 677s 677s nxtomomill/utils/tests/test_flat_reducer.py:105: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 677s fd_start, fd_start_as_dict = extract_darks_flats( 677s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 677s nxt.load(basename, data_path=entry_name) 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s self = 677s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 677s detector_data_as = 'as_data_url' 677s 677s def load( 677s self, file_path: str, data_path: str, detector_data_as="as_data_url" 677s ) -> NXobject: 677s """ 677s Load NXtomo instance from file_path and data_path 677s 677s :param file_path: hdf5 file path containing the NXtomo 677s :param data_path: location of the NXtomo 677s :param detector_data_as: how to load detector data. Can be: 677s * "as_virtual_source": load it as h5py's VirtualGroup 677s * "as_data_url": load it as silx's DataUrl 677s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 677s """ 677s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 677s if detector_data_as not in possible_as_values: 677s raise ValueError( 677s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 677s ) 677s 677s if not os.path.exists(file_path): 677s > raise IOError(f"{file_path} does not exists") 677s E OSError: REF_B_0000_0.nx does not exists 677s 677s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 677s ------------------------------ Captured log call ------------------------------- 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_True_F0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_True_F0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_True_F0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s _____________________ test_flat_reducer[False-False-True] ______________________ 677s 677s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_False_0') 677s stage_scan_have_flats = True, save_intermediated = False 677s reuse_intermediated = False 677s 677s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 677s @pytest.mark.parametrize("save_intermediated", (True, False)) 677s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 677s def test_flat_reducer( 677s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 677s ): 677s """ 677s test execution of `flat_reducer` function. 677s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 677s 'reference' acquisition (converting projections to reduced flats) 677s """ 677s raw_data_dir = tmp_path / "raw" 677s n_stage = 5 677s # create bliss scan to be converted to NXtomo 677s acqu = MockBlissAcquisition( 677s n_sample=n_stage, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=1 if stage_scan_have_flats else 0, 677s output_dir=raw_data_dir, 677s file_name_z_fill=4, 677s ) 677s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 677s 677s # scan for flat at start 677s ref_start = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_B_0000", 677s ) 677s bliss_ref_start = ref_start.samples[0].sample_file 677s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_start, 677s nx_tomo_ref_start, 677s ) 677s # scan for flat at end 677s ref_end = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_E_0000", 677s ) 677s bliss_ref_end = ref_end.samples[0].sample_file 677s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_end, 677s nx_tomo_ref_end, 677s ) 677s 677s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 677s mixing_factor = (i_stage + 1) / (n_stage) 677s 677s # convert from .h5 to .nx 677s output_nx_file = bliss_file_name.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_file_name, 677s output_nx_file, 677s ) 677s 677s # apply fly reducer 677s > flat_reducer( 677s scan_filename=output_nx_file, 677s ref_start_filename=nx_tomo_ref_start, 677s ref_end_filename=nx_tomo_ref_end, 677s mixing_factor=mixing_factor, 677s save_intermediated=save_intermediated, 677s reuse_intermediated=reuse_intermediated, 677s ) 677s 677s nxtomomill/utils/tests/test_flat_reducer.py:105: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 677s fd_start, fd_start_as_dict = extract_darks_flats( 677s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 677s nxt.load(basename, data_path=entry_name) 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s self = 677s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 677s detector_data_as = 'as_data_url' 677s 677s def load( 677s self, file_path: str, data_path: str, detector_data_as="as_data_url" 677s ) -> NXobject: 677s """ 677s Load NXtomo instance from file_path and data_path 677s 677s :param file_path: hdf5 file path containing the NXtomo 677s :param data_path: location of the NXtomo 677s :param detector_data_as: how to load detector data. Can be: 677s * "as_virtual_source": load it as h5py's VirtualGroup 677s * "as_data_url": load it as silx's DataUrl 677s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 677s """ 677s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 677s if detector_data_as not in possible_as_values: 677s raise ValueError( 677s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 677s ) 677s 677s if not os.path.exists(file_path): 677s > raise IOError(f"{file_path} does not exists") 677s E OSError: REF_B_0000_0.nx does not exists 677s 677s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 677s ------------------------------ Captured log call ------------------------------- 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_False_0/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_False_0/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_False_0/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s _____________________ test_flat_reducer[False-False-False] _____________________ 677s 677s tmp_path = PosixPath('/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_False_1') 677s stage_scan_have_flats = False, save_intermediated = False 677s reuse_intermediated = False 677s 677s @pytest.mark.parametrize("stage_scan_have_flats", (True, False)) 677s @pytest.mark.parametrize("save_intermediated", (True, False)) 677s @pytest.mark.parametrize("reuse_intermediated", (True, False)) 677s def test_flat_reducer( 677s tmp_path, stage_scan_have_flats, save_intermediated, reuse_intermediated 677s ): 677s """ 677s test execution of `flat_reducer` function. 677s This function is going through a set of bliss acquisition to create corresponding NXtomo and add them dark and flats obtained from 677s 'reference' acquisition (converting projections to reduced flats) 677s """ 677s raw_data_dir = tmp_path / "raw" 677s n_stage = 5 677s # create bliss scan to be converted to NXtomo 677s acqu = MockBlissAcquisition( 677s n_sample=n_stage, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=1 if stage_scan_have_flats else 0, 677s output_dir=raw_data_dir, 677s file_name_z_fill=4, 677s ) 677s stages_bliss_file = [sample.sample_file for sample in acqu.samples] 677s 677s # scan for flat at start 677s ref_start = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_B_0000", 677s ) 677s bliss_ref_start = ref_start.samples[0].sample_file 677s nx_tomo_ref_start = bliss_ref_start.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_start, 677s nx_tomo_ref_start, 677s ) 677s # scan for flat at end 677s ref_end = MockBlissAcquisition( 677s n_sample=1, 677s n_sequence=1, 677s n_scan_per_sequence=10, 677s n_darks=2, 677s n_flats=0, 677s output_dir=raw_data_dir, 677s file_name_prefix="REF_E_0000", 677s ) 677s bliss_ref_end = ref_end.samples[0].sample_file 677s nx_tomo_ref_end = bliss_ref_end.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_ref_end, 677s nx_tomo_ref_end, 677s ) 677s 677s for i_stage, bliss_file_name in enumerate(stages_bliss_file): 677s mixing_factor = (i_stage + 1) / (n_stage) 677s 677s # convert from .h5 to .nx 677s output_nx_file = bliss_file_name.replace(".h5", ".nx") 677s _convert_bliss2nx( 677s bliss_file_name, 677s output_nx_file, 677s ) 677s 677s # apply fly reducer 677s > flat_reducer( 677s scan_filename=output_nx_file, 677s ref_start_filename=nx_tomo_ref_start, 677s ref_end_filename=nx_tomo_ref_end, 677s mixing_factor=mixing_factor, 677s save_intermediated=save_intermediated, 677s reuse_intermediated=reuse_intermediated, 677s ) 677s 677s nxtomomill/utils/tests/test_flat_reducer.py:105: 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s nxtomomill/utils/flat_reducer.py:222: in flat_reducer 677s fd_start, fd_start_as_dict = extract_darks_flats( 677s nxtomomill/utils/flat_reducer.py:57: in extract_darks_flats 677s nxt.load(basename, data_path=entry_name) 677s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 677s 677s self = 677s file_path = 'REF_B_0000_0.nx', data_path = 'entry0000' 677s detector_data_as = 'as_data_url' 677s 677s def load( 677s self, file_path: str, data_path: str, detector_data_as="as_data_url" 677s ) -> NXobject: 677s """ 677s Load NXtomo instance from file_path and data_path 677s 677s :param file_path: hdf5 file path containing the NXtomo 677s :param data_path: location of the NXtomo 677s :param detector_data_as: how to load detector data. Can be: 677s * "as_virtual_source": load it as h5py's VirtualGroup 677s * "as_data_url": load it as silx's DataUrl 677s * "as_numpy_array": load them as a numpy array (warning: can be memory consuming since all the data will be loaded) 677s """ 677s possible_as_values = ("as_virtual_source", "as_data_url", "as_numpy_array") 677s if detector_data_as not in possible_as_values: 677s raise ValueError( 677s f"detector_data_as is expected to be in {possible_as_values} and not {detector_data_as}" 677s ) 677s 677s if not os.path.exists(file_path): 677s > raise IOError(f"{file_path} does not exists") 677s E OSError: REF_B_0000_0.nx does not exists 677s 677s /usr/lib/python3/dist-packages/nxtomo/application/nxtomo.py:326: OSError 677s ------------------------------ Captured log call ------------------------------- 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_False_1/raw/REF_B_0000_0/REF_B_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_False_1/raw/REF_E_0000_0/REF_E_0000_0.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s ERROR nxtomomill.converter.hdf5.hdf5converter:hdf5converter.py:580 Fails to write DataUrl(valid=True, scheme='silx', file_path='/tmp/pytest-of-ubuntu/pytest-1/test_flat_reducer_False_False_1/raw/sample_0000/sample_0000.h5', data_path='/1.1', data_slice=None). Error is module 'numpy' has no attribute 'float128' 677s =============================== warnings summary =============================== 677s ../../../../usr/lib/python3/dist-packages/tomoscan/framereducer/framereducerbase.py:4 677s /usr/lib/python3/dist-packages/tomoscan/framereducer/framereducerbase.py:4: DeprecationWarning: numpy.core.numerictypes is deprecated and has been renamed to numpy._core.numerictypes. The numpy._core namespace contains private NumPy internals and its use is discouraged, as NumPy internals can change without warning in any release. In practice, most real-world usage of numpy.core is to access functionality in the public NumPy API. If that is the case, use the public NumPy API. If not, you are using NumPy internals. If you would still like to access an internal attribute, use numpy._core.numerictypes.generic. 677s from numpy.core.numerictypes import generic as numy_generic 677s 677s nxtomomill/app/tests/test_edf2nx_app.py::test_edf2nx_application 677s /usr/lib/python3/dist-packages/tqdm/std.py:636: TqdmWarning: clamping frac to range [0, 1] 677s full_bar = Bar(frac, 677s 677s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 677s =========================== short test summary info ============================ 677s FAILED nxtomomill/converter/hdf5/tests/test_hdf5converter.py::test_machine_electric_current 677s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-True-True] 677s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-True-False] 677s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-False-True] 677s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[True-False-False] 677s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-True-True] 677s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-True-False] 677s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-False-True] 677s FAILED nxtomomill/utils/tests/test_flat_reducer.py::test_flat_reducer[False-False-False] 677s = 9 failed, 159 passed, 3 deselected, 2 warnings, 27 subtests passed in 48.54s = 678s E: pybuild pybuild:483: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.EjOyGZ/autopkgtest_tmp/build; {interpreter} -X faulthandler -m pytest -p no:faulthandler -v -k "not test_fluo2nx_application_" 678s pybuild-autopkgtest: error: pybuild --autopkgtest -i python{version} -p "3.14 3.13" returned exit code 13 678s make: *** [/tmp/ggktD_4UHj/run:4: pybuild-autopkgtest] Error 25 678s pybuild-autopkgtest: error: /tmp/ggktD_4UHj/run pybuild-autopkgtest returned exit code 2 678s autopkgtest [16:46:42]: test pybuild-autopkgtest: -----------------------] 682s autopkgtest [16:46:46]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 682s pybuild-autopkgtest FAIL non-zero exit status 25 686s autopkgtest [16:46:50]: @@@@@@@@@@@@@@@@@@@@ summary 686s pybuild-autopkgtest FAIL non-zero exit status 25