0s autopkgtest [20:18:44]: starting date and time: 2026-02-09 20:18:44+0000 0s autopkgtest [20:18:44]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [20:18:44]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.o2c7s_j4/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: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 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-arm64 --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@sto01-arm64-13.secgroup --name adt-resolute-arm64-python-cobra-20260209-201844-juju-7f2275-prod-proposed-migration-environment-2-feabe0e5-2b61-4669-bc36-ffbd8bd30357 --image adt/ubuntu-resolute-arm64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-autopkgtest-workers-arm64 -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 4s Creating nova instance adt-resolute-arm64-python-cobra-20260209-201844-juju-7f2275-prod-proposed-migration-environment-2-feabe0e5-2b61-4669-bc36-ffbd8bd30357 from image adt/ubuntu-resolute-arm64-server-20260209.img (UUID 793037ca-75af-461b-82de-f8081300b2e3)... 57s autopkgtest [20:19:41]: testbed dpkg architecture: arm64 58s autopkgtest [20:19:42]: testbed apt version: 3.1.15 58s autopkgtest [20:19:42]: @@@@@@@@@@@@@@@@@@@@ test bed setup 58s autopkgtest [20:19:42]: testbed release detected to be: None 59s autopkgtest [20:19:43]: updating testbed package index (apt update) 59s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 59s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 59s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 59s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 59s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [1764 B] 59s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [177 kB] 59s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1655 kB] 60s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [29.4 kB] 60s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 Packages [249 kB] 60s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 c-n-f Metadata [6028 B] 60s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/restricted arm64 Packages [7724 B] 60s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/restricted arm64 c-n-f Metadata [304 B] 60s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/universe arm64 Packages [1590 kB] 60s Get:14 http://ftpmaster.internal/ubuntu resolute-proposed/universe arm64 c-n-f Metadata [31.9 kB] 60s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse arm64 Packages [21.7 kB] 60s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse arm64 c-n-f Metadata [688 B] 62s Fetched 3895 kB in 1s (3882 kB/s) 62s Reading package lists... 63s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 63s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 63s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 63s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 64s Reading package lists... 64s Reading package lists... 64s Building dependency tree... 64s Reading state information... 65s Calculating upgrade... 65s The following packages were automatically installed and are no longer required: 65s libpython3.13-minimal libpython3.13-stdlib python3.13 python3.13-minimal 65s Use 'sudo apt autoremove' to remove them. 65s The following NEW packages will be installed: 65s gcc-16-base python3.14 python3.14-minimal 65s The following packages will be upgraded: 65s binutils binutils-aarch64-linux-gnu binutils-common cryptsetup-bin 65s dracut-install gcc-15-base iproute2 iptables libatomic1 libbinutils 65s libcryptsetup12 libctf-nobfd0 libctf0 libgcc-s1 libgprofng0 libip4tc2 65s libip6tc2 libpython3-stdlib libsframe3 libstdc++6 libxtables12 python3 65s python3-gdbm python3-minimal wget 65s 25 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. 65s Need to get 10.2 MB of archives. 65s After this operation, 8618 kB of additional disk space will be used. 65s Get:1 http://ftpmaster.internal/ubuntu resolute/main arm64 python3.14-minimal arm64 3.14.2-1 [2548 kB] 65s Get:2 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 python3-minimal arm64 3.14.2-1 [28.2 kB] 65s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 python3 arm64 3.14.2-1 [22.9 kB] 65s Get:4 http://ftpmaster.internal/ubuntu resolute/main arm64 python3.14 arm64 3.14.2-1 [816 kB] 65s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libpython3-stdlib arm64 3.14.2-1 [10.9 kB] 65s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 gcc-16-base arm64 16-20260208-1ubuntu1 [59.7 kB] 65s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libgcc-s1 arm64 16-20260208-1ubuntu1 [60.9 kB] 65s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libstdc++6 arm64 16-20260208-1ubuntu1 [768 kB] 65s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libatomic1 arm64 16-20260208-1ubuntu1 [11.1 kB] 66s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 gcc-15-base arm64 15.2.0-13ubuntu3 [60.1 kB] 66s Get:11 http://ftpmaster.internal/ubuntu resolute/main arm64 iptables arm64 1.8.11-2ubuntu3 [386 kB] 66s Get:12 http://ftpmaster.internal/ubuntu resolute/main arm64 libip4tc2 arm64 1.8.11-2ubuntu3 [24.3 kB] 66s Get:13 http://ftpmaster.internal/ubuntu resolute/main arm64 libip6tc2 arm64 1.8.11-2ubuntu3 [24.7 kB] 66s Get:14 http://ftpmaster.internal/ubuntu resolute/main arm64 libxtables12 arm64 1.8.11-2ubuntu3 [36.7 kB] 66s Get:15 http://ftpmaster.internal/ubuntu resolute/main arm64 iproute2 arm64 6.18.0-1ubuntu1 [1171 kB] 66s Get:16 http://ftpmaster.internal/ubuntu resolute/main arm64 libcryptsetup12 arm64 2:2.8.0-1ubuntu3 [274 kB] 66s Get:17 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 python3-gdbm arm64 3.14.2-1 [11.1 kB] 66s Get:18 http://ftpmaster.internal/ubuntu resolute/main arm64 wget arm64 1.25.0-2ubuntu4 [344 kB] 66s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libgprofng0 arm64 2.46-1ubuntu1 [789 kB] 66s Get:20 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libctf0 arm64 2.46-1ubuntu1 [101 kB] 66s Get:21 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libctf-nobfd0 arm64 2.46-1ubuntu1 [104 kB] 66s Get:22 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 binutils-aarch64-linux-gnu arm64 2.46-1ubuntu1 [1006 kB] 66s Get:23 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libbinutils arm64 2.46-1ubuntu1 [812 kB] 66s Get:24 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 binutils arm64 2.46-1ubuntu1 [227 kB] 66s Get:25 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 binutils-common arm64 2.46-1ubuntu1 [222 kB] 66s Get:26 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libsframe3 arm64 2.46-1ubuntu1 [21.3 kB] 66s Get:27 http://ftpmaster.internal/ubuntu resolute/main arm64 cryptsetup-bin arm64 2:2.8.0-1ubuntu3 [227 kB] 66s Get:28 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 dracut-install arm64 110-1ubuntu1 [45.6 kB] 66s dpkg-preconfigure: unable to re-open stdin: No such file or directory 66s Fetched 10.2 MB in 1s (13.8 MB/s) 66s Selecting previously unselected package python3.14-minimal. 66s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 136597 files and directories currently installed.) 66s Preparing to unpack .../python3.14-minimal_3.14.2-1_arm64.deb ... 66s Unpacking python3.14-minimal (3.14.2-1) ... 67s Setting up python3.14-minimal (3.14.2-1) ... 68s (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 ... 136606 files and directories currently installed.) 68s Preparing to unpack .../python3-minimal_3.14.2-1_arm64.deb ... 68s Unpacking python3-minimal (3.14.2-1) over (3.13.9-3) ... 68s Setting up python3-minimal (3.14.2-1) ... 68s (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 ... 136606 files and directories currently installed.) 68s Preparing to unpack .../python3_3.14.2-1_arm64.deb ... 68s running python pre-rtupdate hooks for python3.14... 68s Unpacking python3 (3.14.2-1) over (3.13.9-3) ... 68s Selecting previously unselected package python3.14. 68s Preparing to unpack .../python3.14_3.14.2-1_arm64.deb ... 68s Unpacking python3.14 (3.14.2-1) ... 68s Preparing to unpack .../libpython3-stdlib_3.14.2-1_arm64.deb ... 68s Unpacking libpython3-stdlib:arm64 (3.14.2-1) over (3.13.9-3) ... 68s Selecting previously unselected package gcc-16-base:arm64. 69s Preparing to unpack .../gcc-16-base_16-20260208-1ubuntu1_arm64.deb ... 69s Unpacking gcc-16-base:arm64 (16-20260208-1ubuntu1) ... 69s Setting up gcc-16-base:arm64 (16-20260208-1ubuntu1) ... 69s (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 ... 136629 files and directories currently installed.) 69s Preparing to unpack .../libgcc-s1_16-20260208-1ubuntu1_arm64.deb ... 69s Unpacking libgcc-s1:arm64 (16-20260208-1ubuntu1) over (15.2.0-12ubuntu1) ... 69s Setting up libgcc-s1:arm64 (16-20260208-1ubuntu1) ... 69s (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 ... 136629 files and directories currently installed.) 69s Preparing to unpack .../00-libstdc++6_16-20260208-1ubuntu1_arm64.deb ... 69s Unpacking libstdc++6:arm64 (16-20260208-1ubuntu1) over (15.2.0-12ubuntu1) ... 69s Preparing to unpack .../01-libatomic1_16-20260208-1ubuntu1_arm64.deb ... 69s Unpacking libatomic1:arm64 (16-20260208-1ubuntu1) over (15.2.0-12ubuntu1) ... 69s Preparing to unpack .../02-gcc-15-base_15.2.0-13ubuntu3_arm64.deb ... 69s Unpacking gcc-15-base:arm64 (15.2.0-13ubuntu3) over (15.2.0-12ubuntu1) ... 69s Preparing to unpack .../03-iptables_1.8.11-2ubuntu3_arm64.deb ... 69s Unpacking iptables (1.8.11-2ubuntu3) over (1.8.11-2ubuntu2) ... 69s Preparing to unpack .../04-libip4tc2_1.8.11-2ubuntu3_arm64.deb ... 69s Unpacking libip4tc2:arm64 (1.8.11-2ubuntu3) over (1.8.11-2ubuntu2) ... 69s Preparing to unpack .../05-libip6tc2_1.8.11-2ubuntu3_arm64.deb ... 69s Unpacking libip6tc2:arm64 (1.8.11-2ubuntu3) over (1.8.11-2ubuntu2) ... 69s Preparing to unpack .../06-libxtables12_1.8.11-2ubuntu3_arm64.deb ... 69s Unpacking libxtables12:arm64 (1.8.11-2ubuntu3) over (1.8.11-2ubuntu2) ... 70s Preparing to unpack .../07-iproute2_6.18.0-1ubuntu1_arm64.deb ... 70s Unpacking iproute2 (6.18.0-1ubuntu1) over (6.16.0-1ubuntu3) ... 70s Preparing to unpack .../08-libcryptsetup12_2%3a2.8.0-1ubuntu3_arm64.deb ... 70s Unpacking libcryptsetup12:arm64 (2:2.8.0-1ubuntu3) over (2:2.8.0-1ubuntu2) ... 70s Preparing to unpack .../09-python3-gdbm_3.14.2-1_arm64.deb ... 70s Unpacking python3-gdbm (3.14.2-1) over (3.13.9-3) ... 70s Preparing to unpack .../10-wget_1.25.0-2ubuntu4_arm64.deb ... 70s Unpacking wget (1.25.0-2ubuntu4) over (1.25.0-2ubuntu3) ... 70s Preparing to unpack .../11-libgprofng0_2.46-1ubuntu1_arm64.deb ... 70s Unpacking libgprofng0:arm64 (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 70s Preparing to unpack .../12-libctf0_2.46-1ubuntu1_arm64.deb ... 70s Unpacking libctf0:arm64 (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 70s Preparing to unpack .../13-libctf-nobfd0_2.46-1ubuntu1_arm64.deb ... 70s Unpacking libctf-nobfd0:arm64 (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 70s Preparing to unpack .../14-binutils-aarch64-linux-gnu_2.46-1ubuntu1_arm64.deb ... 70s Unpacking binutils-aarch64-linux-gnu (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 71s Preparing to unpack .../15-libbinutils_2.46-1ubuntu1_arm64.deb ... 71s Unpacking libbinutils:arm64 (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 71s Preparing to unpack .../16-binutils_2.46-1ubuntu1_arm64.deb ... 71s Unpacking binutils (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 71s Preparing to unpack .../17-binutils-common_2.46-1ubuntu1_arm64.deb ... 71s Unpacking binutils-common:arm64 (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 71s Preparing to unpack .../18-libsframe3_2.46-1ubuntu1_arm64.deb ... 71s Unpacking libsframe3:arm64 (2.46-1ubuntu1) over (2.45.50.20260119-1ubuntu1) ... 71s Preparing to unpack .../19-cryptsetup-bin_2%3a2.8.0-1ubuntu3_arm64.deb ... 71s Unpacking cryptsetup-bin (2:2.8.0-1ubuntu3) over (2:2.8.0-1ubuntu2) ... 71s Preparing to unpack .../20-dracut-install_110-1ubuntu1_arm64.deb ... 71s Unpacking dracut-install (110-1ubuntu1) over (109-9ubuntu1) ... 71s Setting up libip4tc2:arm64 (1.8.11-2ubuntu3) ... 71s Setting up wget (1.25.0-2ubuntu4) ... 71s Setting up libip6tc2:arm64 (1.8.11-2ubuntu3) ... 71s Setting up binutils-common:arm64 (2.46-1ubuntu1) ... 71s Setting up libsframe3:arm64 (2.46-1ubuntu1) ... 71s Setting up libctf-nobfd0:arm64 (2.46-1ubuntu1) ... 71s Setting up libatomic1:arm64 (16-20260208-1ubuntu1) ... 71s Setting up libxtables12:arm64 (1.8.11-2ubuntu3) ... 71s Setting up dracut-install (110-1ubuntu1) ... 71s Setting up libcryptsetup12:arm64 (2:2.8.0-1ubuntu3) ... 71s Setting up python3.14 (3.14.2-1) ... 72s Setting up libbinutils:arm64 (2.46-1ubuntu1) ... 72s Setting up gcc-15-base:arm64 (15.2.0-13ubuntu3) ... 72s Setting up libstdc++6:arm64 (16-20260208-1ubuntu1) ... 72s Setting up libpython3-stdlib:arm64 (3.14.2-1) ... 73s Setting up libctf0:arm64 (2.46-1ubuntu1) ... 73s Setting up cryptsetup-bin (2:2.8.0-1ubuntu3) ... 73s Setting up python3-gdbm (3.14.2-1) ... 73s Setting up iptables (1.8.11-2ubuntu3) ... 73s Setting up iproute2 (6.18.0-1ubuntu1) ... 73s Setting up binutils-aarch64-linux-gnu (2.46-1ubuntu1) ... 73s Setting up python3 (3.14.2-1) ... 73s running python rtupdate hooks for python3.14... 73s running python post-rtupdate hooks for python3.14... 73s Setting up libgprofng0:arm64 (2.46-1ubuntu1) ... 73s Setting up binutils (2.46-1ubuntu1) ... 73s Processing triggers for install-info (7.2-5) ... 73s Processing triggers for libc-bin (2.42-2ubuntu4) ... 73s Processing triggers for systemd (259-1ubuntu3) ... 73s Processing triggers for man-db (2.13.1-1build1) ... 75s autopkgtest [20:19:59]: upgrading testbed (apt dist-upgrade and autopurge) 75s Reading package lists... 75s Building dependency tree... 75s Reading state information... 75s Calculating upgrade... 75s The following packages were automatically installed and are no longer required: 75s libpython3.13-minimal libpython3.13-stdlib python3.13 python3.13-minimal 75s Use 'sudo apt autoremove' to remove them. 76s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 76s Reading package lists... 76s Building dependency tree... 76s Reading state information... 76s Solving dependencies... 76s The following packages will be REMOVED: 76s libpython3.13-minimal* libpython3.13-stdlib* python3.13* python3.13-minimal* 77s 0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded. 77s After this operation, 24.2 MB disk space will be freed. 77s (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 ... 136630 files and directories currently installed.) 77s Removing python3.13 (3.13.11-1) ... 77s Removing libpython3.13-stdlib:arm64 (3.13.11-1) ... 77s Removing python3.13-minimal (3.13.11-1) ... 78s Removing libpython3.13-minimal:arm64 (3.13.11-1) ... 78s Processing triggers for man-db (2.13.1-1build1) ... 78s Processing triggers for systemd (259-1ubuntu3) ... 78s (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 ... 135891 files and directories currently installed.) 78s Purging configuration files for libpython3.13-minimal:arm64 (3.13.11-1) ... 78s Purging configuration files for python3.13-minimal (3.13.11-1) ... 81s autopkgtest [20:20:05]: testbed running kernel: Linux 6.19.0-3-generic #3-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 23 19:46:27 UTC 2026 81s autopkgtest [20:20:05]: @@@@@@@@@@@@@@@@@@@@ apt-source python-cobra 84s Get:1 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (dsc) [3080 B] 84s Get:2 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (tar) [3651 kB] 84s Get:3 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (diff) [11.1 kB] 84s gpgv: Signature made Wed Jul 2 22:43:59 2025 UTC 84s gpgv: using RSA key 8F6DE104377F3B11E741748731F3144544A1741A 84s gpgv: issuer "tchet@debian.org" 84s gpgv: Can't check signature: No public key 84s dpkg-source: warning: cannot verify inline signature for ./python-cobra_0.29.1-3.dsc: no acceptable signature found 84s autopkgtest [20:20:08]: testing package python-cobra version 0.29.1-3 84s autopkgtest [20:20:08]: build not needed 86s autopkgtest [20:20:10]: test run-unit-test: preparing testbed 86s Reading package lists... 86s Building dependency tree... 86s Reading state information... 86s Solving dependencies... 87s The following NEW packages will be installed: 87s diffstat gettext libamd3 libblas3 libcolamd3 libgfortran5 libglpk40 libgomp1 87s liblapack3 libltdl7 libqhull-r8.0 libsuitesparseconfig7 python-cobra-data 87s python3-annotated-types python3-anyio python3-click python3-cobra 87s python3-cpuinfo python3-decorator python3-depinfo python3-diskcache 87s python3-dnspython python3-email-validator python3-h11 python3-httpcore 87s python3-httpx python3-iniconfig python3-mpmath python3-numpy 87s python3-numpy-dev python3-optlang python3-pandas python3-pandas-lib 87s python3-platformdirs python3-pluggy python3-pydantic python3-pydantic-core 87s python3-pytest python3-pytest-benchmark python3-pytest-mock python3-pytz 87s python3-ruamel.yaml python3-ruamel.yaml.clib python3-sbml5 python3-scipy 87s python3-sniffio python3-swiglpk python3-sympy python3-tabulate 87s python3-typing-inspection quilt 87s 0 upgraded, 51 newly installed, 0 to remove and 0 not upgraded. 87s Need to get 57.2 MB of archives. 87s After this operation, 319 MB of additional disk space will be used. 87s Get:1 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-numpy-dev arm64 1:2.3.5+ds-3 [366 kB] 87s Get:2 http://ftpmaster.internal/ubuntu resolute/main arm64 libblas3 arm64 3.12.1-7ubuntu1 [181 kB] 87s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libgfortran5 arm64 16-20260208-1ubuntu1 [447 kB] 87s Get:4 http://ftpmaster.internal/ubuntu resolute/main arm64 liblapack3 arm64 3.12.1-7ubuntu1 [2299 kB] 87s Get:5 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-numpy arm64 1:2.3.5+ds-3 [4569 kB] 88s Get:6 http://ftpmaster.internal/ubuntu resolute/main arm64 diffstat arm64 1.68-1 [29.1 kB] 88s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 libgomp1 arm64 16-20260208-1ubuntu1 [154 kB] 88s Get:8 http://ftpmaster.internal/ubuntu resolute/main arm64 gettext arm64 0.23.2-1 [998 kB] 88s Get:9 http://ftpmaster.internal/ubuntu resolute/main arm64 libsuitesparseconfig7 arm64 1:7.12.1+dfsg-1 [22.0 kB] 88s Get:10 http://ftpmaster.internal/ubuntu resolute/universe arm64 libamd3 arm64 1:7.12.1+dfsg-1 [34.6 kB] 88s Get:11 http://ftpmaster.internal/ubuntu resolute/main arm64 libcolamd3 arm64 1:7.12.1+dfsg-1 [27.1 kB] 88s Get:12 http://ftpmaster.internal/ubuntu resolute/main arm64 libltdl7 arm64 2.5.4-9 [43.3 kB] 88s Get:13 http://ftpmaster.internal/ubuntu resolute/universe arm64 libglpk40 arm64 5.0-2 [347 kB] 88s Get:14 http://ftpmaster.internal/ubuntu resolute/universe arm64 libqhull-r8.0 arm64 2020.2-8 [191 kB] 88s Get:15 http://ftpmaster.internal/ubuntu resolute/universe arm64 python-cobra-data all 0.29.1-3 [1611 kB] 88s Get:16 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-annotated-types all 0.7.0-1 [19.4 kB] 88s Get:17 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-sniffio all 1.3.1-1 [7262 B] 88s Get:18 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-anyio all 4.11.0-3 [72.6 kB] 88s Get:19 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-click all 8.2.0+0.really.8.1.8-1build1 [80.2 kB] 88s Get:20 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-depinfo arm64 2.2.0-4 [11.2 kB] 88s Get:21 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-diskcache all 5.6.3-1 [35.1 kB] 88s Get:22 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-h11 all 0.14.0-1.1 [51.6 kB] 88s Get:23 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-httpcore all 1.0.9-1 [38.9 kB] 88s Get:24 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-httpx all 0.28.1-1build1 [59.4 kB] 88s Get:25 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-swiglpk arm64 5.0.10-2build3 [101 kB] 88s Get:26 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-mpmath all 1.3.0-2 [423 kB] 88s Get:27 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-sympy all 1.14.0-2 [4306 kB] 88s Get:28 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-optlang all 1.8.3-1 [5368 kB] 88s Get:29 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pytz all 2025.2-5 [32.4 kB] 88s Get:30 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pandas-lib arm64 2.3.3+dfsg-3 [6290 kB] 89s Get:31 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pandas all 2.3.3+dfsg-3 [2948 kB] 89s Get:32 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-platformdirs all 4.5.1-1 [17.1 kB] 89s Get:33 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pydantic-core arm64 2.41.5-2 [2170 kB] 89s Get:34 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-typing-inspection all 0.4.2-1 [13.1 kB] 89s Get:35 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-dnspython all 2.7.0-1ubuntu2 [167 kB] 89s Get:36 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-email-validator all 2.2.0-1 [28.5 kB] 89s Get:37 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pydantic arm64 2.12.5-2 [312 kB] 89s Get:38 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-ruamel.yaml.clib arm64 0.2.15+ds-1 [178 kB] 89s Get:39 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-ruamel.yaml all 0.18.10+ds-1 [127 kB] 89s Get:40 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-tabulate all 0.9.0-1build1 [45.4 kB] 89s Get:41 http://ftpmaster.internal/ubuntu resolute-proposed/universe arm64 python3-sbml5 arm64 5.20.5+dfsg-2 [3560 kB] 89s Get:42 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-cobra arm64 0.29.1-3 [1118 kB] 89s Get:43 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-cpuinfo all 9.0.0+git20221119-3 [21.7 kB] 89s Get:44 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-decorator all 5.2.1-2 [28.1 kB] 89s Get:45 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-iniconfig all 2.1.0-2 [6962 B] 89s Get:46 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pluggy all 1.6.0-2 [21.1 kB] 89s Get:47 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pytest all 9.0.2-2 [277 kB] 89s Get:48 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pytest-benchmark all 5.2.3-1 [40.0 kB] 89s Get:49 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pytest-mock all 3.15.1-1 [11.9 kB] 89s Get:50 http://ftpmaster.internal/ubuntu resolute/universe arm64 quilt all 0.68-1 [439 kB] 89s Get:51 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-scipy arm64 1.16.3-4 [17.5 MB] 90s Fetched 57.2 MB in 3s (21.8 MB/s) 90s Selecting previously unselected package python3-numpy-dev:arm64. 90s (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 ... 135891 files and directories currently installed.) 90s Preparing to unpack .../00-python3-numpy-dev_1%3a2.3.5+ds-3_arm64.deb ... 90s Unpacking python3-numpy-dev:arm64 (1:2.3.5+ds-3) ... 90s Selecting previously unselected package libblas3:arm64. 90s Preparing to unpack .../01-libblas3_3.12.1-7ubuntu1_arm64.deb ... 90s Unpacking libblas3:arm64 (3.12.1-7ubuntu1) ... 90s Selecting previously unselected package libgfortran5:arm64. 90s Preparing to unpack .../02-libgfortran5_16-20260208-1ubuntu1_arm64.deb ... 90s Unpacking libgfortran5:arm64 (16-20260208-1ubuntu1) ... 90s Selecting previously unselected package liblapack3:arm64. 90s Preparing to unpack .../03-liblapack3_3.12.1-7ubuntu1_arm64.deb ... 90s Unpacking liblapack3:arm64 (3.12.1-7ubuntu1) ... 90s Selecting previously unselected package python3-numpy. 90s Preparing to unpack .../04-python3-numpy_1%3a2.3.5+ds-3_arm64.deb ... 90s Unpacking python3-numpy (1:2.3.5+ds-3) ... 90s Selecting previously unselected package diffstat. 90s Preparing to unpack .../05-diffstat_1.68-1_arm64.deb ... 90s Unpacking diffstat (1.68-1) ... 90s Selecting previously unselected package libgomp1:arm64. 90s Preparing to unpack .../06-libgomp1_16-20260208-1ubuntu1_arm64.deb ... 90s Unpacking libgomp1:arm64 (16-20260208-1ubuntu1) ... 90s Selecting previously unselected package gettext. 90s Preparing to unpack .../07-gettext_0.23.2-1_arm64.deb ... 90s Unpacking gettext (0.23.2-1) ... 90s Selecting previously unselected package libsuitesparseconfig7:arm64. 90s Preparing to unpack .../08-libsuitesparseconfig7_1%3a7.12.1+dfsg-1_arm64.deb ... 90s Unpacking libsuitesparseconfig7:arm64 (1:7.12.1+dfsg-1) ... 90s Selecting previously unselected package libamd3:arm64. 90s Preparing to unpack .../09-libamd3_1%3a7.12.1+dfsg-1_arm64.deb ... 90s Unpacking libamd3:arm64 (1:7.12.1+dfsg-1) ... 90s Selecting previously unselected package libcolamd3:arm64. 90s Preparing to unpack .../10-libcolamd3_1%3a7.12.1+dfsg-1_arm64.deb ... 90s Unpacking libcolamd3:arm64 (1:7.12.1+dfsg-1) ... 90s Selecting previously unselected package libltdl7:arm64. 91s Preparing to unpack .../11-libltdl7_2.5.4-9_arm64.deb ... 91s Unpacking libltdl7:arm64 (2.5.4-9) ... 91s Selecting previously unselected package libglpk40:arm64. 91s Preparing to unpack .../12-libglpk40_5.0-2_arm64.deb ... 91s Unpacking libglpk40:arm64 (5.0-2) ... 91s Selecting previously unselected package libqhull-r8.0:arm64. 91s Preparing to unpack .../13-libqhull-r8.0_2020.2-8_arm64.deb ... 91s Unpacking libqhull-r8.0:arm64 (2020.2-8) ... 91s Selecting previously unselected package python-cobra-data. 91s Preparing to unpack .../14-python-cobra-data_0.29.1-3_all.deb ... 91s Unpacking python-cobra-data (0.29.1-3) ... 91s Selecting previously unselected package python3-annotated-types. 91s Preparing to unpack .../15-python3-annotated-types_0.7.0-1_all.deb ... 91s Unpacking python3-annotated-types (0.7.0-1) ... 91s Selecting previously unselected package python3-sniffio. 91s Preparing to unpack .../16-python3-sniffio_1.3.1-1_all.deb ... 91s Unpacking python3-sniffio (1.3.1-1) ... 91s Selecting previously unselected package python3-anyio. 91s Preparing to unpack .../17-python3-anyio_4.11.0-3_all.deb ... 91s Unpacking python3-anyio (4.11.0-3) ... 91s Selecting previously unselected package python3-click. 91s Preparing to unpack .../18-python3-click_8.2.0+0.really.8.1.8-1build1_all.deb ... 91s Unpacking python3-click (8.2.0+0.really.8.1.8-1build1) ... 91s Selecting previously unselected package python3-depinfo. 91s Preparing to unpack .../19-python3-depinfo_2.2.0-4_arm64.deb ... 91s Unpacking python3-depinfo (2.2.0-4) ... 91s Selecting previously unselected package python3-diskcache. 91s Preparing to unpack .../20-python3-diskcache_5.6.3-1_all.deb ... 91s Unpacking python3-diskcache (5.6.3-1) ... 91s Selecting previously unselected package python3-h11. 91s Preparing to unpack .../21-python3-h11_0.14.0-1.1_all.deb ... 91s Unpacking python3-h11 (0.14.0-1.1) ... 91s Selecting previously unselected package python3-httpcore. 91s Preparing to unpack .../22-python3-httpcore_1.0.9-1_all.deb ... 91s Unpacking python3-httpcore (1.0.9-1) ... 91s Selecting previously unselected package python3-httpx. 91s Preparing to unpack .../23-python3-httpx_0.28.1-1build1_all.deb ... 91s Unpacking python3-httpx (0.28.1-1build1) ... 91s Selecting previously unselected package python3-swiglpk. 91s Preparing to unpack .../24-python3-swiglpk_5.0.10-2build3_arm64.deb ... 91s Unpacking python3-swiglpk (5.0.10-2build3) ... 91s Selecting previously unselected package python3-mpmath. 91s Preparing to unpack .../25-python3-mpmath_1.3.0-2_all.deb ... 91s Unpacking python3-mpmath (1.3.0-2) ... 91s Selecting previously unselected package python3-sympy. 91s Preparing to unpack .../26-python3-sympy_1.14.0-2_all.deb ... 91s Unpacking python3-sympy (1.14.0-2) ... 91s Selecting previously unselected package python3-optlang. 91s Preparing to unpack .../27-python3-optlang_1.8.3-1_all.deb ... 91s Unpacking python3-optlang (1.8.3-1) ... 91s Selecting previously unselected package python3-pytz. 91s Preparing to unpack .../28-python3-pytz_2025.2-5_all.deb ... 91s Unpacking python3-pytz (2025.2-5) ... 92s Selecting previously unselected package python3-pandas-lib:arm64. 92s Preparing to unpack .../29-python3-pandas-lib_2.3.3+dfsg-3_arm64.deb ... 92s Unpacking python3-pandas-lib:arm64 (2.3.3+dfsg-3) ... 92s Selecting previously unselected package python3-pandas. 92s Preparing to unpack .../30-python3-pandas_2.3.3+dfsg-3_all.deb ... 92s Unpacking python3-pandas (2.3.3+dfsg-3) ... 92s Selecting previously unselected package python3-platformdirs. 92s Preparing to unpack .../31-python3-platformdirs_4.5.1-1_all.deb ... 92s Unpacking python3-platformdirs (4.5.1-1) ... 92s Selecting previously unselected package python3-pydantic-core. 92s Preparing to unpack .../32-python3-pydantic-core_2.41.5-2_arm64.deb ... 92s Unpacking python3-pydantic-core (2.41.5-2) ... 92s Selecting previously unselected package python3-typing-inspection. 92s Preparing to unpack .../33-python3-typing-inspection_0.4.2-1_all.deb ... 92s Unpacking python3-typing-inspection (0.4.2-1) ... 92s Selecting previously unselected package python3-dnspython. 92s Preparing to unpack .../34-python3-dnspython_2.7.0-1ubuntu2_all.deb ... 92s Unpacking python3-dnspython (2.7.0-1ubuntu2) ... 92s Selecting previously unselected package python3-email-validator. 92s Preparing to unpack .../35-python3-email-validator_2.2.0-1_all.deb ... 92s Unpacking python3-email-validator (2.2.0-1) ... 92s Selecting previously unselected package python3-pydantic. 92s Preparing to unpack .../36-python3-pydantic_2.12.5-2_arm64.deb ... 92s Unpacking python3-pydantic (2.12.5-2) ... 92s Selecting previously unselected package python3-ruamel.yaml.clib. 92s Preparing to unpack .../37-python3-ruamel.yaml.clib_0.2.15+ds-1_arm64.deb ... 92s Unpacking python3-ruamel.yaml.clib (0.2.15+ds-1) ... 92s Selecting previously unselected package python3-ruamel.yaml. 92s Preparing to unpack .../38-python3-ruamel.yaml_0.18.10+ds-1_all.deb ... 92s Unpacking python3-ruamel.yaml (0.18.10+ds-1) ... 92s Selecting previously unselected package python3-tabulate. 92s Preparing to unpack .../39-python3-tabulate_0.9.0-1build1_all.deb ... 92s Unpacking python3-tabulate (0.9.0-1build1) ... 92s Selecting previously unselected package python3-sbml5. 92s Preparing to unpack .../40-python3-sbml5_5.20.5+dfsg-2_arm64.deb ... 92s Unpacking python3-sbml5 (5.20.5+dfsg-2) ... 92s Selecting previously unselected package python3-cobra. 93s Preparing to unpack .../41-python3-cobra_0.29.1-3_arm64.deb ... 93s Unpacking python3-cobra (0.29.1-3) ... 93s Selecting previously unselected package python3-cpuinfo. 93s Preparing to unpack .../42-python3-cpuinfo_9.0.0+git20221119-3_all.deb ... 93s Unpacking python3-cpuinfo (9.0.0+git20221119-3) ... 93s Selecting previously unselected package python3-decorator. 93s Preparing to unpack .../43-python3-decorator_5.2.1-2_all.deb ... 93s Unpacking python3-decorator (5.2.1-2) ... 93s Selecting previously unselected package python3-iniconfig. 93s Preparing to unpack .../44-python3-iniconfig_2.1.0-2_all.deb ... 93s Unpacking python3-iniconfig (2.1.0-2) ... 93s Selecting previously unselected package python3-pluggy. 93s Preparing to unpack .../45-python3-pluggy_1.6.0-2_all.deb ... 93s Unpacking python3-pluggy (1.6.0-2) ... 93s Selecting previously unselected package python3-pytest. 93s Preparing to unpack .../46-python3-pytest_9.0.2-2_all.deb ... 93s Unpacking python3-pytest (9.0.2-2) ... 93s Selecting previously unselected package python3-pytest-benchmark. 93s Preparing to unpack .../47-python3-pytest-benchmark_5.2.3-1_all.deb ... 93s Unpacking python3-pytest-benchmark (5.2.3-1) ... 93s Selecting previously unselected package python3-pytest-mock. 93s Preparing to unpack .../48-python3-pytest-mock_3.15.1-1_all.deb ... 93s Unpacking python3-pytest-mock (3.15.1-1) ... 93s Selecting previously unselected package quilt. 93s Preparing to unpack .../49-quilt_0.68-1_all.deb ... 93s Unpacking quilt (0.68-1) ... 93s Selecting previously unselected package python3-scipy. 93s Preparing to unpack .../50-python3-scipy_1.16.3-4_arm64.deb ... 93s Unpacking python3-scipy (1.16.3-4) ... 93s Setting up python3-iniconfig (2.1.0-2) ... 94s Setting up python3-sniffio (1.3.1-1) ... 94s Setting up python3-pydantic-core (2.41.5-2) ... 94s Setting up python3-typing-inspection (0.4.2-1) ... 94s Setting up python3-anyio (4.11.0-3) ... 94s Setting up python3-ruamel.yaml.clib (0.2.15+ds-1) ... 94s Setting up python3-tabulate (0.9.0-1build1) ... 94s Setting up libqhull-r8.0:arm64 (2020.2-8) ... 94s Setting up python3-pytz (2025.2-5) ... 95s Setting up libgomp1:arm64 (16-20260208-1ubuntu1) ... 95s Setting up python3-click (8.2.0+0.really.8.1.8-1build1) ... 95s Setting up python3-annotated-types (0.7.0-1) ... 95s Setting up python3-sbml5 (5.20.5+dfsg-2) ... 95s Setting up python3-platformdirs (4.5.1-1) ... 95s Setting up python3-decorator (5.2.1-2) ... 96s Setting up libblas3:arm64 (3.12.1-7ubuntu1) ... 96s update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/aarch64-linux-gnu/libblas.so.3 (libblas.so.3-aarch64-linux-gnu) in auto mode 96s Setting up diffstat (1.68-1) ... 96s Setting up python3-numpy-dev:arm64 (1:2.3.5+ds-3) ... 96s Setting up python3-h11 (0.14.0-1.1) ... 96s Setting up python3-depinfo (2.2.0-4) ... 96s Setting up python3-cpuinfo (9.0.0+git20221119-3) ... 96s Setting up libltdl7:arm64 (2.5.4-9) ... 96s Setting up libgfortran5:arm64 (16-20260208-1ubuntu1) ... 96s Setting up python3-pluggy (1.6.0-2) ... 96s Setting up python3-ruamel.yaml (0.18.10+ds-1) ... 96s Setting up python3-dnspython (2.7.0-1ubuntu2) ... 97s Setting up libsuitesparseconfig7:arm64 (1:7.12.1+dfsg-1) ... 97s Setting up python3-email-validator (2.2.0-1) ... 97s Setting up python3-mpmath (1.3.0-2) ... 97s Setting up python3-diskcache (5.6.3-1) ... 98s Setting up python-cobra-data (0.29.1-3) ... 98s Setting up python3-httpcore (1.0.9-1) ... 98s Setting up python3-sympy (1.14.0-2) ... 104s /usr/lib/python3/dist-packages/sympy/testing/runtests.py:283: SyntaxWarning: 'return' in a 'finally' block 104s return p.returncode 104s Setting up liblapack3:arm64 (3.12.1-7ubuntu1) ... 104s update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/aarch64-linux-gnu/liblapack.so.3 (liblapack.so.3-aarch64-linux-gnu) in auto mode 104s Setting up gettext (0.23.2-1) ... 104s Setting up libamd3:arm64 (1:7.12.1+dfsg-1) ... 104s Setting up libcolamd3:arm64 (1:7.12.1+dfsg-1) ... 104s Setting up python3-pytest (9.0.2-2) ... 104s Setting up quilt (0.68-1) ... 104s Setting up python3-httpx (0.28.1-1build1) ... 105s Setting up libglpk40:arm64 (5.0-2) ... 105s Setting up python3-pydantic (2.12.5-2) ... 105s Setting up python3-numpy (1:2.3.5+ds-3) ... 107s Setting up python3-pytest-mock (3.15.1-1) ... 107s Setting up python3-swiglpk (5.0.10-2build3) ... 107s Setting up python3-optlang (1.8.3-1) ... 108s Setting up python3-pytest-benchmark (5.2.3-1) ... 108s Setting up python3-scipy (1.16.3-4) ... 112s Setting up python3-pandas-lib:arm64 (2.3.3+dfsg-3) ... 112s Setting up python3-pandas (2.3.3+dfsg-3) ... 116s Setting up python3-cobra (0.29.1-3) ... 117s Processing triggers for libc-bin (2.42-2ubuntu4) ... 117s Processing triggers for man-db (2.13.1-1build1) ... 117s Processing triggers for install-info (7.2-5) ... 118s autopkgtest [20:20:42]: test run-unit-test: [----------------------- 118s File series fully applied, ends at patch debian/patches/pr1452.patch 118s Running Tests 118s Since python3-sbml5 can only deal with one Python3 version we restrict the test to default Python3 122s ============================= test session starts ============================== 122s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 122s 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) 122s rootdir: /tmp/autopkgtest.WZIW32/autopkgtest_tmp 122s plugins: typeguard-4.4.4, mock-3.15.1, anyio-4.11.0, benchmark-5.2.3 122s collected 554 items 122s 122s tests/test_core/test_configuration.py ...... [ 1%] 128s tests/test_core/test_core_reaction.py ..........ss.............F..FFFF.. [ 7%] 128s ...................x....... [ 12%] 128s tests/test_core/test_dictlist.py ...................... [ 16%] 128s tests/test_core/test_formula.py ..... [ 16%] 128s tests/test_core/test_gene.py . [ 17%] 128s tests/test_core/test_gpr.py ......................x..x.................. [ 25%] 136s ........................... [ 29%] 136s tests/test_core/test_group.py .. [ 30%] 136s tests/test_core/test_metabolite.py ...ss.ss. [ 31%] 142s tests/test_core/test_model.py .........................FF.F............. [ 39%] 142s ...........s..s.ss. [ 42%] 142s tests/test_core/test_solution.py .ss [ 43%] 147s tests/test_flux_analysis/test_deletion.py ....s..... [ 45%] 149s tests/test_flux_analysis/test_fastcc.py .... [ 46%] 151s tests/test_flux_analysis/test_geometric.py .. [ 46%] 152s tests/test_flux_analysis/test_moma.py . [ 46%] 155s tests/test_flux_analysis/test_parsimonious.py .. [ 46%] 155s tests/test_flux_analysis/test_reaction.py . [ 47%] 157s tests/test_flux_analysis/test_room.py .... [ 47%] 165s tests/test_flux_analysis/test_variability.py ....... [ 49%] 165s tests/test_flux_analysis/test_deletion.py sss [ 49%] 165s tests/test_flux_analysis/test_moma.py s [ 49%] 174s tests/test_flux_analysis/test_deletion.py ...... [ 50%] 175s tests/test_flux_analysis/test_gapfilling.py F [ 51%] 175s tests/test_flux_analysis/test_helpers.py ... [ 51%] 176s tests/test_flux_analysis/test_loopless.py ..... [ 52%] 179s tests/test_flux_analysis/test_phenotype_phase_plane.py ...... [ 53%] 179s tests/test_flux_analysis/test_variability.py ....... [ 54%] 179s tests/test_io/test_annotation.py .. [ 55%] 179s tests/test_io/test_annotation_format.py .. [ 55%] 182s tests/test_io/test_io_order.py ........................... [ 60%] 182s tests/test_io/test_json.py .... [ 61%] 194s tests/test_io/test_mat.py ............... [ 63%] 194s tests/test_io/test_notes.py . [ 64%] 194s tests/test_io/test_pickle.py .. [ 64%] 200s tests/test_io/test_sbml.py .ssss............xxxx.x.x..s............. [ 71%] 200s tests/test_io/test_web/test_load.py ..ssss. [ 73%] 200s tests/test_io/test_yaml.py .x [ 73%] 200s tests/test_manipulation/test_annotate.py . [ 73%] 201s tests/test_manipulation/test_delete.py ....... [ 74%] 201s tests/test_manipulation/test_modify.py ... [ 75%] 201s tests/test_manipulation/test_validate.py .. [ 75%] 202s tests/test_medium/test_boundary_types.py ........... [ 77%] 203s tests/test_medium/test_minimal_medium.py .......... [ 79%] 206s tests/test_sampling/test_achr.py ...... [ 80%] 208s tests/test_sampling/test_optgp.py ...... [ 81%] 216s tests/test_sampling/test_sampling.py .......... [ 83%] 218s tests/test_summary/test_metabolite_summary.py FFFFFFFFFFFFFFFFF [ 86%] 219s tests/test_summary/test_model_summary.py FFFFFFFFFFFFFFF [ 89%] 221s tests/test_summary/test_reaction_summary.py FFFFFFFFFFFFFFFFFFFF [ 92%] 221s tests/test_util/test_array.py .. [ 93%] 221s tests/test_util/test_context.py ... [ 93%] 240s tests/test_util/test_process_pool.py ............... [ 96%] 241s tests/test_util/test_solver.py ..............s [ 99%] 241s tests/test_util/test_util.py ...X [100%] 241s 241s =================================== FAILURES =================================== 241s __________________________________ test_copy ___________________________________ 241s 241s model = 241s 241s def test_copy(model: Model) -> None: 241s """Test reaction copying.""" 241s PGI = model.reactions.PGI 241s > copied = PGI.copy() 241s ^^^^^^^^^^ 241s 241s tests/test_core/test_core_reaction.py:393: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________________________________ test_add ___________________________________ 241s 241s model = 241s 241s def test_add(model: Model) -> None: 241s """Test reaction addition to model.""" 241s # Not in place addition should work on a copy 241s > new = model.reactions.PGI + model.reactions.EX_h2o_e 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_core/test_core_reaction.py:469: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:989: in __add__ 241s new_reaction = self.copy() 241s ^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s __________________________________ test_radd ___________________________________ 241s 241s model = 241s 241s def test_radd(model: Model) -> None: 241s """Test __radd__ for a reaction.""" 241s > new = sum([model.reactions.PGI, model.reactions.EX_h2o_e]) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_core/test_core_reaction.py:485: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:989: in __add__ 241s new_reaction = self.copy() 241s ^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________________________________ test_mul ___________________________________ 241s 241s model = 241s 241s def test_mul(model: Model) -> None: 241s """Test scalar multiplication of factors with a reaction.""" 241s > new = model.reactions.PGI * 2 241s ^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_core/test_core_reaction.py:492: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1131: in __mul__ 241s new = self.copy() 241s ^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________________________________ test_sub ___________________________________ 241s 241s model = 241s 241s def test_sub(model: Model) -> None: 241s """Test reaction subtraction.""" 241s > new = model.reactions.PGI - model.reactions.EX_h2o_e 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_core/test_core_reaction.py:498: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1050: in __sub__ 241s new = self.copy() 241s ^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________________________ test_deepcopy_benchmark ____________________________ 241s 241s model = 241s benchmark = 241s 241s def test_deepcopy_benchmark(model: Model, benchmark: BenchmarkFixture) -> None: 241s """Benchmark deepcopying a model. 241s 241s Parameters 241s ---------- 241s model: cobra.Model 241s benchmark: BenchmarkFixture 241s """ 241s > benchmark(deepcopy, model) 241s 241s tests/test_core/test_model.py:613: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:184: in __call__ 241s return self._raw(function_to_benchmark, *args, **kwargs) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:216: in _raw 241s duration, iterations, loops_range = self._calibrate_timer(runner) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:370: in _calibrate_timer 241s duration = runner(loops_range) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:138: in runner 241s function_to_benchmark(*args, **kwargs) 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:240: in _reconstruct 241s state = deepcopy(state, memo) 241s ^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:131: in deepcopy 241s y = copier(x, memo) 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:202: in _deepcopy_dict 241s y[deepcopy(key, memo)] = deepcopy(value, memo) 241s ^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:257: in _reconstruct 241s item = deepcopy(item, memo) 241s ^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ________________________________ test_deepcopy _________________________________ 241s 241s model = 241s 241s def test_deepcopy(model: Model) -> None: 241s """Test deepcopying works, and maintains reference structures. 241s 241s Parameters 241s ---------- 241s model: cobra.Model 241s """ 241s # Reference structures are maintained when deepcopying 241s > model_copy = deepcopy(model) 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_core/test_model.py:624: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:240: in _reconstruct 241s state = deepcopy(state, memo) 241s ^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:131: in deepcopy 241s y = copier(x, memo) 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:202: in _deepcopy_dict 241s y[deepcopy(key, memo)] = deepcopy(value, memo) 241s ^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:257: in _reconstruct 241s item = deepcopy(item, memo) 241s ^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ______________________________ test_merge_models _______________________________ 241s 241s model = 241s tiny_toy_model = 241s 241s def test_merge_models(model: Model, tiny_toy_model: Model) -> None: 241s """Test merging models. 241s 241s Parameters 241s ---------- 241s model: cobra.Model 241s tiny_toy_model: cobra.Model 241s """ 241s with model, tiny_toy_model: 241s # Add some cons/vars to tiny_toy_model for testing merging 241s tiny_toy_model.add_reactions([Reaction("EX_glc__D_e")]) 241s variable = tiny_toy_model.problem.Variable("foo") 241s constraint = tiny_toy_model.problem.Constraint( 241s variable, ub=0, lb=0, name="constraint" 241s ) 241s tiny_toy_model.add_cons_vars([variable, constraint]) 241s 241s > merged = model.merge( 241s tiny_toy_model, inplace=False, objective="sum", prefix_existing="tiny_" 241s ) 241s 241s tests/test_core/test_model.py:679: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1454: in merge 241s new_reactions = deepcopy(right.reactions) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:257: in _reconstruct 241s item = deepcopy(item, memo) 241s ^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _______________________________ test_gapfilling ________________________________ 241s 241s salmonella = 241s 241s def test_gapfilling(salmonella: Model) -> None: 241s """Test Gapfilling.""" 241s m = Model() 241s m.add_metabolites([Metabolite(m_id) for m_id in ["a", "b", "c"]]) 241s exa = Reaction("EX_a") 241s exa.add_metabolites({m.metabolites.a: 1}) 241s b2c = Reaction("b2c") 241s b2c.add_metabolites({m.metabolites.b: -1, m.metabolites.c: 1}) 241s dmc = Reaction("DM_c") 241s dmc.add_metabolites({m.metabolites.c: -1}) 241s m.add_reactions([exa, b2c, dmc]) 241s m.objective = "DM_c" 241s 241s universal = Model() 241s a2b = Reaction("a2b") 241s a2d = Reaction("a2d") 241s universal.add_reactions([a2b, a2d]) 241s a2b.build_reaction_from_string("a --> b", verbose=False) 241s a2d.build_reaction_from_string("a --> d", verbose=False) 241s 241s # # GrowMatch 241s # result = gapfilling.growMatch(m, universal)[0] 241s result = gapfill(m, universal)[0] 241s assert len(result) == 1 241s assert result[0].id == "a2b" 241s 241s # # SMILEY 241s # result = gapfilling.SMILEY(m, "b", universal)[0] 241s with m: 241s m.objective = m.add_boundary(m.metabolites.b, type="demand") 241s result = gapfill(m, universal)[0] 241s assert len(result) == 1 241s assert result[0].id == "a2b" 241s 241s # # 2 rounds of GrowMatch with exchange reactions 241s # result = gapfilling.growMatch(m, None, ex_rxns=True, iterations=2) 241s result = gapfill(m, None, exchange_reactions=True, iterations=2) 241s assert len(result) == 2 241s assert len(result[0]) == 1 241s assert len(result[1]) == 1 241s assert {i[0].id for i in result} == {"EX_b", "EX_c"} 241s 241s # # Gapfilling solution adds metabolites not present in original model 241s # test for when demand = T 241s # a demand reaction must be added to clear new metabolite 241s universal_noDM = Model() 241s a2b = Reaction("a2b") 241s universal_noDM.add_reactions([a2b]) 241s a2b.build_reaction_from_string("a --> b + d", verbose=False) 241s result = gapfill( 241s m, universal_noDM, exchange_reactions=False, demand_reactions=True 241s )[0] 241s # add reaction a2b and demand reaction to clear met d 241s assert len(result) == 2 241s assert "a2b" in [x.id for x in result] 241s 241s # test for when demand = False 241s # test for when metabolites are added to the model and 241s # must be cleared by other reactions in universal model 241s # (i.e. not necessarily a demand reaction) 241s universal_withDM = universal_noDM.copy() 241s d_dm = Reaction("d_dm") 241s universal_withDM.add_reactions([d_dm]) 241s d_dm.build_reaction_from_string("d -->", verbose=False) 241s result = gapfill( 241s m, universal_withDM, exchange_reactions=False, demand_reactions=False 241s )[0] 241s assert len(result) == 2 241s assert "a2b" in [x.id for x in result] 241s 241s # somewhat bigger model 241s universal = Model("universal_reactions") 241s with salmonella as model: 241s for i in [i.id for i in model.metabolites.f6p_c.reactions]: 241s reaction = model.reactions.get_by_id(i) 241s > universal.add_reactions([reaction.copy()]) 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_flux_analysis/test_gapfilling.py:82: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _______________ test_metabolite_summary_interface[optlang-glpk] ________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_metabolite_summary_interface(model, opt_solver): 241s """Test that a summary can be created successfully.""" 241s model.solver = opt_solver 241s metabolite = model.metabolites.get_by_id("q8_c") 241s > MetaboliteSummary( 241s metabolite=metabolite, 241s model=model, 241s ) 241s 241s tests/test_summary/test_metabolite_summary.py:13: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ________________ test_metabolite_summary_to_frame[optlang-glpk] ________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_metabolite_summary_to_frame(model, opt_solver): 241s """Test that the summary's method ``to_frame`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:39: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs0] ____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:56: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs1] ____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'names': True} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:56: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs2] ____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'float_format': '.1f'} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:56: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs3] ____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'threshold': 0.01} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:56: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs4] ____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'column_width': 20} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:56: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs0] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:66: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs1] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'names': True} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:66: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs2] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'float_format': '.1f'} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:66: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs3] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'threshold': 0.01} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("atp_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:66: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________________ test_q8_producing_summary[optlang-glpk] ____________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_q8_producing_summary(model, opt_solver): 241s """Test that the production summary of q8 is accurate.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("q8_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:73: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ___________________ test_q8_consuming_summary[optlang-glpk] ____________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_q8_consuming_summary(model, opt_solver): 241s """Test that the consumption summary of q8 is accurate.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("q8_c").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:82: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s __________________ test_fdp_production_with_fva[optlang-glpk] __________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_fdp_production_with_fva(model, opt_solver): 241s """Test that the production summary of fdp is within expected bounds.""" 241s model.solver = opt_solver 241s > summary = model.metabolites.get_by_id("fdp_c").summary(fva=0.99) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:100: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s __________ test_metabolite_summary_flux_in_context[optlang-glpk-q8_c] __________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s metabolite_id = 'q8_c' 241s 241s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 241s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 241s """Test that the metabolite summary inside and outside of a context are equal.""" 241s model.solver = opt_solver 241s with model: 241s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:112: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _________ test_metabolite_summary_flux_in_context[optlang-glpk-fdp_c] __________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s metabolite_id = 'fdp_c' 241s 241s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 241s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 241s """Test that the metabolite summary inside and outside of a context are equal.""" 241s model.solver = opt_solver 241s with model: 241s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:112: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _________ test_metabolite_summary_flux_in_context[optlang-glpk-atp_c] __________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s metabolite_id = 'atp_c' 241s 241s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 241s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 241s """Test that the metabolite summary inside and outside of a context are equal.""" 241s model.solver = opt_solver 241s with model: 241s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_metabolite_summary.py:112: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 241s return MetaboliteSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 241s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 241s ^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s __________________ test_model_summary_interface[optlang-glpk] __________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_model_summary_interface(model, opt_solver): 241s """Test that a summary can be created successfully.""" 241s model.solver = opt_solver 241s > ModelSummary( 241s model=model, 241s ) 241s 241s tests/test_summary/test_model_summary.py:12: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s __________________ test_model_summary_to_frame[optlang-glpk] ___________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_model_summary_to_frame(model, opt_solver): 241s """Test that the summary's method ``to_frame`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:34: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ______________ test_model_summary_to_string[optlang-glpk-kwargs0] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_model_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:51: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ______________ test_model_summary_to_string[optlang-glpk-kwargs1] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'names': True} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_model_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:51: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ______________ test_model_summary_to_string[optlang-glpk-kwargs2] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'float_format': '.1f'} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_model_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:51: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ______________ test_model_summary_to_string[optlang-glpk-kwargs3] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'threshold': 0.01} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_model_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:51: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ______________ test_model_summary_to_string[optlang-glpk-kwargs4] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'column_width': 20} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_model_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:51: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _______________ test_model_summary_to_html[optlang-glpk-kwargs0] _______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_model_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:61: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _______________ test_model_summary_to_html[optlang-glpk-kwargs1] _______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'names': True} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_model_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:61: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _______________ test_model_summary_to_html[optlang-glpk-kwargs2] _______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'float_format': '.1f'} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_model_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:61: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _______________ test_model_summary_to_html[optlang-glpk-kwargs3] _______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'threshold': 0.01} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_model_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:61: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _________ test_model_summary_to_frame_previous_solution[optlang-glpk] __________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_model_summary_to_frame_previous_solution(model, opt_solver): 241s """Test that the summary correctly uses an existing solution.""" 241s model.solver = opt_solver 241s solution = pfba(model) 241s rxn = model.reactions.EX_glc__D_e 241s solution.fluxes[rxn.id] = -123 241s > summary = model.summary(solution=solution) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:71: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________________ test_model_summary_flux[optlang-glpk] _____________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_model_summary_flux(model, opt_solver): 241s """Test that the summary has expected fluxes.""" 241s model.solver = opt_solver 241s > summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:78: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _____________________ test_model_summary_fva[optlang-glpk] _____________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_model_summary_fva(model, opt_solver): 241s """Test that the exchange summary is within expected bounds.""" 241s model.solver = opt_solver 241s > summary = model.summary(fva=0.95) 241s ^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:88: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _______________ test_model_summary_flux_in_context[optlang-glpk] _______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_model_summary_flux_in_context(model, opt_solver): 241s """Test that the model summary inside and outside of a context are equal.""" 241s model.solver = opt_solver 241s copy = model.copy() 241s with model: 241s model.reactions.EX_glc__D_e.bounds = (0, 1000) 241s model.reactions.EX_ac_e.bounds = (-10, 1000) 241s > context_summary = model.summary() 241s ^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_model_summary.py:109: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 241s return ModelSummary(model=self, solution=solution, fva=fva) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 241s self._generate(model, solution, fva) 241s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 241s rxn.copy(): coef for rxn, coef in coefficients.items() 241s ^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ________________ test_reaction_summary_interface[optlang-glpk] _________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_reaction_summary_interface(model, opt_solver): 241s """Test that a summary can be created successfully.""" 241s model.solver = opt_solver 241s reaction = model.reactions.get_by_id("FUM") 241s > ReactionSummary( 241s reaction=reaction, 241s model=model, 241s ) 241s 241s tests/test_summary/test_reaction_summary.py:13: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _________________ test_reaction_summary_to_frame[optlang-glpk] _________________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s 241s def test_reaction_summary_to_frame(model, opt_solver): 241s """Test that the summary's method ``to_frame`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:37: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs0] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_reaction_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:54: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs1] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'names': True} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_reaction_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:54: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs2] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'float_format': '.1f'} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_reaction_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:54: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs3] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'threshold': 0.01} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_reaction_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:54: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs4] _____________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'column_width': 20} 241s 241s @pytest.mark.parametrize( 241s "kwargs", 241s [ 241s {}, 241s {"names": True}, 241s {"float_format": ".1f"}, 241s {"threshold": 1e-2}, 241s {"column_width": 20}, 241s ], 241s ) 241s def test_reaction_summary_to_string(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_string`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:54: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs0] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_reaction_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:64: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs1] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'names': True} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_reaction_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:64: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs2] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'float_format': '.1f'} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_reaction_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:64: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs3] ______________ 241s 241s model = , opt_solver = 'optlang-glpk' 241s kwargs = {'threshold': 0.01} 241s 241s @pytest.mark.parametrize( 241s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 241s ) 241s def test_reaction_summary_to_html(model, opt_solver, kwargs): 241s """Test that the summary's method ``to_html`` can be called.""" 241s model.solver = opt_solver 241s > summary = model.reactions.get_by_id("FUM").summary() 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s 241s tests/test_summary/test_reaction_summary.py:64: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 241s return ReactionSummary( 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ____________________ test_reaction_summary_flux[ACALD-0.0] _____________________ 241s 241s model = , reaction_id = 'ACALD' 241s expected = 0.0 241s 241s @pytest.mark.parametrize( 241s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 241s ) 241s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 241s """Test that the reported flux in the summary is reasonable.""" 241s > result = ReactionSummary( 241s reaction=model.reactions.get_by_id(reaction_id), model=model 241s ) 241s 241s tests/test_summary/test_reaction_summary.py:73: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _____________________ test_reaction_summary_flux[FUM-5.06] _____________________ 241s 241s model = , reaction_id = 'FUM' 241s expected = 5.06 241s 241s @pytest.mark.parametrize( 241s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 241s ) 241s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 241s """Test that the reported flux in the summary is reasonable.""" 241s > result = ReactionSummary( 241s reaction=model.reactions.get_by_id(reaction_id), model=model 241s ) 241s 241s tests/test_summary/test_reaction_summary.py:73: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _____________________ test_reaction_summary_flux[PFK-7.48] _____________________ 241s 241s model = , reaction_id = 'PFK' 241s expected = 7.48 241s 241s @pytest.mark.parametrize( 241s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 241s ) 241s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 241s """Test that the reported flux in the summary is reasonable.""" 241s > result = ReactionSummary( 241s reaction=model.reactions.get_by_id(reaction_id), model=model 241s ) 241s 241s tests/test_summary/test_reaction_summary.py:73: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s _______________ test_reaction_summary_flux_fva[ACALD--1.27-0.0] ________________ 241s 241s model = , reaction_id = 'ACALD' 241s min_flux = -1.27, max_flux = 0.0 241s 241s @pytest.mark.parametrize( 241s "reaction_id, min_flux, max_flux", 241s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 241s ) 241s def test_reaction_summary_flux_fva( 241s model, reaction_id: str, min_flux: float, max_flux: float 241s ) -> None: 241s """Test that the reported flux ranges in the summary are reasonable.""" 241s > result = ReactionSummary( 241s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 241s ) 241s 241s tests/test_summary/test_reaction_summary.py:89: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ________________ test_reaction_summary_flux_fva[FUM-0.79-7.38] _________________ 241s 241s model = , reaction_id = 'FUM' 241s min_flux = 0.79, max_flux = 7.38 241s 241s @pytest.mark.parametrize( 241s "reaction_id, min_flux, max_flux", 241s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 241s ) 241s def test_reaction_summary_flux_fva( 241s model, reaction_id: str, min_flux: float, max_flux: float 241s ) -> None: 241s """Test that the reported flux ranges in the summary are reasonable.""" 241s > result = ReactionSummary( 241s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 241s ) 241s 241s tests/test_summary/test_reaction_summary.py:89: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 241s !!! Recursion detected (same locals & position) 241s ________________ test_reaction_summary_flux_fva[PFK-2.58-16.38] ________________ 241s 241s model = , reaction_id = 'PFK' 241s min_flux = 2.58, max_flux = 16.38 241s 241s @pytest.mark.parametrize( 241s "reaction_id, min_flux, max_flux", 241s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 241s ) 241s def test_reaction_summary_flux_fva( 241s model, reaction_id: str, min_flux: float, max_flux: float 241s ) -> None: 241s """Test that the reported flux ranges in the summary are reasonable.""" 241s > result = ReactionSummary( 241s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 241s ) 241s 241s tests/test_summary/test_reaction_summary.py:89: 241s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 241s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 241s self._reaction = reaction.copy() 241s ^^^^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 241s new_reaction = deepcopy(self) 241s ^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:157: in deepcopy 241s y = _reconstruct(x, memo, *rv) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:234: in _reconstruct 241s y = func(*args) 241s ^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:233: in 241s args = (deepcopy(arg, memo) for arg in args) 241s ^^^^^^^^^^^^^^^^^^^ 241s /usr/lib/python3.14/copy.py:138: in deepcopy 241s y = copier(memo) 241s ^^^^^^^^^^^^ 241s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 241s cop = deepcopy(super(Reaction, self), memo) 241s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 241s E RecursionError: maximum recursion depth exceeded 242s !!! Recursion detected (same locals & position) 242s _________________ test_reaction_summary_flux_in_context[ACALD] _________________ 242s 242s model = , reaction_id = 'ACALD' 242s 242s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 242s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 242s """Test that the reaction summary inside and outside of a context are equal.""" 242s with model: 242s > context_summary = model.reactions.get_by_id(reaction_id).summary() 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s 242s tests/test_summary/test_reaction_summary.py:104: 242s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 242s return ReactionSummary( 242s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 242s self._reaction = reaction.copy() 242s ^^^^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 242s new_reaction = deepcopy(self) 242s ^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:138: in deepcopy 242s y = copier(memo) 242s ^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 242s cop = deepcopy(super(Reaction, self), memo) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:157: in deepcopy 242s y = _reconstruct(x, memo, *rv) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:234: in _reconstruct 242s y = func(*args) 242s ^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:233: in 242s args = (deepcopy(arg, memo) for arg in args) 242s ^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:138: in deepcopy 242s y = copier(memo) 242s ^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 242s cop = deepcopy(super(Reaction, self), memo) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s E RecursionError: maximum recursion depth exceeded 242s !!! Recursion detected (same locals & position) 242s __________________ test_reaction_summary_flux_in_context[FUM] __________________ 242s 242s model = , reaction_id = 'FUM' 242s 242s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 242s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 242s """Test that the reaction summary inside and outside of a context are equal.""" 242s with model: 242s > context_summary = model.reactions.get_by_id(reaction_id).summary() 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s 242s tests/test_summary/test_reaction_summary.py:104: 242s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 242s return ReactionSummary( 242s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 242s self._reaction = reaction.copy() 242s ^^^^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 242s new_reaction = deepcopy(self) 242s ^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:138: in deepcopy 242s y = copier(memo) 242s ^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 242s cop = deepcopy(super(Reaction, self), memo) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:157: in deepcopy 242s y = _reconstruct(x, memo, *rv) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:234: in _reconstruct 242s y = func(*args) 242s ^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:233: in 242s args = (deepcopy(arg, memo) for arg in args) 242s ^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:138: in deepcopy 242s y = copier(memo) 242s ^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 242s cop = deepcopy(super(Reaction, self), memo) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s E RecursionError: maximum recursion depth exceeded 242s !!! Recursion detected (same locals & position) 242s __________________ test_reaction_summary_flux_in_context[PFK] __________________ 242s 242s model = , reaction_id = 'PFK' 242s 242s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 242s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 242s """Test that the reaction summary inside and outside of a context are equal.""" 242s with model: 242s > context_summary = model.reactions.get_by_id(reaction_id).summary() 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s 242s tests/test_summary/test_reaction_summary.py:104: 242s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 242s return ReactionSummary( 242s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 242s self._reaction = reaction.copy() 242s ^^^^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 242s new_reaction = deepcopy(self) 242s ^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:138: in deepcopy 242s y = copier(memo) 242s ^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 242s cop = deepcopy(super(Reaction, self), memo) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:157: in deepcopy 242s y = _reconstruct(x, memo, *rv) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:234: in _reconstruct 242s y = func(*args) 242s ^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:233: in 242s args = (deepcopy(arg, memo) for arg in args) 242s ^^^^^^^^^^^^^^^^^^^ 242s /usr/lib/python3.14/copy.py:138: in deepcopy 242s y = copier(memo) 242s ^^^^^^^^^^^^ 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 242s cop = deepcopy(super(Reaction, self), memo) 242s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 242s E RecursionError: maximum recursion depth exceeded 242s !!! Recursion detected (same locals & position) 242s =============================== warnings summary =============================== 242s :491 242s :491: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute 242s 242s :491 242s :491: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute 242s 242s tests/test_core/test_gpr.py::test_and_gpr[a AND b-2-gpr_genes2-a and b] 242s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_and_b_strs] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 242s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a AND b'. 242s warn( 242s 242s tests/test_core/test_gpr.py::test_or_gpr[a OR b-2-gpr_genes2-a or b] 242s tests/test_core/test_gpr.py::test_gpr_as_symbolic_boolean[a OR b-symbolic_gpr2] 242s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_or_b_strs] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 242s tests/test_core/test_gpr.py::test_gpr_from_symbolic[a OR b-symbolic_gpr5] 242s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a OR b'. 242s warn( 242s 242s tests/test_core/test_gpr.py::test_complicated_gpr[(a OR b) AND c] 242s tests/test_core/test_gpr.py::test_gpr_as_symbolic_boolean[(a OR b) AND c-symbolic_gpr6] 242s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_or_and_strs] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists8] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists9] 242s tests/test_core/test_gpr.py::test_gpr_from_symbolic[(a OR b) AND c-symbolic_gpr9] 242s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule '(a OR b) AND c'. 242s warn( 242s 242s tests/test_core/test_gpr.py::test_gpr_that_needs_two_replacements 242s /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)'. 242s warn( 242s 242s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_and_b_strs] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 242s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'b AND a'. 242s warn( 242s 242s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_or_b_strs] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 242s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'b OR a'. 242s warn( 242s 242s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_or_strs] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists7] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists8] 242s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a OR b or c'. 242s warn( 242s 242s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_and_strs] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists7] 242s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists9] 242s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a AND b and c'. 242s warn( 242s 242s tests/test_core/test_model.py::test_reaction_delete 242s tests/test_core/test_model.py::test_reaction_delete 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:879: DeprecationWarning: delete is deprecated. Use reaction.remove_from_model instead 242s warn( 242s 242s tests/test_core/test_model.py::test_group_loss_of_elements 242s /usr/lib/python3/dist-packages/cobra/core/group.py:147: UserWarning: need to pass in a list 242s warn("need to pass in a list") 242s 242s tests/test_core/test_model.py::test_change_objective 242s tests/test_core/test_model.py::test_change_objective 242s tests/test_core/test_model.py::test_change_objective 242s /usr/lib/python3/dist-packages/cobra/core/reaction.py:761: DeprecationWarning: Please use reaction.flux instead. 242s warn("Please use reaction.flux instead.", DeprecationWarning) 242s 242s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 242s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 242s /tmp/autopkgtest.WZIW32/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 242s assert math.isnan(sol.growth) 242s 242s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 242s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 242s /tmp/autopkgtest.WZIW32/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 242s assert math.isnan(sol_one.growth) 242s 242s tests/test_flux_analysis/test_gapfilling.py: 980 warnings 242s /tmp/autopkgtest.WZIW32/autopkgtest_tmp/tests/conftest.py:53: DeprecationWarning: BoolOp.__init__ missing 1 required positional argument: 'op'. This will become an error in Python 3.15. 242s return _load(infile) 242s 242s tests/test_flux_analysis/test_gapfilling.py: 4020 warnings 242s /tmp/autopkgtest.WZIW32/autopkgtest_tmp/tests/conftest.py:53: DeprecationWarning: Name.__init__ missing 1 required positional argument: 'id'. This will become an error in Python 3.15. 242s return _load(infile) 242s 242s tests/test_io/test_json.py: 34 warnings 242s tests/test_io/test_mat.py: 34 warnings 242s tests/test_io/test_pickle.py: 34 warnings 242s tests/test_io/test_yaml.py: 34 warnings 242s /tmp/autopkgtest.WZIW32/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. 242s return load(infile) 242s 242s tests/test_io/test_json.py: 11 warnings 242s tests/test_io/test_mat.py: 11 warnings 242s tests/test_io/test_pickle.py: 11 warnings 242s tests/test_io/test_yaml.py: 11 warnings 242s /tmp/autopkgtest.WZIW32/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. 242s return load(infile) 242s 242s tests/test_io/test_json.py: 1 warning 242s tests/test_io/test_mat.py: 5 warnings 242s tests/test_io/test_pickle.py: 1 warning 242s tests/test_io/test_sbml.py: 9 warnings 242s tests/test_io/test_yaml.py: 1 warning 242s /usr/lib/python3/dist-packages/cobra/util/solver.py:554: UserWarning: Solver status is 'infeasible'. 242s warn(f"Solver status is '{status}'.", UserWarning) 242s 242s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 242s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 242s /tmp/autopkgtest.WZIW32/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. 242s return load(infile) 242s 242s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 242s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 242s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 242s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 242s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 242s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 242s /tmp/autopkgtest.WZIW32/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. 242s return load(infile) 242s 242s tests/test_io/test_pickle.py: 34 warnings 242s /tmp/autopkgtest.WZIW32/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. 242s pickle_model = load_function(infile) 242s 242s tests/test_io/test_pickle.py: 11 warnings 242s /tmp/autopkgtest.WZIW32/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. 242s pickle_model = load_function(infile) 242s 242s tests/test_io/test_sbml.py: 136 warnings 242s /tmp/autopkgtest.WZIW32/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. 242s reference_model = load(infile) 242s 242s tests/test_io/test_sbml.py: 44 warnings 242s /tmp/autopkgtest.WZIW32/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. 242s reference_model = load(infile) 242s 242s tests/test_io/test_yaml.py::test_save_yaml_model 242s /tmp/autopkgtest.WZIW32/autopkgtest_tmp/tests/test_io/test_yaml.py:29: PendingDeprecationWarning: 242s you should no longer specify 'unsafe'. 242s For **dumping only** use yaml=YAML(typ='full') 242s 242s yaml = YAML(typ="unsafe") 242s 242s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 242s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 242s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 242s /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]` 242s compartment = most[matches[most]][0] 242s 242s tests/test_util/test_process_pool.py::test_with_context 242s /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 242s self._pool.__enter__() 242s 242s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 242s 242s ------------------------------------------------------------------------------------------------------------------- benchmark: 30 tests -------------------------------------------------------------------------------------------------------------------- 242s Name (time in us) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations 242s ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 242s test_subtract_metabolite_benchmark[cplex] 2.4000 (1.0) 28.5600 (1.08) 2.5277 (1.00) 0.7510 (1.18) 2.4800 (1.02) 0.0000 (1.0) 33;1671 395,620.1200 (1.00) 5231 1 242s test_subtract_metabolite_benchmark[glpk] 2.4000 (1.0) 32.7600 (1.24) 2.5273 (1.0) 0.6391 (1.0) 2.4800 (1.02) 0.0400 (>1000.0) 33;113 395,682.3364 (1.0) 4588 1 242s test_subtract_metabolite_benchmark[gurobi] 2.4000 (1.0) 26.4400 (1.0) 2.5448 (1.01) 0.7359 (1.15) 2.4400 (1.0) 0.0400 (>1000.0) 114;301 392,960.6071 (0.99) 5518 1 242s test_change_objective_benchmark[optlang-glpk] 156.1200 (65.05) 689.5600 (26.08) 174.9513 (69.23) 21.9722 (34.38) 167.4000 (68.61) 26.4600 (>1000.0) 262;33 5,715.8762 (0.01) 3616 1 242s test_achr_sample_benchmark 159.1600 (66.32) 381.6800 (14.44) 188.7584 (74.69) 27.1727 (42.52) 179.6400 (73.62) 44.2600 (>1000.0) 206;5 5,297.7773 (0.01) 1029 1 242s test_optgp_sample_benchmark 242.8800 (101.20) 511.9200 (19.36) 283.6641 (112.24) 31.6884 (49.58) 277.7000 (113.81) 49.0800 (>1000.0) 564;12 3,525.2964 (0.01) 1690 1 242s test_loopless_benchmark_after 1,064.2800 (443.45) 1,357.2400 (51.33) 1,104.7690 (437.14) 35.3266 (55.27) 1,095.8200 (449.11) 29.8000 (>1000.0) 50;23 905.1666 (0.00) 420 1 242s test_single_gene_deletion_fba_benchmark[glpk] 3,980.7600 (>1000.0) 4,438.8400 (167.88) 4,094.0420 (>1000.0) 81.3157 (127.23) 4,074.8600 (>1000.0) 103.6600 (>1000.0) 56;3 244.2574 (0.00) 196 1 242s test_loopless_benchmark_before 4,640.0400 (>1000.0) 5,265.6400 (199.15) 4,849.8561 (>1000.0) 106.2374 (166.23) 4,821.8800 (>1000.0) 126.3600 (>1000.0) 27;6 206.1917 (0.00) 114 1 242s test_minimal_medium_mip_benchmark 6,756.0800 (>1000.0) 7,851.6800 (296.96) 7,117.8886 (>1000.0) 199.8700 (312.73) 7,067.5200 (>1000.0) 237.2400 (>1000.0) 25;3 140.4911 (0.00) 93 1 242s test_minimal_medium_linear_benchmark 6,910.6000 (>1000.0) 7,836.0000 (296.37) 7,308.3343 (>1000.0) 249.0684 (389.71) 7,312.4400 (>1000.0) 423.0000 (>1000.0) 33;0 136.8301 (0.00) 92 1 242s test_copy_benchmark[optlang-glpk] 12,522.2000 (>1000.0) 127,366.8000 (>1000.0) 14,964.4886 (>1000.0) 13,916.1185 (>1000.0) 12,853.7600 (>1000.0) 315.1700 (>1000.0) 2;3 66.8249 (0.00) 79 1 242s test_gpr_equality_benchmark 16,541.9200 (>1000.0) 17,460.9600 (660.40) 17,054.3319 (>1000.0) 205.5621 (321.64) 17,038.5200 (>1000.0) 257.5200 (>1000.0) 18;0 58.6361 (0.00) 54 1 242s test_single_reaction_deletion_benchmark[glpk] 25,127.9600 (>1000.0) 25,878.1600 (978.75) 25,330.4063 (>1000.0) 165.8814 (259.55) 25,287.4000 (>1000.0) 204.4800 (>1000.0) 11;1 39.4782 (0.00) 38 1 242s test_flux_variability_loopless_benchmark[glpk] 30,405.9600 (>1000.0) 32,037.1200 (>1000.0) 30,912.5095 (>1000.0) 420.8069 (658.43) 30,901.0800 (>1000.0) 631.7200 (>1000.0) 5;0 32.3494 (0.00) 19 1 242s test_fastcc_benchmark[glpk] 51,510.2400 (>1000.0) 205,915.1600 (>1000.0) 60,522.2842 (>1000.0) 35,213.1721 (>1000.0) 52,520.5600 (>1000.0) 1,052.8900 (>1000.0) 1;1 16.5228 (0.00) 19 1 242s test_add_metabolite_benchmark[cplex] 64,446.8800 (>1000.0) 67,340.7200 (>1000.0) 65,160.1400 (>1000.0) 650.1278 (>1000.0) 65,000.2000 (>1000.0) 365.3600 (>1000.0) 2;1 15.3468 (0.00) 16 1 242s test_add_metabolite_benchmark[glpk] 64,742.3200 (>1000.0) 65,598.4800 (>1000.0) 65,131.1375 (>1000.0) 245.8832 (384.73) 65,059.9000 (>1000.0) 354.4000 (>1000.0) 6;0 15.3536 (0.00) 16 1 242s test_add_metabolite_benchmark[gurobi] 64,843.3200 (>1000.0) 65,700.4000 (>1000.0) 65,321.9475 (>1000.0) 233.8648 (365.92) 65,326.4800 (>1000.0) 332.5800 (>1000.0) 5;0 15.3088 (0.00) 16 1 242s test_gpr_symbolism_benchmark 75,101.0800 (>1000.0) 76,112.4400 (>1000.0) 75,656.8277 (>1000.0) 380.6339 (595.57) 75,797.1200 (>1000.0) 669.2500 (>1000.0) 5;0 13.2176 (0.00) 13 1 242s test_double_reaction_deletion_benchmark 85,143.9600 (>1000.0) 85,932.6000 (>1000.0) 85,519.3680 (>1000.0) 308.6724 (482.97) 85,566.5600 (>1000.0) 464.6100 (>1000.0) 2;0 11.6933 (0.00) 5 1 242s test_optgp_init_benchmark 110,681.0400 (>1000.0) 112,401.9200 (>1000.0) 111,324.3689 (>1000.0) 541.6357 (847.49) 111,135.4400 (>1000.0) 799.3800 (>1000.0) 2;0 8.9828 (0.00) 9 1 242s test_achr_init_benchmark 111,232.5600 (>1000.0) 113,416.8000 (>1000.0) 112,415.9911 (>1000.0) 604.2748 (945.50) 112,399.9600 (>1000.0) 569.2600 (>1000.0) 2;1 8.8955 (0.00) 9 1 242s test_single_gene_deletion_linear_moma_benchmark[glpk] 158,137.3200 (>1000.0) 159,881.5200 (>1000.0) 158,929.5467 (>1000.0) 647.2172 (>1000.0) 159,002.9800 (>1000.0) 996.0800 (>1000.0) 3;0 6.2921 (0.00) 6 1 242s test_single_gene_deletion_linear_room_benchmark[glpk] 217,866.6000 (>1000.0) 226,503.0000 (>1000.0) 222,410.8640 (>1000.0) 3,210.7244 (>1000.0) 223,095.9200 (>1000.0) 4,098.3000 (>1000.0) 2;0 4.4962 (0.00) 5 1 242s test_double_gene_deletion_benchmark 265,488.0400 (>1000.0) 281,777.1600 (>1000.0) 275,390.9840 (>1000.0) 6,047.9534 (>1000.0) 276,247.4800 (>1000.0) 5,965.8800 (>1000.0) 2;0 3.6312 (0.00) 5 1 242s test_copy_benchmark_large_model[optlang-glpk] 272,244.0400 (>1000.0) 430,598.5600 (>1000.0) 306,179.7360 (>1000.0) 69,579.3823 (>1000.0) 275,793.4800 (>1000.0) 41,799.5400 (>1000.0) 1;1 3.2661 (0.00) 5 1 242s test_pfba_benchmark[glpk] 282,103.5600 (>1000.0) 380,437.1600 (>1000.0) 304,347.4240 (>1000.0) 42,823.7585 (>1000.0) 283,034.8400 (>1000.0) 33,305.7500 (>1000.0) 1;1 3.2857 (0.00) 5 1 242s test_geometric_fba_benchmark[glpk] 364,160.7600 (>1000.0) 374,556.5600 (>1000.0) 366,467.7280 (>1000.0) 4,540.8314 (>1000.0) 364,255.3600 (>1000.0) 3,318.3800 (>1000.0) 1;1 2.7288 (0.00) 5 1 242s test_flux_variability_benchmark[glpk] 454,982.1200 (>1000.0) 457,707.6800 (>1000.0) 456,277.2480 (>1000.0) 966.8001 (>1000.0) 456,260.8000 (>1000.0) 776.1600 (>1000.0) 2;0 2.1916 (0.00) 5 1 242s ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 242s 242s Legend: 242s Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. 242s OPS: Operations Per Second, computed as 1 / Mean 242s =========================== short test summary info ============================ 242s FAILED tests/test_core/test_core_reaction.py::test_copy - RecursionError: max... 242s FAILED tests/test_core/test_core_reaction.py::test_add - RecursionError: maxi... 242s FAILED tests/test_core/test_core_reaction.py::test_radd - RecursionError: max... 242s FAILED tests/test_core/test_core_reaction.py::test_mul - RecursionError: maxi... 242s FAILED tests/test_core/test_core_reaction.py::test_sub - RecursionError: maxi... 242s FAILED tests/test_core/test_model.py::test_deepcopy_benchmark - RecursionErro... 242s FAILED tests/test_core/test_model.py::test_deepcopy - RecursionError: maximum... 242s FAILED tests/test_core/test_model.py::test_merge_models - RecursionError: max... 242s FAILED tests/test_flux_analysis/test_gapfilling.py::test_gapfilling - Recursi... 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_interface[optlang-glpk] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_frame[optlang-glpk] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs0] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs1] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs2] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs3] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs4] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs0] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs1] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs2] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs3] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_q8_producing_summary[optlang-glpk] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_q8_consuming_summary[optlang-glpk] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_fdp_production_with_fva[optlang-glpk] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-q8_c] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-fdp_c] 242s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-atp_c] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_interface[optlang-glpk] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_frame[optlang-glpk] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs0] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs1] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs2] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs3] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs4] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs0] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs1] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs2] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs3] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_frame_previous_solution[optlang-glpk] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_flux[optlang-glpk] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_fva[optlang-glpk] 242s FAILED tests/test_summary/test_model_summary.py::test_model_summary_flux_in_context[optlang-glpk] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_interface[optlang-glpk] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_frame[optlang-glpk] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs0] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs1] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs2] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs3] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs4] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs0] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs1] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs2] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs3] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[ACALD-0.0] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[FUM-5.06] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[PFK-7.48] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[ACALD--1.27-0.0] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[FUM-0.79-7.38] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[PFK-2.58-16.38] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[ACALD] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[FUM] 242s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[PFK] 242s = 61 failed, 455 passed, 27 skipped, 10 xfailed, 1 xpassed, 5490 warnings in 119.95s (0:01:59) = 244s autopkgtest [20:22:48]: test run-unit-test: -----------------------] 244s run-unit-test FAIL non-zero exit status 1 244s autopkgtest [20:22:48]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 245s autopkgtest [20:22:49]: @@@@@@@@@@@@@@@@@@@@ summary 245s run-unit-test FAIL non-zero exit status 1