0s autopkgtest [18:18:54]: starting date and time: 2026-02-09 18:18:54+0000 0s autopkgtest [18:18:54]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [18:18:54]: host juju-7f2275-prod-proposed-migration-environment-20; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.z7lan588/out --timeout-copy=6000 --needs-internet=try --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:libsbml,src:apbs,src:binutils,src:bornagain,src:ccls,src:cp2k,src:createrepo-c,src:dolfinx-mpc,src:dracut,src:gcc-15,src:gcc-16,src:gcc-snapshot,src:gdm3,src:glycin,src:gnuradio,src:hkl,src:hmmer,src:lammps,src:libixion,src:liborcus,src:libpeas,src:libreoffice,src:link-grammar,src:mosquitto,src:nodejs,src:open-iscsi,src:opencamlib,src:orthanc-python,src:psychopy,src:pyside2,src:python-pyvista,src:python3-defaults,src:rumur,src:trojan,src:wmanager,src:zxing-cpp --apt-upgrade python-cobra --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=libsbml/5.20.5+dfsg-2 apbs/3.4.1-7build1 binutils/2.46-1ubuntu1 bornagain/23.0-5build1 ccls/0.20250815-0ubuntu1 cp2k/2025.2-3 createrepo-c/1.2.1-2build1 dolfinx-mpc/0.10.1-1build1 dracut/110-1ubuntu1 gcc-15/15.2.0-13ubuntu3 gcc-16/16-20260208-1ubuntu1 gcc-snapshot/1:20260203-0ubuntu3 gdm3/50~alpha.1-0ubuntu1 glycin/2.0.7+ds-4ubuntu1 gnuradio/3.10.12.0-5.1ubuntu1 hkl/5.1.4-1 hmmer/3.4+dfsg-3 lammps/20251210+dfsg-1build1 libixion/0.20.0-7 liborcus/0.21.0-4 libpeas/1.38.1-1ubuntu2 libreoffice/4:25.8.4~rc2-0ubuntu3 link-grammar/5.13.0+dfsg-1build1 mosquitto/2.0.22-5 nodejs/22.22.0+dfsg+~cs22.19.6-1ubuntu3 open-iscsi/2.1.11-3ubuntu2 opencamlib/2023.01.11-6 orthanc-python/7.0+ds-1build2 psychopy/2023.2.4+dfsg-4 pyside2/5.15.18-1build1 python-pyvista/0.46.5-7 python3-defaults/3.14.2-1 rumur/2025.08.31-1 trojan/1.16.0-1.1build4 wmanager/0.3.1-3build1 zxing-cpp/2.3.0-5' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-cpu2-ram4-disk20-ppc64el --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-20@sto01-ppc64el-26.secgroup --name adt-resolute-ppc64el-python-cobra-20260209-181853-juju-7f2275-prod-proposed-migration-environment-20-4f59b350-be93-45b5-879a-635fd35a607b --image adt/ubuntu-resolute-ppc64el-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-20 --net-id=net_prod-autopkgtest-workers-ppc64el -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 3s Creating nova instance adt-resolute-ppc64el-python-cobra-20260209-181853-juju-7f2275-prod-proposed-migration-environment-20-4f59b350-be93-45b5-879a-635fd35a607b from image adt/ubuntu-resolute-ppc64el-server-20260209.img (UUID f7f31435-4cd1-4090-aa55-59cfefa097ca)... 52s autopkgtest [18:19:46]: testbed dpkg architecture: ppc64el 52s autopkgtest [18:19:46]: testbed apt version: 3.1.15 52s autopkgtest [18:19:46]: @@@@@@@@@@@@@@@@@@@@ test bed setup 52s autopkgtest [18:19:46]: testbed release detected to be: None 53s autopkgtest [18:19:47]: updating testbed package index (apt update) 53s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 53s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 54s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 54s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 54s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [174 kB] 54s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1630 kB] 54s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [1764 B] 54s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [29.4 kB] 54s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el Packages [241 kB] 54s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el Packages [1528 kB] 54s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse ppc64el Packages [19.4 kB] 54s Fetched 3747 kB in 1s (4096 kB/s) 55s Reading package lists... 56s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 56s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 56s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 56s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 57s Reading package lists... 57s Reading package lists... 57s Building dependency tree... 57s Reading state information... 57s Calculating upgrade... 57s The following packages were automatically installed and are no longer required: 57s libpython3.13-minimal libpython3.13-stdlib python3.13 python3.13-minimal 57s Use 'sudo apt autoremove' to remove them. 57s The following NEW packages will be installed: 57s gcc-16-base python3.14 python3.14-minimal 57s The following packages will be upgraded: 57s binutils binutils-common binutils-powerpc64le-linux-gnu cryptsetup-bin 57s dracut-install iproute2 iptables libatomic1 libbinutils libcryptsetup12 57s libctf-nobfd0 libctf0 libgcc-s1 libip4tc2 libip6tc2 libpython3-stdlib 57s libsframe3 libstdc++6 libxtables12 python3 python3-gdbm python3-minimal wget 57s 23 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. 57s Need to get 10.0 MB of archives. 57s After this operation, 9925 kB of additional disk space will be used. 57s Get:1 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.14-minimal ppc64el 3.14.2-1 [2712 kB] 57s Get:2 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-minimal ppc64el 3.14.2-1 [28.2 kB] 57s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3 ppc64el 3.14.2-1 [22.9 kB] 57s Get:4 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3.14 ppc64el 3.14.2-1 [816 kB] 57s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libpython3-stdlib ppc64el 3.14.2-1 [10.9 kB] 57s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el gcc-16-base ppc64el 16-20260208-1ubuntu1 [59.7 kB] 57s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libgcc-s1 ppc64el 16-20260208-1ubuntu1 [39.3 kB] 57s Get:8 http://ftpmaster.internal/ubuntu resolute/main ppc64el iptables ppc64el 1.8.11-2ubuntu3 [464 kB] 57s Get:9 http://ftpmaster.internal/ubuntu resolute/main ppc64el libip4tc2 ppc64el 1.8.11-2ubuntu3 [27.8 kB] 57s Get:10 http://ftpmaster.internal/ubuntu resolute/main ppc64el libip6tc2 ppc64el 1.8.11-2ubuntu3 [28.2 kB] 57s Get:11 http://ftpmaster.internal/ubuntu resolute/main ppc64el libxtables12 ppc64el 1.8.11-2ubuntu3 [41.2 kB] 58s Get:12 http://ftpmaster.internal/ubuntu resolute/main ppc64el iproute2 ppc64el 6.18.0-1ubuntu1 [1458 kB] 58s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libatomic1 ppc64el 16-20260208-1ubuntu1 [11.0 kB] 58s Get:14 http://ftpmaster.internal/ubuntu resolute/main ppc64el libcryptsetup12 ppc64el 2:2.8.0-1ubuntu3 [404 kB] 58s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libstdc++6 ppc64el 16-20260208-1ubuntu1 [930 kB] 58s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el python3-gdbm ppc64el 3.14.2-1 [11.1 kB] 58s Get:17 http://ftpmaster.internal/ubuntu resolute/main ppc64el wget ppc64el 1.25.0-2ubuntu4 [401 kB] 58s Get:18 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libctf0 ppc64el 2.46-1ubuntu1 [118 kB] 58s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libctf-nobfd0 ppc64el 2.46-1ubuntu1 [121 kB] 58s Get:20 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils-powerpc64le-linux-gnu ppc64el 2.46-1ubuntu1 [1027 kB] 58s Get:21 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libbinutils ppc64el 2.46-1ubuntu1 [735 kB] 58s Get:22 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils ppc64el 2.46-1ubuntu1 [3258 B] 58s Get:23 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el binutils-common ppc64el 2.46-1ubuntu1 [222 kB] 58s Get:24 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libsframe3 ppc64el 2.46-1ubuntu1 [23.7 kB] 58s Get:25 http://ftpmaster.internal/ubuntu resolute/main ppc64el cryptsetup-bin ppc64el 2:2.8.0-1ubuntu3 [250 kB] 58s Get:26 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el dracut-install ppc64el 110-1ubuntu1 [51.6 kB] 58s dpkg-preconfigure: unable to re-open stdin: No such file or directory 58s Fetched 10.0 MB in 1s (12.3 MB/s) 58s Selecting previously unselected package python3.14-minimal. 59s (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 ... 122003 files and directories currently installed.) 59s Preparing to unpack .../python3.14-minimal_3.14.2-1_ppc64el.deb ... 59s Unpacking python3.14-minimal (3.14.2-1) ... 59s Setting up python3.14-minimal (3.14.2-1) ... 61s (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 ... 122012 files and directories currently installed.) 61s Preparing to unpack .../python3-minimal_3.14.2-1_ppc64el.deb ... 61s Unpacking python3-minimal (3.14.2-1) over (3.13.9-3) ... 62s Setting up python3-minimal (3.14.2-1) ... 62s (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 ... 122012 files and directories currently installed.) 62s Preparing to unpack .../python3_3.14.2-1_ppc64el.deb ... 62s running python pre-rtupdate hooks for python3.14... 62s Unpacking python3 (3.14.2-1) over (3.13.9-3) ... 62s Selecting previously unselected package python3.14. 62s Preparing to unpack .../python3.14_3.14.2-1_ppc64el.deb ... 62s Unpacking python3.14 (3.14.2-1) ... 62s Preparing to unpack .../libpython3-stdlib_3.14.2-1_ppc64el.deb ... 62s Unpacking libpython3-stdlib:ppc64el (3.14.2-1) over (3.13.9-3) ... 62s Selecting previously unselected package gcc-16-base:ppc64el. 62s Preparing to unpack .../gcc-16-base_16-20260208-1ubuntu1_ppc64el.deb ... 62s Unpacking gcc-16-base:ppc64el (16-20260208-1ubuntu1) ... 62s Setting up gcc-16-base:ppc64el (16-20260208-1ubuntu1) ... 62s (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 ... 122035 files and directories currently installed.) 62s Preparing to unpack .../libgcc-s1_16-20260208-1ubuntu1_ppc64el.deb ... 62s Unpacking libgcc-s1:ppc64el (16-20260208-1ubuntu1) over (15.2.0-12ubuntu1) ... 63s Setting up libgcc-s1:ppc64el (16-20260208-1ubuntu1) ... 63s (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 ... 122035 files and directories currently installed.) 63s Preparing to unpack .../00-iptables_1.8.11-2ubuntu3_ppc64el.deb ... 63s Unpacking iptables (1.8.11-2ubuntu3) over (1.8.11-2ubuntu2) ... 63s Preparing to unpack .../01-libip4tc2_1.8.11-2ubuntu3_ppc64el.deb ... 63s Unpacking libip4tc2:ppc64el (1.8.11-2ubuntu3) over (1.8.11-2ubuntu2) ... 63s Preparing to unpack .../02-libip6tc2_1.8.11-2ubuntu3_ppc64el.deb ... 63s Unpacking libip6tc2:ppc64el (1.8.11-2ubuntu3) over (1.8.11-2ubuntu2) ... 63s Preparing to unpack .../03-libxtables12_1.8.11-2ubuntu3_ppc64el.deb ... 63s Unpacking libxtables12:ppc64el (1.8.11-2ubuntu3) over (1.8.11-2ubuntu2) ... 63s Preparing to unpack .../04-iproute2_6.18.0-1ubuntu1_ppc64el.deb ... 63s Unpacking iproute2 (6.18.0-1ubuntu1) over (6.16.0-1ubuntu3) ... 64s Preparing to unpack .../05-libatomic1_16-20260208-1ubuntu1_ppc64el.deb ... 64s Unpacking libatomic1:ppc64el (16-20260208-1ubuntu1) over (15.2.0-12ubuntu1) ... 64s Preparing to unpack .../06-libcryptsetup12_2%3a2.8.0-1ubuntu3_ppc64el.deb ... 64s Unpacking libcryptsetup12:ppc64el (2:2.8.0-1ubuntu3) over (2:2.8.0-1ubuntu2) ... 64s Preparing to unpack .../07-libstdc++6_16-20260208-1ubuntu1_ppc64el.deb ... 64s Unpacking libstdc++6:ppc64el (16-20260208-1ubuntu1) over (15.2.0-12ubuntu1) ... 64s Preparing to unpack .../08-python3-gdbm_3.14.2-1_ppc64el.deb ... 64s Unpacking python3-gdbm (3.14.2-1) over (3.13.9-3) ... 64s Preparing to unpack .../09-wget_1.25.0-2ubuntu4_ppc64el.deb ... 64s Unpacking wget (1.25.0-2ubuntu4) over (1.25.0-2ubuntu3) ... 64s Preparing to unpack .../10-libctf0_2.46-1ubuntu1_ppc64el.deb ... 64s Unpacking libctf0:ppc64el (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 64s Preparing to unpack .../11-libctf-nobfd0_2.46-1ubuntu1_ppc64el.deb ... 64s Unpacking libctf-nobfd0:ppc64el (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 64s Preparing to unpack .../12-binutils-powerpc64le-linux-gnu_2.46-1ubuntu1_ppc64el.deb ... 64s Unpacking binutils-powerpc64le-linux-gnu (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 65s Preparing to unpack .../13-libbinutils_2.46-1ubuntu1_ppc64el.deb ... 65s Unpacking libbinutils:ppc64el (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 65s Preparing to unpack .../14-binutils_2.46-1ubuntu1_ppc64el.deb ... 65s Unpacking binutils (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 65s Preparing to unpack .../15-binutils-common_2.46-1ubuntu1_ppc64el.deb ... 65s Unpacking binutils-common:ppc64el (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 65s Preparing to unpack .../16-libsframe3_2.46-1ubuntu1_ppc64el.deb ... 65s Unpacking libsframe3:ppc64el (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 65s Preparing to unpack .../17-cryptsetup-bin_2%3a2.8.0-1ubuntu3_ppc64el.deb ... 65s Unpacking cryptsetup-bin (2:2.8.0-1ubuntu3) over (2:2.8.0-1ubuntu2) ... 65s Preparing to unpack .../18-dracut-install_110-1ubuntu1_ppc64el.deb ... 65s Unpacking dracut-install (110-1ubuntu1) over (109-9ubuntu1) ... 65s Setting up libip4tc2:ppc64el (1.8.11-2ubuntu3) ... 65s Setting up wget (1.25.0-2ubuntu4) ... 65s Setting up libip6tc2:ppc64el (1.8.11-2ubuntu3) ... 66s Setting up binutils-common:ppc64el (2.46-1ubuntu1) ... 66s Setting up libsframe3:ppc64el (2.46-1ubuntu1) ... 66s Setting up libctf-nobfd0:ppc64el (2.46-1ubuntu1) ... 66s Setting up libatomic1:ppc64el (16-20260208-1ubuntu1) ... 66s Setting up libxtables12:ppc64el (1.8.11-2ubuntu3) ... 66s Setting up dracut-install (110-1ubuntu1) ... 66s Setting up libcryptsetup12:ppc64el (2:2.8.0-1ubuntu3) ... 66s Setting up python3.14 (3.14.2-1) ... 67s Setting up libbinutils:ppc64el (2.46-1ubuntu1) ... 68s Setting up libstdc++6:ppc64el (16-20260208-1ubuntu1) ... 68s Setting up libpython3-stdlib:ppc64el (3.14.2-1) ... 68s Setting up libctf0:ppc64el (2.46-1ubuntu1) ... 68s Setting up cryptsetup-bin (2:2.8.0-1ubuntu3) ... 68s Setting up python3-gdbm (3.14.2-1) ... 68s Setting up iptables (1.8.11-2ubuntu3) ... 68s Setting up iproute2 (6.18.0-1ubuntu1) ... 68s Setting up python3 (3.14.2-1) ... 68s running python rtupdate hooks for python3.14... 68s running python post-rtupdate hooks for python3.14... 68s Setting up binutils-powerpc64le-linux-gnu (2.46-1ubuntu1) ... 68s Setting up binutils (2.46-1ubuntu1) ... 68s Processing triggers for install-info (7.2-5) ... 68s Processing triggers for libc-bin (2.42-2ubuntu4) ... 68s Processing triggers for systemd (259-1ubuntu3) ... 68s Processing triggers for man-db (2.13.1-1build1) ... 72s autopkgtest [18:20:06]: upgrading testbed (apt dist-upgrade and autopurge) 72s Reading package lists... 72s Building dependency tree... 72s Reading state information... 72s Calculating upgrade... 72s The following packages were automatically installed and are no longer required: 72s libpython3.13-minimal libpython3.13-stdlib python3.13 python3.13-minimal 72s Use 'sudo apt autoremove' to remove them. 72s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 72s Reading package lists... 73s Building dependency tree... 73s Reading state information... 73s Solving dependencies... 73s The following packages will be REMOVED: 73s libpython3.13-minimal* libpython3.13-stdlib* python3.13* python3.13-minimal* 73s 0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded. 73s After this operation, 26.1 MB disk space will be freed. 73s (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 ... 122036 files and directories currently installed.) 73s Removing python3.13 (3.13.11-1) ... 73s Removing libpython3.13-stdlib:ppc64el (3.13.11-1) ... 73s Removing python3.13-minimal (3.13.11-1) ... 75s Removing libpython3.13-minimal:ppc64el (3.13.11-1) ... 75s Processing triggers for man-db (2.13.1-1build1) ... 75s Processing triggers for systemd (259-1ubuntu3) ... 75s (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 ... 121297 files and directories currently installed.) 75s Purging configuration files for libpython3.13-minimal:ppc64el (3.13.11-1) ... 75s Purging configuration files for python3.13-minimal (3.13.11-1) ... 78s autopkgtest [18:20:12]: testbed running kernel: Linux 6.19.0-3-generic #3-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 23 20:13:51 UTC 2026 78s autopkgtest [18:20:12]: @@@@@@@@@@@@@@@@@@@@ apt-source python-cobra 80s Get:1 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (dsc) [3080 B] 80s Get:2 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (tar) [3651 kB] 80s Get:3 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (diff) [11.1 kB] 80s gpgv: Signature made Wed Jul 2 22:43:59 2025 UTC 80s gpgv: using RSA key 8F6DE104377F3B11E741748731F3144544A1741A 80s gpgv: issuer "tchet@debian.org" 80s gpgv: Can't check signature: No public key 80s dpkg-source: warning: cannot verify inline signature for ./python-cobra_0.29.1-3.dsc: no acceptable signature found 81s autopkgtest [18:20:15]: testing package python-cobra version 0.29.1-3 81s autopkgtest [18:20:15]: build not needed 81s autopkgtest [18:20:15]: test run-unit-test: preparing testbed 82s Reading package lists... 82s Building dependency tree... 82s Reading state information... 82s Solving dependencies... 82s The following NEW packages will be installed: 82s diffstat gettext libamd3 libblas3 libcolamd3 libgfortran5 libglpk40 libgomp1 82s liblapack3 libltdl7 libqhull-r8.0 libsuitesparseconfig7 python-cobra-data 82s python3-annotated-types python3-anyio python3-click python3-cobra 82s python3-cpuinfo python3-decorator python3-depinfo python3-diskcache 82s python3-dnspython python3-email-validator python3-h11 python3-httpcore 82s python3-httpx python3-iniconfig python3-mpmath python3-numpy 82s python3-numpy-dev python3-optlang python3-pandas python3-pandas-lib 82s python3-platformdirs python3-pluggy python3-pydantic python3-pydantic-core 82s python3-pytest python3-pytest-benchmark python3-pytest-mock python3-pytz 82s python3-ruamel.yaml python3-ruamel.yaml.clib python3-sbml5 python3-scipy 82s python3-sniffio python3-swiglpk python3-sympy python3-tabulate 82s python3-typing-inspection quilt 82s 0 upgraded, 51 newly installed, 0 to remove and 0 not upgraded. 82s Need to get 64.2 MB of archives. 82s After this operation, 379 MB of additional disk space will be used. 82s Get:1 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-numpy-dev ppc64el 1:2.3.5+ds-3 [153 kB] 82s Get:2 http://ftpmaster.internal/ubuntu resolute/main ppc64el libblas3 ppc64el 3.12.1-7ubuntu1 [291 kB] 82s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libgfortran5 ppc64el 16-20260208-1ubuntu1 [613 kB] 82s Get:4 http://ftpmaster.internal/ubuntu resolute/main ppc64el liblapack3 ppc64el 3.12.1-7ubuntu1 [2960 kB] 82s Get:5 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-numpy ppc64el 1:2.3.5+ds-3 [5722 kB] 82s Get:6 http://ftpmaster.internal/ubuntu resolute/main ppc64el diffstat ppc64el 1.68-1 [34.9 kB] 82s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main ppc64el libgomp1 ppc64el 16-20260208-1ubuntu1 [176 kB] 82s Get:8 http://ftpmaster.internal/ubuntu resolute/main ppc64el gettext ppc64el 0.23.2-1 [1177 kB] 82s Get:9 http://ftpmaster.internal/ubuntu resolute/main ppc64el libsuitesparseconfig7 ppc64el 1:7.12.1+dfsg-1 [22.1 kB] 82s Get:10 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libamd3 ppc64el 1:7.12.1+dfsg-1 [44.6 kB] 82s Get:11 http://ftpmaster.internal/ubuntu resolute/main ppc64el libcolamd3 ppc64el 1:7.12.1+dfsg-1 [31.0 kB] 82s Get:12 http://ftpmaster.internal/ubuntu resolute/main ppc64el libltdl7 ppc64el 2.5.4-9 [51.5 kB] 82s Get:13 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libglpk40 ppc64el 5.0-2 [488 kB] 82s Get:14 http://ftpmaster.internal/ubuntu resolute/universe ppc64el libqhull-r8.0 ppc64el 2020.2-8 [227 kB] 82s Get:15 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python-cobra-data all 0.29.1-3 [1611 kB] 82s Get:16 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-annotated-types all 0.7.0-1 [19.4 kB] 82s Get:17 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-sniffio all 1.3.1-1 [7262 B] 82s Get:18 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-anyio all 4.11.0-3 [72.6 kB] 82s Get:19 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-click all 8.2.0+0.really.8.1.8-1build1 [80.2 kB] 83s Get:20 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-depinfo ppc64el 2.2.0-4 [11.2 kB] 83s Get:21 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-diskcache all 5.6.3-1 [35.1 kB] 83s Get:22 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-h11 all 0.14.0-1.1 [51.6 kB] 83s Get:23 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-httpcore all 1.0.9-1 [38.9 kB] 83s Get:24 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-httpx all 0.28.1-1build1 [59.4 kB] 83s Get:25 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-swiglpk ppc64el 5.0.10-2build3 [117 kB] 83s Get:26 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-mpmath all 1.3.0-2 [423 kB] 83s Get:27 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-sympy all 1.14.0-2 [4306 kB] 83s Get:28 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-optlang all 1.8.3-1 [5368 kB] 83s Get:29 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pytz all 2025.2-5 [32.4 kB] 83s Get:30 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pandas-lib ppc64el 2.3.3+dfsg-3 [7213 kB] 84s Get:31 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pandas all 2.3.3+dfsg-3 [2948 kB] 84s Get:32 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-platformdirs all 4.5.1-1 [17.1 kB] 84s Get:33 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pydantic-core ppc64el 2.41.5-2 [2313 kB] 84s Get:34 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-typing-inspection all 0.4.2-1 [13.1 kB] 84s Get:35 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-dnspython all 2.7.0-1ubuntu2 [167 kB] 84s Get:36 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-email-validator all 2.2.0-1 [28.5 kB] 84s Get:37 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pydantic ppc64el 2.12.5-2 [312 kB] 84s Get:38 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-ruamel.yaml.clib ppc64el 0.2.15+ds-1 [230 kB] 84s Get:39 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-ruamel.yaml all 0.18.10+ds-1 [127 kB] 84s Get:40 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-tabulate all 0.9.0-1build1 [45.4 kB] 84s Get:41 http://ftpmaster.internal/ubuntu resolute-proposed/universe ppc64el python3-sbml5 ppc64el 5.20.5+dfsg-2 [3863 kB] 85s Get:42 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-cobra ppc64el 0.29.1-3 [1118 kB] 85s Get:43 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-cpuinfo all 9.0.0+git20221119-3 [21.7 kB] 85s Get:44 http://ftpmaster.internal/ubuntu resolute/main ppc64el python3-decorator all 5.2.1-2 [28.1 kB] 85s Get:45 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-iniconfig all 2.1.0-2 [6962 B] 85s Get:46 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pluggy all 1.6.0-2 [21.1 kB] 85s Get:47 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pytest all 9.0.2-2 [277 kB] 85s Get:48 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pytest-benchmark all 5.2.3-1 [40.0 kB] 85s Get:49 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-pytest-mock all 3.15.1-1 [11.9 kB] 85s Get:50 http://ftpmaster.internal/ubuntu resolute/universe ppc64el quilt all 0.68-1 [439 kB] 85s Get:51 http://ftpmaster.internal/ubuntu resolute/universe ppc64el python3-scipy ppc64el 1.16.3-4 [20.7 MB] 86s Fetched 64.2 MB in 4s (15.9 MB/s) 86s Selecting previously unselected package python3-numpy-dev:ppc64el. 86s (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 ... 121297 files and directories currently installed.) 86s Preparing to unpack .../00-python3-numpy-dev_1%3a2.3.5+ds-3_ppc64el.deb ... 86s Unpacking python3-numpy-dev:ppc64el (1:2.3.5+ds-3) ... 86s Selecting previously unselected package libblas3:ppc64el. 86s Preparing to unpack .../01-libblas3_3.12.1-7ubuntu1_ppc64el.deb ... 86s Unpacking libblas3:ppc64el (3.12.1-7ubuntu1) ... 86s Selecting previously unselected package libgfortran5:ppc64el. 86s Preparing to unpack .../02-libgfortran5_16-20260208-1ubuntu1_ppc64el.deb ... 86s Unpacking libgfortran5:ppc64el (16-20260208-1ubuntu1) ... 86s Selecting previously unselected package liblapack3:ppc64el. 86s Preparing to unpack .../03-liblapack3_3.12.1-7ubuntu1_ppc64el.deb ... 86s Unpacking liblapack3:ppc64el (3.12.1-7ubuntu1) ... 86s Selecting previously unselected package python3-numpy. 86s Preparing to unpack .../04-python3-numpy_1%3a2.3.5+ds-3_ppc64el.deb ... 86s Unpacking python3-numpy (1:2.3.5+ds-3) ... 87s Selecting previously unselected package diffstat. 87s Preparing to unpack .../05-diffstat_1.68-1_ppc64el.deb ... 87s Unpacking diffstat (1.68-1) ... 87s Selecting previously unselected package libgomp1:ppc64el. 87s Preparing to unpack .../06-libgomp1_16-20260208-1ubuntu1_ppc64el.deb ... 87s Unpacking libgomp1:ppc64el (16-20260208-1ubuntu1) ... 87s Selecting previously unselected package gettext. 87s Preparing to unpack .../07-gettext_0.23.2-1_ppc64el.deb ... 87s Unpacking gettext (0.23.2-1) ... 87s Selecting previously unselected package libsuitesparseconfig7:ppc64el. 87s Preparing to unpack .../08-libsuitesparseconfig7_1%3a7.12.1+dfsg-1_ppc64el.deb ... 87s Unpacking libsuitesparseconfig7:ppc64el (1:7.12.1+dfsg-1) ... 87s Selecting previously unselected package libamd3:ppc64el. 87s Preparing to unpack .../09-libamd3_1%3a7.12.1+dfsg-1_ppc64el.deb ... 87s Unpacking libamd3:ppc64el (1:7.12.1+dfsg-1) ... 87s Selecting previously unselected package libcolamd3:ppc64el. 87s Preparing to unpack .../10-libcolamd3_1%3a7.12.1+dfsg-1_ppc64el.deb ... 87s Unpacking libcolamd3:ppc64el (1:7.12.1+dfsg-1) ... 87s Selecting previously unselected package libltdl7:ppc64el. 87s Preparing to unpack .../11-libltdl7_2.5.4-9_ppc64el.deb ... 87s Unpacking libltdl7:ppc64el (2.5.4-9) ... 87s Selecting previously unselected package libglpk40:ppc64el. 87s Preparing to unpack .../12-libglpk40_5.0-2_ppc64el.deb ... 87s Unpacking libglpk40:ppc64el (5.0-2) ... 87s Selecting previously unselected package libqhull-r8.0:ppc64el. 87s Preparing to unpack .../13-libqhull-r8.0_2020.2-8_ppc64el.deb ... 87s Unpacking libqhull-r8.0:ppc64el (2020.2-8) ... 87s Selecting previously unselected package python-cobra-data. 87s Preparing to unpack .../14-python-cobra-data_0.29.1-3_all.deb ... 87s Unpacking python-cobra-data (0.29.1-3) ... 87s Selecting previously unselected package python3-annotated-types. 87s Preparing to unpack .../15-python3-annotated-types_0.7.0-1_all.deb ... 87s Unpacking python3-annotated-types (0.7.0-1) ... 87s Selecting previously unselected package python3-sniffio. 87s Preparing to unpack .../16-python3-sniffio_1.3.1-1_all.deb ... 87s Unpacking python3-sniffio (1.3.1-1) ... 87s Selecting previously unselected package python3-anyio. 87s Preparing to unpack .../17-python3-anyio_4.11.0-3_all.deb ... 87s Unpacking python3-anyio (4.11.0-3) ... 87s Selecting previously unselected package python3-click. 87s Preparing to unpack .../18-python3-click_8.2.0+0.really.8.1.8-1build1_all.deb ... 87s Unpacking python3-click (8.2.0+0.really.8.1.8-1build1) ... 87s Selecting previously unselected package python3-depinfo. 87s Preparing to unpack .../19-python3-depinfo_2.2.0-4_ppc64el.deb ... 87s Unpacking python3-depinfo (2.2.0-4) ... 87s Selecting previously unselected package python3-diskcache. 87s Preparing to unpack .../20-python3-diskcache_5.6.3-1_all.deb ... 87s Unpacking python3-diskcache (5.6.3-1) ... 87s Selecting previously unselected package python3-h11. 87s Preparing to unpack .../21-python3-h11_0.14.0-1.1_all.deb ... 87s Unpacking python3-h11 (0.14.0-1.1) ... 87s Selecting previously unselected package python3-httpcore. 87s Preparing to unpack .../22-python3-httpcore_1.0.9-1_all.deb ... 87s Unpacking python3-httpcore (1.0.9-1) ... 87s Selecting previously unselected package python3-httpx. 87s Preparing to unpack .../23-python3-httpx_0.28.1-1build1_all.deb ... 87s Unpacking python3-httpx (0.28.1-1build1) ... 87s Selecting previously unselected package python3-swiglpk. 87s Preparing to unpack .../24-python3-swiglpk_5.0.10-2build3_ppc64el.deb ... 87s Unpacking python3-swiglpk (5.0.10-2build3) ... 87s Selecting previously unselected package python3-mpmath. 87s Preparing to unpack .../25-python3-mpmath_1.3.0-2_all.deb ... 87s Unpacking python3-mpmath (1.3.0-2) ... 87s Selecting previously unselected package python3-sympy. 87s Preparing to unpack .../26-python3-sympy_1.14.0-2_all.deb ... 87s Unpacking python3-sympy (1.14.0-2) ... 87s Selecting previously unselected package python3-optlang. 87s Preparing to unpack .../27-python3-optlang_1.8.3-1_all.deb ... 87s Unpacking python3-optlang (1.8.3-1) ... 88s Selecting previously unselected package python3-pytz. 88s Preparing to unpack .../28-python3-pytz_2025.2-5_all.deb ... 88s Unpacking python3-pytz (2025.2-5) ... 88s Selecting previously unselected package python3-pandas-lib:ppc64el. 88s Preparing to unpack .../29-python3-pandas-lib_2.3.3+dfsg-3_ppc64el.deb ... 88s Unpacking python3-pandas-lib:ppc64el (2.3.3+dfsg-3) ... 88s Selecting previously unselected package python3-pandas. 88s Preparing to unpack .../30-python3-pandas_2.3.3+dfsg-3_all.deb ... 88s Unpacking python3-pandas (2.3.3+dfsg-3) ... 88s Selecting previously unselected package python3-platformdirs. 88s Preparing to unpack .../31-python3-platformdirs_4.5.1-1_all.deb ... 88s Unpacking python3-platformdirs (4.5.1-1) ... 88s Selecting previously unselected package python3-pydantic-core. 88s Preparing to unpack .../32-python3-pydantic-core_2.41.5-2_ppc64el.deb ... 88s Unpacking python3-pydantic-core (2.41.5-2) ... 88s Selecting previously unselected package python3-typing-inspection. 88s Preparing to unpack .../33-python3-typing-inspection_0.4.2-1_all.deb ... 88s Unpacking python3-typing-inspection (0.4.2-1) ... 88s Selecting previously unselected package python3-dnspython. 88s Preparing to unpack .../34-python3-dnspython_2.7.0-1ubuntu2_all.deb ... 88s Unpacking python3-dnspython (2.7.0-1ubuntu2) ... 88s Selecting previously unselected package python3-email-validator. 88s Preparing to unpack .../35-python3-email-validator_2.2.0-1_all.deb ... 88s Unpacking python3-email-validator (2.2.0-1) ... 88s Selecting previously unselected package python3-pydantic. 88s Preparing to unpack .../36-python3-pydantic_2.12.5-2_ppc64el.deb ... 88s Unpacking python3-pydantic (2.12.5-2) ... 88s Selecting previously unselected package python3-ruamel.yaml.clib. 88s Preparing to unpack .../37-python3-ruamel.yaml.clib_0.2.15+ds-1_ppc64el.deb ... 88s Unpacking python3-ruamel.yaml.clib (0.2.15+ds-1) ... 88s Selecting previously unselected package python3-ruamel.yaml. 88s Preparing to unpack .../38-python3-ruamel.yaml_0.18.10+ds-1_all.deb ... 88s Unpacking python3-ruamel.yaml (0.18.10+ds-1) ... 88s Selecting previously unselected package python3-tabulate. 88s Preparing to unpack .../39-python3-tabulate_0.9.0-1build1_all.deb ... 88s Unpacking python3-tabulate (0.9.0-1build1) ... 88s Selecting previously unselected package python3-sbml5. 88s Preparing to unpack .../40-python3-sbml5_5.20.5+dfsg-2_ppc64el.deb ... 88s Unpacking python3-sbml5 (5.20.5+dfsg-2) ... 88s Selecting previously unselected package python3-cobra. 88s Preparing to unpack .../41-python3-cobra_0.29.1-3_ppc64el.deb ... 88s Unpacking python3-cobra (0.29.1-3) ... 89s Selecting previously unselected package python3-cpuinfo. 89s Preparing to unpack .../42-python3-cpuinfo_9.0.0+git20221119-3_all.deb ... 89s Unpacking python3-cpuinfo (9.0.0+git20221119-3) ... 89s Selecting previously unselected package python3-decorator. 89s Preparing to unpack .../43-python3-decorator_5.2.1-2_all.deb ... 89s Unpacking python3-decorator (5.2.1-2) ... 89s Selecting previously unselected package python3-iniconfig. 89s Preparing to unpack .../44-python3-iniconfig_2.1.0-2_all.deb ... 89s Unpacking python3-iniconfig (2.1.0-2) ... 89s Selecting previously unselected package python3-pluggy. 89s Preparing to unpack .../45-python3-pluggy_1.6.0-2_all.deb ... 89s Unpacking python3-pluggy (1.6.0-2) ... 89s Selecting previously unselected package python3-pytest. 89s Preparing to unpack .../46-python3-pytest_9.0.2-2_all.deb ... 89s Unpacking python3-pytest (9.0.2-2) ... 89s Selecting previously unselected package python3-pytest-benchmark. 89s Preparing to unpack .../47-python3-pytest-benchmark_5.2.3-1_all.deb ... 89s Unpacking python3-pytest-benchmark (5.2.3-1) ... 89s Selecting previously unselected package python3-pytest-mock. 89s Preparing to unpack .../48-python3-pytest-mock_3.15.1-1_all.deb ... 89s Unpacking python3-pytest-mock (3.15.1-1) ... 89s Selecting previously unselected package quilt. 89s Preparing to unpack .../49-quilt_0.68-1_all.deb ... 89s Unpacking quilt (0.68-1) ... 89s Selecting previously unselected package python3-scipy. 89s Preparing to unpack .../50-python3-scipy_1.16.3-4_ppc64el.deb ... 89s Unpacking python3-scipy (1.16.3-4) ... 89s Setting up python3-iniconfig (2.1.0-2) ... 90s Setting up python3-sniffio (1.3.1-1) ... 90s Setting up python3-pydantic-core (2.41.5-2) ... 90s Setting up python3-typing-inspection (0.4.2-1) ... 90s Setting up python3-anyio (4.11.0-3) ... 90s Setting up python3-ruamel.yaml.clib (0.2.15+ds-1) ... 90s Setting up python3-tabulate (0.9.0-1build1) ... 90s Setting up libqhull-r8.0:ppc64el (2020.2-8) ... 90s Setting up python3-pytz (2025.2-5) ... 90s Setting up libgomp1:ppc64el (16-20260208-1ubuntu1) ... 90s Setting up python3-click (8.2.0+0.really.8.1.8-1build1) ... 91s Setting up python3-annotated-types (0.7.0-1) ... 91s Setting up python3-sbml5 (5.20.5+dfsg-2) ... 91s Setting up python3-platformdirs (4.5.1-1) ... 91s Setting up python3-decorator (5.2.1-2) ... 91s Setting up libblas3:ppc64el (3.12.1-7ubuntu1) ... 91s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/blas/libblas.so.3 to provide /usr/lib/powerpc64le-linux-gnu/libblas.so.3 (libblas.so.3-powerpc64le-linux-gnu) in auto mode 91s Setting up diffstat (1.68-1) ... 91s Setting up python3-numpy-dev:ppc64el (1:2.3.5+ds-3) ... 91s Setting up python3-h11 (0.14.0-1.1) ... 91s Setting up python3-depinfo (2.2.0-4) ... 92s Setting up python3-cpuinfo (9.0.0+git20221119-3) ... 92s Setting up libltdl7:ppc64el (2.5.4-9) ... 92s Setting up libgfortran5:ppc64el (16-20260208-1ubuntu1) ... 92s Setting up python3-pluggy (1.6.0-2) ... 92s Setting up python3-ruamel.yaml (0.18.10+ds-1) ... 92s Setting up python3-dnspython (2.7.0-1ubuntu2) ... 92s Setting up libsuitesparseconfig7:ppc64el (1:7.12.1+dfsg-1) ... 92s Setting up python3-email-validator (2.2.0-1) ... 92s Setting up python3-mpmath (1.3.0-2) ... 93s Setting up python3-diskcache (5.6.3-1) ... 93s Setting up python-cobra-data (0.29.1-3) ... 93s Setting up python3-httpcore (1.0.9-1) ... 93s Setting up python3-sympy (1.14.0-2) ... 99s /usr/lib/python3/dist-packages/sympy/testing/runtests.py:283: SyntaxWarning: 'return' in a 'finally' block 99s return p.returncode 100s Setting up liblapack3:ppc64el (3.12.1-7ubuntu1) ... 100s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/powerpc64le-linux-gnu/liblapack.so.3 (liblapack.so.3-powerpc64le-linux-gnu) in auto mode 100s Setting up gettext (0.23.2-1) ... 100s Setting up libamd3:ppc64el (1:7.12.1+dfsg-1) ... 100s Setting up libcolamd3:ppc64el (1:7.12.1+dfsg-1) ... 100s Setting up python3-pytest (9.0.2-2) ... 100s Setting up quilt (0.68-1) ... 100s Setting up python3-httpx (0.28.1-1build1) ... 101s Setting up libglpk40:ppc64el (5.0-2) ... 101s Setting up python3-pydantic (2.12.5-2) ... 101s Setting up python3-numpy (1:2.3.5+ds-3) ... 102s Setting up python3-pytest-mock (3.15.1-1) ... 103s Setting up python3-swiglpk (5.0.10-2build3) ... 103s Setting up python3-optlang (1.8.3-1) ... 103s Setting up python3-pytest-benchmark (5.2.3-1) ... 103s Setting up python3-scipy (1.16.3-4) ... 107s Setting up python3-pandas-lib:ppc64el (2.3.3+dfsg-3) ... 107s Setting up python3-pandas (2.3.3+dfsg-3) ... 112s Setting up python3-cobra (0.29.1-3) ... 112s Processing triggers for libc-bin (2.42-2ubuntu4) ... 112s Processing triggers for man-db (2.13.1-1build1) ... 112s Processing triggers for install-info (7.2-5) ... 114s autopkgtest [18:20:48]: test run-unit-test: [----------------------- 114s File series fully applied, ends at patch debian/patches/pr1452.patch 114s Running Tests 114s Since python3-sbml5 can only deal with one Python3 version we restrict the test to default Python3 118s ============================= test session starts ============================== 118s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 118s benchmark: 5.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000) 118s rootdir: /tmp/autopkgtest.tJEO2F/autopkgtest_tmp 118s plugins: mock-3.15.1, anyio-4.11.0, typeguard-4.4.4, benchmark-5.2.3 118s collected 554 items 118s 118s tests/test_core/test_configuration.py ...... [ 1%] 124s tests/test_core/test_core_reaction.py ..........ss.............F..FFFF.. [ 7%] 125s ...................x....... [ 12%] 125s tests/test_core/test_dictlist.py ...................... [ 16%] 125s tests/test_core/test_formula.py ..... [ 16%] 125s tests/test_core/test_gene.py . [ 17%] 125s tests/test_core/test_gpr.py ......................x..x.................. [ 25%] 135s ........................... [ 29%] 135s tests/test_core/test_group.py .. [ 30%] 135s tests/test_core/test_metabolite.py ...ss.ss. [ 31%] 142s tests/test_core/test_model.py .........................FF.F............. [ 39%] 143s ...........s..s.ss. [ 42%] 143s tests/test_core/test_solution.py .ss [ 43%] 150s tests/test_flux_analysis/test_deletion.py ....s..... [ 45%] 151s tests/test_flux_analysis/test_fastcc.py .... [ 46%] 155s tests/test_flux_analysis/test_geometric.py .. [ 46%] 155s tests/test_flux_analysis/test_moma.py . [ 46%] 160s tests/test_flux_analysis/test_parsimonious.py .. [ 46%] 160s tests/test_flux_analysis/test_reaction.py . [ 47%] 163s tests/test_flux_analysis/test_room.py .... [ 47%] 170s tests/test_flux_analysis/test_variability.py ....... [ 49%] 170s tests/test_flux_analysis/test_deletion.py sss [ 49%] 170s tests/test_flux_analysis/test_moma.py s [ 49%] 178s tests/test_flux_analysis/test_deletion.py ...... [ 50%] 179s tests/test_flux_analysis/test_gapfilling.py F [ 51%] 179s tests/test_flux_analysis/test_helpers.py ... [ 51%] 180s tests/test_flux_analysis/test_loopless.py ..... [ 52%] 184s tests/test_flux_analysis/test_phenotype_phase_plane.py ...... [ 53%] 184s tests/test_flux_analysis/test_variability.py ....... [ 54%] 184s tests/test_io/test_annotation.py .. [ 55%] 184s tests/test_io/test_annotation_format.py .. [ 55%] 188s tests/test_io/test_io_order.py ........................... [ 60%] 189s tests/test_io/test_json.py .... [ 61%] 207s tests/test_io/test_mat.py ............... [ 63%] 207s tests/test_io/test_notes.py . [ 64%] 207s tests/test_io/test_pickle.py .. [ 64%] 214s tests/test_io/test_sbml.py .ssss............xxxx.x.x..s............. [ 71%] 215s tests/test_io/test_web/test_load.py ..ssss. [ 73%] 215s tests/test_io/test_yaml.py .x [ 73%] 215s tests/test_manipulation/test_annotate.py . [ 73%] 216s tests/test_manipulation/test_delete.py ....... [ 74%] 216s tests/test_manipulation/test_modify.py ... [ 75%] 216s tests/test_manipulation/test_validate.py .. [ 75%] 216s tests/test_medium/test_boundary_types.py ........... [ 77%] 218s tests/test_medium/test_minimal_medium.py .......... [ 79%] 221s tests/test_sampling/test_achr.py ...... [ 80%] 224s tests/test_sampling/test_optgp.py ...... [ 81%] 233s tests/test_sampling/test_sampling.py .......... [ 83%] 234s tests/test_summary/test_metabolite_summary.py FFFFFFFFFFFFFFFFF [ 86%] 237s tests/test_summary/test_model_summary.py FFFFFFFFFFFFFFF [ 89%] 238s tests/test_summary/test_reaction_summary.py FFFFFFFFFFFFFFFFFFFF [ 92%] 238s tests/test_util/test_array.py .. [ 93%] 238s tests/test_util/test_context.py ... [ 93%] 256s tests/test_util/test_process_pool.py ............... [ 96%] 256s tests/test_util/test_solver.py ..............s [ 99%] 256s tests/test_util/test_util.py ...X [100%] 256s 256s =================================== FAILURES =================================== 256s __________________________________ test_copy ___________________________________ 256s 256s model = 256s 256s def test_copy(model: Model) -> None: 256s """Test reaction copying.""" 256s PGI = model.reactions.PGI 256s > copied = PGI.copy() 256s ^^^^^^^^^^ 256s 256s tests/test_core/test_core_reaction.py:393: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________________________________ test_add ___________________________________ 256s 256s model = 256s 256s def test_add(model: Model) -> None: 256s """Test reaction addition to model.""" 256s # Not in place addition should work on a copy 256s > new = model.reactions.PGI + model.reactions.EX_h2o_e 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_core/test_core_reaction.py:469: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:989: in __add__ 256s new_reaction = self.copy() 256s ^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s __________________________________ test_radd ___________________________________ 256s 256s model = 256s 256s def test_radd(model: Model) -> None: 256s """Test __radd__ for a reaction.""" 256s > new = sum([model.reactions.PGI, model.reactions.EX_h2o_e]) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_core/test_core_reaction.py:485: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:989: in __add__ 256s new_reaction = self.copy() 256s ^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________________________________ test_mul ___________________________________ 256s 256s model = 256s 256s def test_mul(model: Model) -> None: 256s """Test scalar multiplication of factors with a reaction.""" 256s > new = model.reactions.PGI * 2 256s ^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_core/test_core_reaction.py:492: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1131: in __mul__ 256s new = self.copy() 256s ^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________________________________ test_sub ___________________________________ 256s 256s model = 256s 256s def test_sub(model: Model) -> None: 256s """Test reaction subtraction.""" 256s > new = model.reactions.PGI - model.reactions.EX_h2o_e 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_core/test_core_reaction.py:498: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1050: in __sub__ 256s new = self.copy() 256s ^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________________________ test_deepcopy_benchmark ____________________________ 256s 256s model = 256s benchmark = 256s 256s def test_deepcopy_benchmark(model: Model, benchmark: BenchmarkFixture) -> None: 256s """Benchmark deepcopying a model. 256s 256s Parameters 256s ---------- 256s model: cobra.Model 256s benchmark: BenchmarkFixture 256s """ 256s > benchmark(deepcopy, model) 256s 256s tests/test_core/test_model.py:613: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:184: in __call__ 256s return self._raw(function_to_benchmark, *args, **kwargs) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:216: in _raw 256s duration, iterations, loops_range = self._calibrate_timer(runner) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:370: in _calibrate_timer 256s duration = runner(loops_range) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:138: in runner 256s function_to_benchmark(*args, **kwargs) 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:240: in _reconstruct 256s state = deepcopy(state, memo) 256s ^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:131: in deepcopy 256s y = copier(x, memo) 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:202: in _deepcopy_dict 256s y[deepcopy(key, memo)] = deepcopy(value, memo) 256s ^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:257: in _reconstruct 256s item = deepcopy(item, memo) 256s ^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ________________________________ test_deepcopy _________________________________ 256s 256s model = 256s 256s def test_deepcopy(model: Model) -> None: 256s """Test deepcopying works, and maintains reference structures. 256s 256s Parameters 256s ---------- 256s model: cobra.Model 256s """ 256s # Reference structures are maintained when deepcopying 256s > model_copy = deepcopy(model) 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_core/test_model.py:624: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:240: in _reconstruct 256s state = deepcopy(state, memo) 256s ^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:131: in deepcopy 256s y = copier(x, memo) 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:202: in _deepcopy_dict 256s y[deepcopy(key, memo)] = deepcopy(value, memo) 256s ^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:257: in _reconstruct 256s item = deepcopy(item, memo) 256s ^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ______________________________ test_merge_models _______________________________ 256s 256s model = 256s tiny_toy_model = 256s 256s def test_merge_models(model: Model, tiny_toy_model: Model) -> None: 256s """Test merging models. 256s 256s Parameters 256s ---------- 256s model: cobra.Model 256s tiny_toy_model: cobra.Model 256s """ 256s with model, tiny_toy_model: 256s # Add some cons/vars to tiny_toy_model for testing merging 256s tiny_toy_model.add_reactions([Reaction("EX_glc__D_e")]) 256s variable = tiny_toy_model.problem.Variable("foo") 256s constraint = tiny_toy_model.problem.Constraint( 256s variable, ub=0, lb=0, name="constraint" 256s ) 256s tiny_toy_model.add_cons_vars([variable, constraint]) 256s 256s > merged = model.merge( 256s tiny_toy_model, inplace=False, objective="sum", prefix_existing="tiny_" 256s ) 256s 256s tests/test_core/test_model.py:679: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1454: in merge 256s new_reactions = deepcopy(right.reactions) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:257: in _reconstruct 256s item = deepcopy(item, memo) 256s ^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _______________________________ test_gapfilling ________________________________ 256s 256s salmonella = 256s 256s def test_gapfilling(salmonella: Model) -> None: 256s """Test Gapfilling.""" 256s m = Model() 256s m.add_metabolites([Metabolite(m_id) for m_id in ["a", "b", "c"]]) 256s exa = Reaction("EX_a") 256s exa.add_metabolites({m.metabolites.a: 1}) 256s b2c = Reaction("b2c") 256s b2c.add_metabolites({m.metabolites.b: -1, m.metabolites.c: 1}) 256s dmc = Reaction("DM_c") 256s dmc.add_metabolites({m.metabolites.c: -1}) 256s m.add_reactions([exa, b2c, dmc]) 256s m.objective = "DM_c" 256s 256s universal = Model() 256s a2b = Reaction("a2b") 256s a2d = Reaction("a2d") 256s universal.add_reactions([a2b, a2d]) 256s a2b.build_reaction_from_string("a --> b", verbose=False) 256s a2d.build_reaction_from_string("a --> d", verbose=False) 256s 256s # # GrowMatch 256s # result = gapfilling.growMatch(m, universal)[0] 256s result = gapfill(m, universal)[0] 256s assert len(result) == 1 256s assert result[0].id == "a2b" 256s 256s # # SMILEY 256s # result = gapfilling.SMILEY(m, "b", universal)[0] 256s with m: 256s m.objective = m.add_boundary(m.metabolites.b, type="demand") 256s result = gapfill(m, universal)[0] 256s assert len(result) == 1 256s assert result[0].id == "a2b" 256s 256s # # 2 rounds of GrowMatch with exchange reactions 256s # result = gapfilling.growMatch(m, None, ex_rxns=True, iterations=2) 256s result = gapfill(m, None, exchange_reactions=True, iterations=2) 256s assert len(result) == 2 256s assert len(result[0]) == 1 256s assert len(result[1]) == 1 256s assert {i[0].id for i in result} == {"EX_b", "EX_c"} 256s 256s # # Gapfilling solution adds metabolites not present in original model 256s # test for when demand = T 256s # a demand reaction must be added to clear new metabolite 256s universal_noDM = Model() 256s a2b = Reaction("a2b") 256s universal_noDM.add_reactions([a2b]) 256s a2b.build_reaction_from_string("a --> b + d", verbose=False) 256s result = gapfill( 256s m, universal_noDM, exchange_reactions=False, demand_reactions=True 256s )[0] 256s # add reaction a2b and demand reaction to clear met d 256s assert len(result) == 2 256s assert "a2b" in [x.id for x in result] 256s 256s # test for when demand = False 256s # test for when metabolites are added to the model and 256s # must be cleared by other reactions in universal model 256s # (i.e. not necessarily a demand reaction) 256s universal_withDM = universal_noDM.copy() 256s d_dm = Reaction("d_dm") 256s universal_withDM.add_reactions([d_dm]) 256s d_dm.build_reaction_from_string("d -->", verbose=False) 256s result = gapfill( 256s m, universal_withDM, exchange_reactions=False, demand_reactions=False 256s )[0] 256s assert len(result) == 2 256s assert "a2b" in [x.id for x in result] 256s 256s # somewhat bigger model 256s universal = Model("universal_reactions") 256s with salmonella as model: 256s for i in [i.id for i in model.metabolites.f6p_c.reactions]: 256s reaction = model.reactions.get_by_id(i) 256s > universal.add_reactions([reaction.copy()]) 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_flux_analysis/test_gapfilling.py:82: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _______________ test_metabolite_summary_interface[optlang-glpk] ________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_metabolite_summary_interface(model, opt_solver): 256s """Test that a summary can be created successfully.""" 256s model.solver = opt_solver 256s metabolite = model.metabolites.get_by_id("q8_c") 256s > MetaboliteSummary( 256s metabolite=metabolite, 256s model=model, 256s ) 256s 256s tests/test_summary/test_metabolite_summary.py:13: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ________________ test_metabolite_summary_to_frame[optlang-glpk] ________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_metabolite_summary_to_frame(model, opt_solver): 256s """Test that the summary's method ``to_frame`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:39: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs0] ____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:56: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs1] ____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'names': True} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:56: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs2] ____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'float_format': '.1f'} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:56: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs3] ____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'threshold': 0.01} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:56: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs4] ____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'column_width': 20} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:56: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs0] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:66: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs1] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'names': True} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:66: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs2] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'float_format': '.1f'} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:66: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs3] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'threshold': 0.01} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("atp_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:66: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________________ test_q8_producing_summary[optlang-glpk] ____________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_q8_producing_summary(model, opt_solver): 256s """Test that the production summary of q8 is accurate.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("q8_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:73: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ___________________ test_q8_consuming_summary[optlang-glpk] ____________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_q8_consuming_summary(model, opt_solver): 256s """Test that the consumption summary of q8 is accurate.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("q8_c").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:82: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s __________________ test_fdp_production_with_fva[optlang-glpk] __________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_fdp_production_with_fva(model, opt_solver): 256s """Test that the production summary of fdp is within expected bounds.""" 256s model.solver = opt_solver 256s > summary = model.metabolites.get_by_id("fdp_c").summary(fva=0.99) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:100: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s __________ test_metabolite_summary_flux_in_context[optlang-glpk-q8_c] __________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s metabolite_id = 'q8_c' 256s 256s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 256s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 256s """Test that the metabolite summary inside and outside of a context are equal.""" 256s model.solver = opt_solver 256s with model: 256s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:112: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _________ test_metabolite_summary_flux_in_context[optlang-glpk-fdp_c] __________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s metabolite_id = 'fdp_c' 256s 256s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 256s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 256s """Test that the metabolite summary inside and outside of a context are equal.""" 256s model.solver = opt_solver 256s with model: 256s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:112: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _________ test_metabolite_summary_flux_in_context[optlang-glpk-atp_c] __________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s metabolite_id = 'atp_c' 256s 256s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 256s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 256s """Test that the metabolite summary inside and outside of a context are equal.""" 256s model.solver = opt_solver 256s with model: 256s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_metabolite_summary.py:112: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 256s return MetaboliteSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 256s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 256s ^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s __________________ test_model_summary_interface[optlang-glpk] __________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_model_summary_interface(model, opt_solver): 256s """Test that a summary can be created successfully.""" 256s model.solver = opt_solver 256s > ModelSummary( 256s model=model, 256s ) 256s 256s tests/test_summary/test_model_summary.py:12: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s __________________ test_model_summary_to_frame[optlang-glpk] ___________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_model_summary_to_frame(model, opt_solver): 256s """Test that the summary's method ``to_frame`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:34: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ______________ test_model_summary_to_string[optlang-glpk-kwargs0] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_model_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:51: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ______________ test_model_summary_to_string[optlang-glpk-kwargs1] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'names': True} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_model_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:51: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ______________ test_model_summary_to_string[optlang-glpk-kwargs2] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'float_format': '.1f'} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_model_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:51: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ______________ test_model_summary_to_string[optlang-glpk-kwargs3] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'threshold': 0.01} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_model_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:51: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ______________ test_model_summary_to_string[optlang-glpk-kwargs4] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'column_width': 20} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_model_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:51: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _______________ test_model_summary_to_html[optlang-glpk-kwargs0] _______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_model_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:61: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _______________ test_model_summary_to_html[optlang-glpk-kwargs1] _______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'names': True} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_model_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:61: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _______________ test_model_summary_to_html[optlang-glpk-kwargs2] _______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'float_format': '.1f'} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_model_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:61: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _______________ test_model_summary_to_html[optlang-glpk-kwargs3] _______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'threshold': 0.01} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_model_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:61: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _________ test_model_summary_to_frame_previous_solution[optlang-glpk] __________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_model_summary_to_frame_previous_solution(model, opt_solver): 256s """Test that the summary correctly uses an existing solution.""" 256s model.solver = opt_solver 256s solution = pfba(model) 256s rxn = model.reactions.EX_glc__D_e 256s solution.fluxes[rxn.id] = -123 256s > summary = model.summary(solution=solution) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:71: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________________ test_model_summary_flux[optlang-glpk] _____________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_model_summary_flux(model, opt_solver): 256s """Test that the summary has expected fluxes.""" 256s model.solver = opt_solver 256s > summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:78: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _____________________ test_model_summary_fva[optlang-glpk] _____________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_model_summary_fva(model, opt_solver): 256s """Test that the exchange summary is within expected bounds.""" 256s model.solver = opt_solver 256s > summary = model.summary(fva=0.95) 256s ^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:88: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _______________ test_model_summary_flux_in_context[optlang-glpk] _______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_model_summary_flux_in_context(model, opt_solver): 256s """Test that the model summary inside and outside of a context are equal.""" 256s model.solver = opt_solver 256s copy = model.copy() 256s with model: 256s model.reactions.EX_glc__D_e.bounds = (0, 1000) 256s model.reactions.EX_ac_e.bounds = (-10, 1000) 256s > context_summary = model.summary() 256s ^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_model_summary.py:109: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 256s return ModelSummary(model=self, solution=solution, fva=fva) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 256s self._generate(model, solution, fva) 256s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 256s rxn.copy(): coef for rxn, coef in coefficients.items() 256s ^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ________________ test_reaction_summary_interface[optlang-glpk] _________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_reaction_summary_interface(model, opt_solver): 256s """Test that a summary can be created successfully.""" 256s model.solver = opt_solver 256s reaction = model.reactions.get_by_id("FUM") 256s > ReactionSummary( 256s reaction=reaction, 256s model=model, 256s ) 256s 256s tests/test_summary/test_reaction_summary.py:13: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _________________ test_reaction_summary_to_frame[optlang-glpk] _________________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s 256s def test_reaction_summary_to_frame(model, opt_solver): 256s """Test that the summary's method ``to_frame`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:37: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs0] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_reaction_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:54: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs1] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'names': True} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_reaction_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:54: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs2] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'float_format': '.1f'} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_reaction_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:54: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs3] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'threshold': 0.01} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_reaction_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:54: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs4] _____________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'column_width': 20} 256s 256s @pytest.mark.parametrize( 256s "kwargs", 256s [ 256s {}, 256s {"names": True}, 256s {"float_format": ".1f"}, 256s {"threshold": 1e-2}, 256s {"column_width": 20}, 256s ], 256s ) 256s def test_reaction_summary_to_string(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_string`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:54: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs0] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_reaction_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:64: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs1] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'names': True} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_reaction_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:64: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs2] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'float_format': '.1f'} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_reaction_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:64: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs3] ______________ 256s 256s model = , opt_solver = 'optlang-glpk' 256s kwargs = {'threshold': 0.01} 256s 256s @pytest.mark.parametrize( 256s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 256s ) 256s def test_reaction_summary_to_html(model, opt_solver, kwargs): 256s """Test that the summary's method ``to_html`` can be called.""" 256s model.solver = opt_solver 256s > summary = model.reactions.get_by_id("FUM").summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:64: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ____________________ test_reaction_summary_flux[ACALD-0.0] _____________________ 256s 256s model = , reaction_id = 'ACALD' 256s expected = 0.0 256s 256s @pytest.mark.parametrize( 256s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 256s ) 256s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 256s """Test that the reported flux in the summary is reasonable.""" 256s > result = ReactionSummary( 256s reaction=model.reactions.get_by_id(reaction_id), model=model 256s ) 256s 256s tests/test_summary/test_reaction_summary.py:73: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _____________________ test_reaction_summary_flux[FUM-5.06] _____________________ 256s 256s model = , reaction_id = 'FUM' 256s expected = 5.06 256s 256s @pytest.mark.parametrize( 256s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 256s ) 256s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 256s """Test that the reported flux in the summary is reasonable.""" 256s > result = ReactionSummary( 256s reaction=model.reactions.get_by_id(reaction_id), model=model 256s ) 256s 256s tests/test_summary/test_reaction_summary.py:73: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _____________________ test_reaction_summary_flux[PFK-7.48] _____________________ 256s 256s model = , reaction_id = 'PFK' 256s expected = 7.48 256s 256s @pytest.mark.parametrize( 256s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 256s ) 256s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 256s """Test that the reported flux in the summary is reasonable.""" 256s > result = ReactionSummary( 256s reaction=model.reactions.get_by_id(reaction_id), model=model 256s ) 256s 256s tests/test_summary/test_reaction_summary.py:73: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _______________ test_reaction_summary_flux_fva[ACALD--1.27-0.0] ________________ 256s 256s model = , reaction_id = 'ACALD' 256s min_flux = -1.27, max_flux = 0.0 256s 256s @pytest.mark.parametrize( 256s "reaction_id, min_flux, max_flux", 256s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 256s ) 256s def test_reaction_summary_flux_fva( 256s model, reaction_id: str, min_flux: float, max_flux: float 256s ) -> None: 256s """Test that the reported flux ranges in the summary are reasonable.""" 256s > result = ReactionSummary( 256s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 256s ) 256s 256s tests/test_summary/test_reaction_summary.py:89: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ________________ test_reaction_summary_flux_fva[FUM-0.79-7.38] _________________ 256s 256s model = , reaction_id = 'FUM' 256s min_flux = 0.79, max_flux = 7.38 256s 256s @pytest.mark.parametrize( 256s "reaction_id, min_flux, max_flux", 256s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 256s ) 256s def test_reaction_summary_flux_fva( 256s model, reaction_id: str, min_flux: float, max_flux: float 256s ) -> None: 256s """Test that the reported flux ranges in the summary are reasonable.""" 256s > result = ReactionSummary( 256s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 256s ) 256s 256s tests/test_summary/test_reaction_summary.py:89: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s ________________ test_reaction_summary_flux_fva[PFK-2.58-16.38] ________________ 256s 256s model = , reaction_id = 'PFK' 256s min_flux = 2.58, max_flux = 16.38 256s 256s @pytest.mark.parametrize( 256s "reaction_id, min_flux, max_flux", 256s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 256s ) 256s def test_reaction_summary_flux_fva( 256s model, reaction_id: str, min_flux: float, max_flux: float 256s ) -> None: 256s """Test that the reported flux ranges in the summary are reasonable.""" 256s > result = ReactionSummary( 256s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 256s ) 256s 256s tests/test_summary/test_reaction_summary.py:89: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s _________________ test_reaction_summary_flux_in_context[ACALD] _________________ 256s 256s model = , reaction_id = 'ACALD' 256s 256s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 256s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 256s """Test that the reaction summary inside and outside of a context are equal.""" 256s with model: 256s > context_summary = model.reactions.get_by_id(reaction_id).summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:104: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s __________________ test_reaction_summary_flux_in_context[FUM] __________________ 256s 256s model = , reaction_id = 'FUM' 256s 256s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 256s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 256s """Test that the reaction summary inside and outside of a context are equal.""" 256s with model: 256s > context_summary = model.reactions.get_by_id(reaction_id).summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:104: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s __________________ test_reaction_summary_flux_in_context[PFK] __________________ 256s 256s model = , reaction_id = 'PFK' 256s 256s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 256s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 256s """Test that the reaction summary inside and outside of a context are equal.""" 256s with model: 256s > context_summary = model.reactions.get_by_id(reaction_id).summary() 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s 256s tests/test_summary/test_reaction_summary.py:104: 256s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 256s return ReactionSummary( 256s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 256s self._reaction = reaction.copy() 256s ^^^^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 256s new_reaction = deepcopy(self) 256s ^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:157: in deepcopy 256s y = _reconstruct(x, memo, *rv) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:234: in _reconstruct 256s y = func(*args) 256s ^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:233: in 256s args = (deepcopy(arg, memo) for arg in args) 256s ^^^^^^^^^^^^^^^^^^^ 256s /usr/lib/python3.14/copy.py:138: in deepcopy 256s y = copier(memo) 256s ^^^^^^^^^^^^ 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 256s cop = deepcopy(super(Reaction, self), memo) 256s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 256s E RecursionError: maximum recursion depth exceeded 256s !!! Recursion detected (same locals & position) 256s =============================== warnings summary =============================== 256s :491 256s :491: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute 256s 256s :491 256s :491: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute 256s 256s tests/test_core/test_gpr.py::test_and_gpr[a AND b-2-gpr_genes2-a and b] 256s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_and_b_strs] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 256s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a AND b'. 256s warn( 256s 256s tests/test_core/test_gpr.py::test_or_gpr[a OR b-2-gpr_genes2-a or b] 256s tests/test_core/test_gpr.py::test_gpr_as_symbolic_boolean[a OR b-symbolic_gpr2] 256s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_or_b_strs] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 256s tests/test_core/test_gpr.py::test_gpr_from_symbolic[a OR b-symbolic_gpr5] 256s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a OR b'. 256s warn( 256s 256s tests/test_core/test_gpr.py::test_complicated_gpr[(a OR b) AND c] 256s tests/test_core/test_gpr.py::test_gpr_as_symbolic_boolean[(a OR b) AND c-symbolic_gpr6] 256s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_or_and_strs] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists8] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists9] 256s tests/test_core/test_gpr.py::test_gpr_from_symbolic[(a OR b) AND c-symbolic_gpr9] 256s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule '(a OR b) AND c'. 256s warn( 256s 256s tests/test_core/test_gpr.py::test_gpr_that_needs_two_replacements 256s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule '(591001.3.peg.1891 AND 591001.3.peg.1892 AND 591001.3.peg.1893)'. 256s warn( 256s 256s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_and_b_strs] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 256s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'b AND a'. 256s warn( 256s 256s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_or_b_strs] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 256s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'b OR a'. 256s warn( 256s 256s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_or_strs] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists7] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists8] 256s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a OR b or c'. 256s warn( 256s 256s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_and_strs] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists7] 256s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists9] 256s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a AND b and c'. 256s warn( 256s 256s tests/test_core/test_model.py::test_reaction_delete 256s tests/test_core/test_model.py::test_reaction_delete 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:879: DeprecationWarning: delete is deprecated. Use reaction.remove_from_model instead 256s warn( 256s 256s tests/test_core/test_model.py::test_group_loss_of_elements 256s /usr/lib/python3/dist-packages/cobra/core/group.py:147: UserWarning: need to pass in a list 256s warn("need to pass in a list") 256s 256s tests/test_core/test_model.py::test_change_objective 256s tests/test_core/test_model.py::test_change_objective 256s tests/test_core/test_model.py::test_change_objective 256s /usr/lib/python3/dist-packages/cobra/core/reaction.py:761: DeprecationWarning: Please use reaction.flux instead. 256s warn("Please use reaction.flux instead.", DeprecationWarning) 256s 256s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 256s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_flux_analysis/test_deletion.py:437: FutureWarning: Calling float on a single element Series is deprecated and will raise a TypeError in the future. Use float(ser.iloc[0]) instead 256s assert math.isnan(sol.growth) 256s 256s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 256s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_flux_analysis/test_deletion.py:438: FutureWarning: Calling float on a single element Series is deprecated and will raise a TypeError in the future. Use float(ser.iloc[0]) instead 256s assert math.isnan(sol_one.growth) 256s 256s tests/test_flux_analysis/test_gapfilling.py: 980 warnings 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/conftest.py:53: DeprecationWarning: BoolOp.__init__ missing 1 required positional argument: 'op'. This will become an error in Python 3.15. 256s return _load(infile) 256s 256s tests/test_flux_analysis/test_gapfilling.py: 4020 warnings 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/conftest.py:53: DeprecationWarning: Name.__init__ missing 1 required positional argument: 'id'. This will become an error in Python 3.15. 256s return _load(infile) 256s 256s tests/test_io/test_json.py: 34 warnings 256s tests/test_io/test_mat.py: 34 warnings 256s tests/test_io/test_pickle.py: 34 warnings 256s tests/test_io/test_yaml.py: 34 warnings 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/conftest.py:17: DeprecationWarning: Name.__init__ missing 1 required positional argument: 'id'. This will become an error in Python 3.15. 256s return load(infile) 256s 256s tests/test_io/test_json.py: 11 warnings 256s tests/test_io/test_mat.py: 11 warnings 256s tests/test_io/test_pickle.py: 11 warnings 256s tests/test_io/test_yaml.py: 11 warnings 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/conftest.py:17: DeprecationWarning: BoolOp.__init__ missing 1 required positional argument: 'op'. This will become an error in Python 3.15. 256s return load(infile) 256s 256s tests/test_io/test_json.py: 1 warning 256s tests/test_io/test_mat.py: 5 warnings 256s tests/test_io/test_pickle.py: 1 warning 256s tests/test_io/test_sbml.py: 9 warnings 256s tests/test_io/test_yaml.py: 1 warning 256s /usr/lib/python3/dist-packages/cobra/util/solver.py:554: UserWarning: Solver status is 'infeasible'. 256s warn(f"Solver status is '{status}'.", UserWarning) 256s 256s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 256s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/test_mat.py:32: DeprecationWarning: BoolOp.__init__ missing 1 required positional argument: 'op'. This will become an error in Python 3.15. 256s return load(infile) 256s 256s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 256s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 256s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 256s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 256s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 256s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/test_mat.py:32: DeprecationWarning: Name.__init__ missing 1 required positional argument: 'id'. This will become an error in Python 3.15. 256s return load(infile) 256s 256s tests/test_io/test_pickle.py: 34 warnings 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/test_pickle.py:24: DeprecationWarning: Name.__init__ missing 1 required positional argument: 'id'. This will become an error in Python 3.15. 256s pickle_model = load_function(infile) 256s 256s tests/test_io/test_pickle.py: 11 warnings 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/test_pickle.py:24: DeprecationWarning: BoolOp.__init__ missing 1 required positional argument: 'op'. This will become an error in Python 3.15. 256s pickle_model = load_function(infile) 256s 256s tests/test_io/test_sbml.py: 136 warnings 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/test_sbml.py:268: DeprecationWarning: Name.__init__ missing 1 required positional argument: 'id'. This will become an error in Python 3.15. 256s reference_model = load(infile) 256s 256s tests/test_io/test_sbml.py: 44 warnings 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/test_sbml.py:268: DeprecationWarning: BoolOp.__init__ missing 1 required positional argument: 'op'. This will become an error in Python 3.15. 256s reference_model = load(infile) 256s 256s tests/test_io/test_yaml.py::test_save_yaml_model 256s /tmp/autopkgtest.tJEO2F/autopkgtest_tmp/tests/test_io/test_yaml.py:29: PendingDeprecationWarning: 256s you should no longer specify 'unsafe'. 256s For **dumping only** use yaml=YAML(typ='full') 256s 256s yaml = YAML(typ="unsafe") 256s 256s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 256s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 256s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 256s /usr/lib/python3/dist-packages/cobra/medium/boundary_types.py:74: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]` 256s compartment = most[matches[most]][0] 256s 256s tests/test_util/test_process_pool.py::test_with_context 256s /usr/lib/python3/dist-packages/cobra/util/process_pool.py:71: PytestMockWarning: Mocks returned by pytest-mock do not need to be used as context managers. The mocker fixture automatically undoes mocking at the end of a test. This warning can be ignored if it was triggered by mocking a context manager. https://pytest-mock.readthedocs.io/en/latest/usage.html#usage-as-context-manager 256s self._pool.__enter__() 256s 256s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 256s 256s ------------------------------------------------------------------------------------------------------------------- benchmark: 30 tests -------------------------------------------------------------------------------------------------------------------- 256s Name (time in us) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations 256s ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 256s test_subtract_metabolite_benchmark[glpk] 4.8850 (1.0) 27.1270 (1.55) 5.1138 (1.0) 0.4699 (1.54) 5.0900 (1.0) 0.0810 (1.00) 21;82 195,547.6079 (1.0) 5231 1 256s test_subtract_metabolite_benchmark[gurobi] 4.9010 (1.00) 17.5180 (1.0) 5.1276 (1.00) 0.3057 (1.0) 5.1090 (1.00) 0.0810 (1.0) 28;79 195,023.0464 (1.00) 5201 1 256s test_subtract_metabolite_benchmark[cplex] 4.9180 (1.01) 27.0870 (1.55) 5.1620 (1.01) 0.5398 (1.77) 5.1340 (1.01) 0.0810 (1.0) 24;70 193,723.1034 (0.99) 5203 1 256s test_achr_sample_benchmark 236.7190 (48.46) 359.2600 (20.51) 242.4703 (47.41) 6.5339 (21.38) 241.1550 (47.38) 1.5865 (19.59) 135;252 4,124.2157 (0.02) 1783 1 256s test_change_objective_benchmark[optlang-glpk] 258.8920 (53.00) 738.8400 (42.18) 264.6011 (51.74) 8.7645 (28.67) 262.9070 (51.65) 2.9238 (36.10) 168;689 3,779.2739 (0.02) 5121 1 256s test_optgp_sample_benchmark 368.9010 (75.52) 499.6830 (28.52) 374.5337 (73.24) 8.0073 (26.20) 372.2350 (73.13) 1.9210 (23.72) 204;310 2,669.9865 (0.01) 1960 1 256s test_loopless_benchmark_after 1,370.3980 (280.53) 1,582.3510 (90.33) 1,385.1754 (270.87) 18.2797 (59.80) 1,382.3270 (271.58) 9.1663 (113.16) 17;18 721.9303 (0.00) 347 1 256s test_single_gene_deletion_fba_benchmark[glpk] 5,298.7780 (>1000.0) 5,668.1750 (323.56) 5,344.2563 (>1000.0) 34.4556 (112.72) 5,339.2620 (>1000.0) 20.7570 (256.26) 14;10 187.1168 (0.00) 166 1 256s test_loopless_benchmark_before 6,364.7200 (>1000.0) 6,614.2190 (377.57) 6,414.8959 (>1000.0) 38.8785 (127.19) 6,408.8465 (>1000.0) 24.0080 (296.40) 13;7 155.8872 (0.00) 114 1 256s test_minimal_medium_mip_benchmark 7,028.9430 (>1000.0) 7,225.9960 (412.49) 7,071.5006 (>1000.0) 35.4299 (115.91) 7,061.5000 (>1000.0) 27.0888 (334.43) 13;10 141.4127 (0.00) 89 1 256s test_minimal_medium_linear_benchmark 7,158.4450 (>1000.0) 7,330.8980 (418.48) 7,207.2515 (>1000.0) 35.2076 (115.18) 7,194.4260 (>1000.0) 29.8830 (368.93) 14;8 138.7491 (0.00) 88 1 256s test_copy_benchmark[optlang-glpk] 17,632.0990 (>1000.0) 23,091.1660 (>1000.0) 19,507.8682 (>1000.0) 1,042.3267 (>1000.0) 19,458.4395 (>1000.0) 1,244.7200 (>1000.0) 14;2 51.2614 (0.00) 54 1 256s test_gpr_equality_benchmark 24,305.7830 (>1000.0) 24,573.9280 (>1000.0) 24,443.2195 (>1000.0) 61.7911 (202.15) 24,438.2405 (>1000.0) 82.9750 (>1000.0) 12;0 40.9111 (0.00) 40 1 256s test_single_reaction_deletion_benchmark[glpk] 29,070.3660 (>1000.0) 29,337.8420 (>1000.0) 29,153.0226 (>1000.0) 63.5905 (208.03) 29,140.2830 (>1000.0) 83.1470 (>1000.0) 9;1 34.3018 (0.00) 34 1 256s test_flux_variability_loopless_benchmark[glpk] 41,240.8320 (>1000.0) 41,469.8710 (>1000.0) 41,363.4098 (>1000.0) 71.8649 (235.10) 41,368.5940 (>1000.0) 129.7380 (>1000.0) 5;0 24.1760 (0.00) 14 1 256s test_double_reaction_deletion_benchmark 57,624.7110 (>1000.0) 57,768.3220 (>1000.0) 57,701.3916 (>1000.0) 59.9669 (196.18) 57,715.6540 (>1000.0) 101.3800 (>1000.0) 2;0 17.3306 (0.00) 5 1 256s test_fastcc_benchmark[glpk] 75,373.7830 (>1000.0) 78,150.5200 (>1000.0) 76,738.6352 (>1000.0) 890.3537 (>1000.0) 76,630.3050 (>1000.0) 1,351.8230 (>1000.0) 5;0 13.0312 (0.00) 13 1 256s test_add_metabolite_benchmark[gurobi] 106,288.2800 (>1000.0) 119,490.7170 (>1000.0) 108,470.7003 (>1000.0) 4,259.9596 (>1000.0) 106,413.1500 (>1000.0) 2,032.8057 (>1000.0) 1;1 9.2191 (0.00) 9 1 256s test_add_metabolite_benchmark[cplex] 106,896.6390 (>1000.0) 110,168.3580 (>1000.0) 107,441.4764 (>1000.0) 969.5998 (>1000.0) 107,173.1455 (>1000.0) 227.1000 (>1000.0) 1;1 9.3074 (0.00) 10 1 256s test_add_metabolite_benchmark[glpk] 108,069.9200 (>1000.0) 108,520.4200 (>1000.0) 108,291.0905 (>1000.0) 154.4446 (505.26) 108,303.3370 (>1000.0) 250.4880 (>1000.0) 4;0 9.2344 (0.00) 10 1 256s test_optgp_init_benchmark 126,496.4040 (>1000.0) 129,906.6700 (>1000.0) 128,553.2121 (>1000.0) 1,071.8975 (>1000.0) 128,861.5520 (>1000.0) 1,289.8815 (>1000.0) 2;0 7.7789 (0.00) 8 1 256s test_achr_init_benchmark 128,667.1640 (>1000.0) 134,530.7640 (>1000.0) 130,366.8650 (>1000.0) 1,876.8077 (>1000.0) 129,837.5320 (>1000.0) 1,714.0420 (>1000.0) 1;1 7.6707 (0.00) 8 1 256s test_gpr_symbolism_benchmark 134,000.1680 (>1000.0) 134,553.3520 (>1000.0) 134,240.2835 (>1000.0) 190.6831 (623.81) 134,163.7295 (>1000.0) 287.6775 (>1000.0) 2;0 7.4493 (0.00) 8 1 256s test_double_gene_deletion_benchmark 202,988.9920 (>1000.0) 213,998.6580 (>1000.0) 206,306.2772 (>1000.0) 4,399.6497 (>1000.0) 205,102.2970 (>1000.0) 3,684.9613 (>1000.0) 1;1 4.8472 (0.00) 5 1 256s test_single_gene_deletion_linear_moma_benchmark[glpk] 238,584.2350 (>1000.0) 240,113.8400 (>1000.0) 239,593.9096 (>1000.0) 651.7713 (>1000.0) 239,856.7600 (>1000.0) 977.3380 (>1000.0) 1;0 4.1737 (0.00) 5 1 256s test_single_gene_deletion_linear_room_benchmark[glpk] 326,943.7830 (>1000.0) 328,062.3320 (>1000.0) 327,690.0554 (>1000.0) 457.2659 (>1000.0) 327,793.5740 (>1000.0) 604.0693 (>1000.0) 1;0 3.0517 (0.00) 5 1 256s test_pfba_benchmark[glpk] 364,350.8970 (>1000.0) 385,888.9120 (>1000.0) 374,468.7716 (>1000.0) 10,034.0684 (>1000.0) 374,729.3830 (>1000.0) 19,158.7967 (>1000.0) 2;0 2.6704 (0.00) 5 1 256s test_flux_variability_benchmark[glpk] 378,393.8660 (>1000.0) 378,673.4260 (>1000.0) 378,526.8024 (>1000.0) 119.2577 (390.15) 378,486.7540 (>1000.0) 203.0765 (>1000.0) 2;0 2.6418 (0.00) 5 1 256s test_copy_benchmark_large_model[optlang-glpk] 401,233.1420 (>1000.0) 459,091.4390 (>1000.0) 424,587.4358 (>1000.0) 31,308.3986 (>1000.0) 402,282.5160 (>1000.0) 57,223.5892 (>1000.0) 2;0 2.3552 (0.00) 5 1 256s test_geometric_fba_benchmark[glpk] 488,627.7440 (>1000.0) 491,330.9790 (>1000.0) 490,138.7656 (>1000.0) 1,082.8246 (>1000.0) 490,123.0760 (>1000.0) 1,698.2800 (>1000.0) 2;0 2.0402 (0.00) 5 1 256s ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 256s 256s Legend: 256s Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. 256s OPS: Operations Per Second, computed as 1 / Mean 256s =========================== short test summary info ============================ 256s FAILED tests/test_core/test_core_reaction.py::test_copy - RecursionError: max... 256s FAILED tests/test_core/test_core_reaction.py::test_add - RecursionError: maxi... 256s FAILED tests/test_core/test_core_reaction.py::test_radd - RecursionError: max... 256s FAILED tests/test_core/test_core_reaction.py::test_mul - RecursionError: maxi... 256s FAILED tests/test_core/test_core_reaction.py::test_sub - RecursionError: maxi... 256s FAILED tests/test_core/test_model.py::test_deepcopy_benchmark - RecursionErro... 256s FAILED tests/test_core/test_model.py::test_deepcopy - RecursionError: maximum... 256s FAILED tests/test_core/test_model.py::test_merge_models - RecursionError: max... 256s FAILED tests/test_flux_analysis/test_gapfilling.py::test_gapfilling - Recursi... 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_interface[optlang-glpk] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_frame[optlang-glpk] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs0] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs1] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs2] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs3] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs4] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs0] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs1] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs2] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs3] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_q8_producing_summary[optlang-glpk] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_q8_consuming_summary[optlang-glpk] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_fdp_production_with_fva[optlang-glpk] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-q8_c] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-fdp_c] 256s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-atp_c] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_interface[optlang-glpk] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_frame[optlang-glpk] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs0] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs1] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs2] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs3] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs4] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs0] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs1] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs2] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs3] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_frame_previous_solution[optlang-glpk] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_flux[optlang-glpk] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_fva[optlang-glpk] 256s FAILED tests/test_summary/test_model_summary.py::test_model_summary_flux_in_context[optlang-glpk] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_interface[optlang-glpk] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_frame[optlang-glpk] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs0] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs1] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs2] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs3] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs4] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs0] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs1] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs2] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs3] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[ACALD-0.0] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[FUM-5.06] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[PFK-7.48] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[ACALD--1.27-0.0] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[FUM-0.79-7.38] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[PFK-2.58-16.38] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[ACALD] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[FUM] 256s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[PFK] 256s = 61 failed, 455 passed, 27 skipped, 10 xfailed, 1 xpassed, 5490 warnings in 139.03s (0:02:19) = 257s autopkgtest [18:23:11]: test run-unit-test: -----------------------] 258s run-unit-test FAIL non-zero exit status 1 258s autopkgtest [18:23:12]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 258s autopkgtest [18:23:12]: @@@@@@@@@@@@@@@@@@@@ summary 258s run-unit-test FAIL non-zero exit status 1