0s autopkgtest [09:15:14]: starting date and time: 2026-01-24 09:15:14+0000 0s autopkgtest [09:15:14]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [09:15:14]: host juju-7f2275-prod-proposed-migration-environment-15; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.sorxldqj/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:python3-defaults --apt-upgrade python-cobra --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=python3-defaults/3.14.2-1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-cpu2-ram4-disk20-amd64 --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-15@sto01-11.secgroup --name adt-resolute-amd64-python-cobra-20260124-091514-juju-7f2275-prod-proposed-migration-environment-15-3cd0271a-42dc-4ebd-b2d7-013d92713140 --image adt/ubuntu-resolute-amd64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-15 --net-id=net_prod-autopkgtest-workers-amd64 -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 4s Creating nova instance adt-resolute-amd64-python-cobra-20260124-091514-juju-7f2275-prod-proposed-migration-environment-15-3cd0271a-42dc-4ebd-b2d7-013d92713140 from image adt/ubuntu-resolute-amd64-server-20260124.img (UUID 46811f22-3700-43f4-953b-ee3c613d71bb)... 76s autopkgtest [09:16:30]: testbed dpkg architecture: amd64 76s autopkgtest [09:16:30]: testbed apt version: 3.1.13 76s autopkgtest [09:16:30]: @@@@@@@@@@@@@@@@@@@@ test bed setup 76s autopkgtest [09:16:30]: testbed release detected to be: None 77s autopkgtest [09:16:31]: updating testbed package index (apt update) 77s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 77s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 77s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 77s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 77s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [2820 B] 77s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [91.6 kB] 77s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [24.3 kB] 77s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1021 kB] 77s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 Packages [115 kB] 77s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main i386 Packages [98.2 kB] 77s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 c-n-f Metadata [3776 B] 77s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/restricted amd64 Packages [12.3 kB] 77s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/restricted i386 Packages [3696 B] 77s Get:14 http://ftpmaster.internal/ubuntu resolute-proposed/restricted amd64 c-n-f Metadata [336 B] 77s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/universe amd64 Packages [928 kB] 77s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/universe i386 Packages [389 kB] 77s Get:17 http://ftpmaster.internal/ubuntu resolute-proposed/universe amd64 c-n-f Metadata [25.1 kB] 77s Get:18 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse i386 Packages [4704 B] 77s Get:19 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse amd64 Packages [12.4 kB] 78s Get:20 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse amd64 c-n-f Metadata [824 B] 78s Fetched 2858 kB in 1s (4066 kB/s) 79s Reading package lists... 79s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 79s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 79s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 79s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 80s Reading package lists... 80s Reading package lists... 80s Building dependency tree... 80s Reading state information... 80s Calculating upgrade... 80s The following packages were automatically installed and are no longer required: 80s python3.13 python3.13-minimal 80s Use 'sudo apt autoremove' to remove them. 80s The following NEW packages will be installed: 80s libpython3.14-minimal libpython3.14-stdlib python3.14 python3.14-minimal 80s The following packages will be upgraded: 80s libpython3-stdlib python3 python3-gdbm python3-minimal rust-coreutils 80s 5 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. 80s Need to get 10.4 MB of archives. 80s After this operation, 25.2 MB of additional disk space will be used. 80s Get:1 http://ftpmaster.internal/ubuntu resolute/main amd64 libpython3.14-minimal amd64 3.14.2-1 [920 kB] 80s Get:2 http://ftpmaster.internal/ubuntu resolute/main amd64 python3.14-minimal amd64 3.14.2-1 [2563 kB] 81s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 python3-minimal amd64 3.14.2-1 [28.2 kB] 81s Get:4 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 python3 amd64 3.14.2-1 [22.9 kB] 81s Get:5 http://ftpmaster.internal/ubuntu resolute/main amd64 libpython3.14-stdlib amd64 3.14.2-1 [2398 kB] 81s Get:6 http://ftpmaster.internal/ubuntu resolute/main amd64 python3.14 amd64 3.14.2-1 [816 kB] 81s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 libpython3-stdlib amd64 3.14.2-1 [10.9 kB] 81s Get:8 http://ftpmaster.internal/ubuntu resolute/main amd64 rust-coreutils amd64 0.5.0-0ubuntu1 [3628 kB] 81s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 python3-gdbm amd64 3.14.2-1 [11.1 kB] 81s dpkg-preconfigure: unable to re-open stdin: No such file or directory 81s Fetched 10.4 MB in 1s (15.5 MB/s) 81s Selecting previously unselected package libpython3.14-minimal:amd64. 81s (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 ... 124177 files and directories currently installed.) 81s Preparing to unpack .../libpython3.14-minimal_3.14.2-1_amd64.deb ... 81s Unpacking libpython3.14-minimal:amd64 (3.14.2-1) ... 81s Selecting previously unselected package python3.14-minimal. 81s Preparing to unpack .../python3.14-minimal_3.14.2-1_amd64.deb ... 81s Unpacking python3.14-minimal (3.14.2-1) ... 81s Setting up libpython3.14-minimal:amd64 (3.14.2-1) ... 81s Setting up python3.14-minimal (3.14.2-1) ... 82s (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 ... 124519 files and directories currently installed.) 82s Preparing to unpack .../python3-minimal_3.14.2-1_amd64.deb ... 82s Unpacking python3-minimal (3.14.2-1) over (3.13.9-3) ... 82s Setting up python3-minimal (3.14.2-1) ... 82s (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 ... 124519 files and directories currently installed.) 82s Preparing to unpack .../python3_3.14.2-1_amd64.deb ... 82s running python pre-rtupdate hooks for python3.14... 82s Unpacking python3 (3.14.2-1) over (3.13.9-3) ... 82s Selecting previously unselected package libpython3.14-stdlib:amd64. 82s Preparing to unpack .../libpython3.14-stdlib_3.14.2-1_amd64.deb ... 82s Unpacking libpython3.14-stdlib:amd64 (3.14.2-1) ... 82s Selecting previously unselected package python3.14. 82s Preparing to unpack .../python3.14_3.14.2-1_amd64.deb ... 82s Unpacking python3.14 (3.14.2-1) ... 82s Preparing to unpack .../libpython3-stdlib_3.14.2-1_amd64.deb ... 82s Unpacking libpython3-stdlib:amd64 (3.14.2-1) over (3.13.9-3) ... 82s Preparing to unpack .../rust-coreutils_0.5.0-0ubuntu1_amd64.deb ... 82s Unpacking rust-coreutils (0.5.0-0ubuntu1) over (0.2.2-0ubuntu2) ... 83s Setting up rust-coreutils (0.5.0-0ubuntu1) ... 83s (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 ... 124980 files and directories currently installed.) 83s Preparing to unpack .../python3-gdbm_3.14.2-1_amd64.deb ... 83s Unpacking python3-gdbm (3.14.2-1) over (3.13.9-3) ... 83s Setting up libpython3.14-stdlib:amd64 (3.14.2-1) ... 83s Setting up python3.14 (3.14.2-1) ... 83s Setting up libpython3-stdlib:amd64 (3.14.2-1) ... 83s Setting up python3-gdbm (3.14.2-1) ... 83s Setting up python3 (3.14.2-1) ... 83s running python rtupdate hooks for python3.14... 83s running python post-rtupdate hooks for python3.14... 83s Processing triggers for man-db (2.13.1-1) ... 84s Processing triggers for systemd (259-1ubuntu2) ... 84s autopkgtest [09:16:38]: upgrading testbed (apt dist-upgrade and autopurge) 84s Reading package lists... 84s Building dependency tree... 84s Reading state information... 84s Calculating upgrade... 84s The following packages were automatically installed and are no longer required: 84s python3.13 python3.13-minimal 84s Use 'sudo apt autoremove' to remove them. 84s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 84s Reading package lists... 85s Building dependency tree... 85s Reading state information... 85s Solving dependencies... 85s The following packages will be REMOVED: 85s python3.13* python3.13-minimal* 85s 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. 85s After this operation, 7860 kB disk space will be freed. 85s (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 ... 124978 files and directories currently installed.) 85s Removing python3.13 (3.13.11-1) ... 85s Removing python3.13-minimal (3.13.11-1) ... 85s Processing triggers for man-db (2.13.1-1) ... 86s Processing triggers for systemd (259-1ubuntu2) ... 86s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 124951 files and directories currently installed.) 86s Purging configuration files for python3.13-minimal (3.13.11-1) ... 88s autopkgtest [09:16:42]: testbed running kernel: Linux 6.18.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Jan 12 16:49:02 UTC 2026 88s autopkgtest [09:16:42]: @@@@@@@@@@@@@@@@@@@@ apt-source python-cobra 89s Get:1 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (dsc) [3080 B] 89s Get:2 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (tar) [3651 kB] 89s Get:3 http://ftpmaster.internal/ubuntu resolute/universe python-cobra 0.29.1-3 (diff) [11.1 kB] 89s gpgv: Signature made Wed Jul 2 22:43:59 2025 UTC 89s gpgv: using RSA key 8F6DE104377F3B11E741748731F3144544A1741A 89s gpgv: issuer "tchet@debian.org" 89s gpgv: Can't check signature: No public key 89s dpkg-source: warning: cannot verify inline signature for ./python-cobra_0.29.1-3.dsc: no acceptable signature found 89s autopkgtest [09:16:43]: testing package python-cobra version 0.29.1-3 90s autopkgtest [09:16:44]: build not needed 90s autopkgtest [09:16:44]: test run-unit-test: preparing testbed 91s Reading package lists... 91s Building dependency tree... 91s Reading state information... 91s Solving dependencies... 91s Some packages could not be installed. This may mean that you have 91s requested an impossible situation or if you are using the unstable 91s distribution that some required packages have not yet been created 91s or been moved out of Incoming. 91s The following information may help to resolve the situation: 91s 91s The following packages have unmet dependencies: 91s satisfy:command-line : Depends: python3-cobra but it is not going to be installed 91s Depends: python-cobra-data but it is not going to be installed 91s Depends: python3-cobra but it is not going to be installed 91s Depends: python3-pytest but it is not going to be installed 91s Depends: python3-pytest-benchmark but it is not going to be installed 91s Depends: python3-scipy but it is not going to be installed 91s Depends: python3-sbml5 but it is not going to be installed 91s Depends: python3-pytest-mock but it is not going to be installed 91s Depends: quilt but it is not going to be installed 91s E: Unable to satisfy dependencies. Reached two conflicting assignments: 91s 1. libssl3t64:amd64 is selected for install because: 91s 1. shim-signed:amd64 is selected for install 91s 2. shim-signed:amd64 Depends mokutil (>= 0.3.0+1538710437.fb6250f-0ubuntu2) 91s 3. mokutil:amd64 Depends libssl3t64 (>= 3.0.0) 91s 2. libssl3t64:amd64 is available in versions 3.5.3-1ubuntu2, 3.5.4-1ubuntu1 91s but none of the choices are installable: 91s - libssl3t64:amd64=3.5.3-1ubuntu2 is not selected for install 91s - libssl3t64:amd64=3.5.4-1ubuntu1 is not selected for install 91s autopkgtest: WARNING: Test dependencies are unsatisfiable with using apt pinning. Retrying with using all packages from resolute-proposed 91s Reading package lists... 91s Building dependency tree... 91s Reading state information... 91s Solving dependencies... 91s The following NEW packages will be installed: 91s diffstat gettext libamd3 libblas3 libcolamd3 libgfortran5 libglpk40 libgomp1 91s liblapack3 libltdl7 libpython3.14 libqhull-r8.0 libsuitesparseconfig7 91s python-cobra-data python3-annotated-types python3-anyio python3-click 91s python3-cobra python3-cpuinfo python3-decorator python3-depinfo 91s python3-diskcache python3-dnspython python3-email-validator python3-h11 91s python3-httpcore python3-httpx python3-iniconfig python3-mpmath 91s python3-numpy python3-numpy-dev python3-optlang python3-pandas 91s python3-pandas-lib python3-platformdirs python3-pluggy python3-pydantic 91s python3-pydantic-core python3-pytest python3-pytest-benchmark 91s python3-pytest-mock python3-pytz python3-ruamel.yaml 91s python3-ruamel.yaml.clib python3-sbml5 python3-scipy python3-sniffio 91s python3-swiglpk python3-sympy python3-tabulate python3-typing-inspection 91s quilt 91s The following packages will be upgraded: 91s gcc-15-base libatomic1 libgcc-s1 libstdc++6 92s 4 upgraded, 52 newly installed, 0 to remove and 65 not upgraded. 92s Need to get 67.8 MB of archives. 92s After this operation, 350 MB of additional disk space will be used. 92s Get:1 http://ftpmaster.internal/ubuntu resolute/main amd64 python3-numpy-dev amd64 1:2.3.5+ds-3 [147 kB] 92s Get:2 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 libstdc++6 amd64 15.2.0-12ubuntu1 [813 kB] 92s Get:3 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 libatomic1 amd64 15.2.0-12ubuntu1 [10.5 kB] 92s Get:4 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 gcc-15-base amd64 15.2.0-12ubuntu1 [59.6 kB] 92s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 libgcc-s1 amd64 15.2.0-12ubuntu1 [78.0 kB] 92s Get:6 http://ftpmaster.internal/ubuntu resolute/main amd64 libblas3 amd64 3.12.1-7ubuntu1 [260 kB] 92s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 libgfortran5 amd64 15.2.0-12ubuntu1 [939 kB] 92s Get:8 http://ftpmaster.internal/ubuntu resolute/main amd64 liblapack3 amd64 3.12.1-7ubuntu1 [2739 kB] 92s Get:9 http://ftpmaster.internal/ubuntu resolute/main amd64 python3-numpy amd64 1:2.3.5+ds-3 [8129 kB] 92s Get:10 http://ftpmaster.internal/ubuntu resolute/main amd64 diffstat amd64 1.68-1 [30.3 kB] 92s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/main amd64 libgomp1 amd64 15.2.0-12ubuntu1 [151 kB] 92s Get:12 http://ftpmaster.internal/ubuntu resolute/main amd64 gettext amd64 0.23.2-1 [1019 kB] 92s Get:13 http://ftpmaster.internal/ubuntu resolute/main amd64 libsuitesparseconfig7 amd64 1:7.12.1+dfsg-1 [22.0 kB] 92s Get:14 http://ftpmaster.internal/ubuntu resolute/universe amd64 libamd3 amd64 1:7.12.1+dfsg-1 [35.8 kB] 92s Get:15 http://ftpmaster.internal/ubuntu resolute/main amd64 libcolamd3 amd64 1:7.12.1+dfsg-1 [27.4 kB] 92s Get:16 http://ftpmaster.internal/ubuntu resolute/main amd64 libltdl7 amd64 2.5.4-9 [43.7 kB] 92s Get:17 http://ftpmaster.internal/ubuntu resolute/universe amd64 libglpk40 amd64 5.0-2 [380 kB] 92s Get:18 http://ftpmaster.internal/ubuntu resolute/main amd64 libpython3.14 amd64 3.14.2-1 [2568 kB] 92s Get:19 http://ftpmaster.internal/ubuntu resolute/universe amd64 libqhull-r8.0 amd64 2020.2-8 [197 kB] 92s Get:20 http://ftpmaster.internal/ubuntu resolute/universe amd64 python-cobra-data all 0.29.1-3 [1611 kB] 92s Get:21 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-annotated-types all 0.7.0-1 [19.4 kB] 92s Get:22 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-sniffio all 1.3.1-1 [7262 B] 92s Get:23 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-anyio all 4.11.0-3 [72.6 kB] 92s Get:24 http://ftpmaster.internal/ubuntu resolute/main amd64 python3-click all 8.2.0+0.really.8.1.8-1build1 [80.2 kB] 92s Get:25 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-depinfo amd64 2.2.0-4 [11.2 kB] 92s Get:26 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-diskcache all 5.6.3-1 [35.1 kB] 92s Get:27 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-h11 all 0.14.0-1.1 [51.6 kB] 92s Get:28 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-httpcore all 1.0.9-1 [38.9 kB] 92s Get:29 http://ftpmaster.internal/ubuntu resolute-proposed/universe amd64 python3-httpx all 0.28.1-1build1 [59.4 kB] 92s Get:30 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-swiglpk amd64 5.0.10-2build3 [99.6 kB] 92s Get:31 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-mpmath all 1.3.0-2 [423 kB] 92s Get:32 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-sympy all 1.14.0-2 [4306 kB] 92s Get:33 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-optlang all 1.8.3-1 [5368 kB] 92s Get:34 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pytz all 2025.2-5 [32.4 kB] 92s Get:35 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pandas-lib amd64 2.3.3+dfsg-3 [6929 kB] 93s Get:36 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pandas all 2.3.3+dfsg-3 [2948 kB] 93s Get:37 http://ftpmaster.internal/ubuntu resolute/main amd64 python3-platformdirs all 4.5.1-1 [17.1 kB] 93s Get:38 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pydantic-core amd64 2.41.5-2 [2427 kB] 93s Get:39 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-typing-inspection all 0.4.2-1 [13.1 kB] 93s Get:40 http://ftpmaster.internal/ubuntu resolute/main amd64 python3-dnspython all 2.7.0-1ubuntu2 [167 kB] 93s Get:41 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-email-validator all 2.2.0-1 [28.5 kB] 93s Get:42 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pydantic amd64 2.12.5-2 [312 kB] 93s Get:43 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-ruamel.yaml.clib amd64 0.2.15+ds-1 [200 kB] 93s Get:44 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-ruamel.yaml all 0.18.10+ds-1 [127 kB] 93s Get:45 http://ftpmaster.internal/ubuntu resolute/main amd64 python3-tabulate all 0.9.0-1build1 [45.4 kB] 93s Get:46 http://ftpmaster.internal/ubuntu resolute-proposed/universe amd64 python3-sbml5 amd64 5.20.5+dfsg-1build1 [3745 kB] 93s Get:47 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-cobra amd64 0.29.1-3 [1118 kB] 93s Get:48 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-cpuinfo all 9.0.0+git20221119-3 [21.7 kB] 93s Get:49 http://ftpmaster.internal/ubuntu resolute/main amd64 python3-decorator all 5.2.1-2 [28.1 kB] 93s Get:50 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-iniconfig all 2.1.0-2 [6962 B] 93s Get:51 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pluggy all 1.6.0-2 [21.1 kB] 93s Get:52 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pytest all 9.0.2-2 [277 kB] 93s Get:53 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pytest-benchmark all 5.2.3-1 [40.0 kB] 93s Get:54 http://ftpmaster.internal/ubuntu resolute/universe amd64 python3-pytest-mock all 3.15.1-1 [11.9 kB] 93s Get:55 http://ftpmaster.internal/ubuntu resolute/universe amd64 quilt all 0.68-1 [439 kB] 93s Get:56 http://ftpmaster.internal/ubuntu resolute-proposed/universe amd64 python3-scipy amd64 1.16.3-4 [19.0 MB] 93s Fetched 67.8 MB in 2s (44.8 MB/s) 93s Selecting previously unselected package python3-numpy-dev:amd64. 93s (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 ... 124953 files and directories currently installed.) 93s Preparing to unpack .../python3-numpy-dev_1%3a2.3.5+ds-3_amd64.deb ... 93s Unpacking python3-numpy-dev:amd64 (1:2.3.5+ds-3) ... 93s Preparing to unpack .../libstdc++6_15.2.0-12ubuntu1_amd64.deb ... 93s Unpacking libstdc++6:amd64 (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 93s Preparing to unpack .../libatomic1_15.2.0-12ubuntu1_amd64.deb ... 93s Unpacking libatomic1:amd64 (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 93s Preparing to unpack .../gcc-15-base_15.2.0-12ubuntu1_amd64.deb ... 93s Unpacking gcc-15-base:amd64 (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 93s Setting up gcc-15-base:amd64 (15.2.0-12ubuntu1) ... 93s (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 ... 125011 files and directories currently installed.) 93s Preparing to unpack .../libgcc-s1_15.2.0-12ubuntu1_amd64.deb ... 93s Unpacking libgcc-s1:amd64 (15.2.0-12ubuntu1) over (15.2.0-11ubuntu1) ... 93s Setting up libgcc-s1:amd64 (15.2.0-12ubuntu1) ... 93s Selecting previously unselected package libblas3:amd64. 93s (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 ... 125011 files and directories currently installed.) 93s Preparing to unpack .../00-libblas3_3.12.1-7ubuntu1_amd64.deb ... 93s Unpacking libblas3:amd64 (3.12.1-7ubuntu1) ... 93s Selecting previously unselected package libgfortran5:amd64. 93s Preparing to unpack .../01-libgfortran5_15.2.0-12ubuntu1_amd64.deb ... 93s Unpacking libgfortran5:amd64 (15.2.0-12ubuntu1) ... 93s Selecting previously unselected package liblapack3:amd64. 93s Preparing to unpack .../02-liblapack3_3.12.1-7ubuntu1_amd64.deb ... 93s Unpacking liblapack3:amd64 (3.12.1-7ubuntu1) ... 93s Selecting previously unselected package python3-numpy. 94s Preparing to unpack .../03-python3-numpy_1%3a2.3.5+ds-3_amd64.deb ... 94s Unpacking python3-numpy (1:2.3.5+ds-3) ... 94s Selecting previously unselected package diffstat. 94s Preparing to unpack .../04-diffstat_1.68-1_amd64.deb ... 94s Unpacking diffstat (1.68-1) ... 94s Selecting previously unselected package libgomp1:amd64. 94s Preparing to unpack .../05-libgomp1_15.2.0-12ubuntu1_amd64.deb ... 94s Unpacking libgomp1:amd64 (15.2.0-12ubuntu1) ... 94s Selecting previously unselected package gettext. 94s Preparing to unpack .../06-gettext_0.23.2-1_amd64.deb ... 94s Unpacking gettext (0.23.2-1) ... 94s Selecting previously unselected package libsuitesparseconfig7:amd64. 94s Preparing to unpack .../07-libsuitesparseconfig7_1%3a7.12.1+dfsg-1_amd64.deb ... 94s Unpacking libsuitesparseconfig7:amd64 (1:7.12.1+dfsg-1) ... 94s Selecting previously unselected package libamd3:amd64. 94s Preparing to unpack .../08-libamd3_1%3a7.12.1+dfsg-1_amd64.deb ... 94s Unpacking libamd3:amd64 (1:7.12.1+dfsg-1) ... 94s Selecting previously unselected package libcolamd3:amd64. 94s Preparing to unpack .../09-libcolamd3_1%3a7.12.1+dfsg-1_amd64.deb ... 94s Unpacking libcolamd3:amd64 (1:7.12.1+dfsg-1) ... 94s Selecting previously unselected package libltdl7:amd64. 94s Preparing to unpack .../10-libltdl7_2.5.4-9_amd64.deb ... 94s Unpacking libltdl7:amd64 (2.5.4-9) ... 94s Selecting previously unselected package libglpk40:amd64. 94s Preparing to unpack .../11-libglpk40_5.0-2_amd64.deb ... 94s Unpacking libglpk40:amd64 (5.0-2) ... 94s Selecting previously unselected package libpython3.14:amd64. 94s Preparing to unpack .../12-libpython3.14_3.14.2-1_amd64.deb ... 94s Unpacking libpython3.14:amd64 (3.14.2-1) ... 94s Selecting previously unselected package libqhull-r8.0:amd64. 94s Preparing to unpack .../13-libqhull-r8.0_2020.2-8_amd64.deb ... 94s Unpacking libqhull-r8.0:amd64 (2020.2-8) ... 94s Selecting previously unselected package python-cobra-data. 94s Preparing to unpack .../14-python-cobra-data_0.29.1-3_all.deb ... 94s Unpacking python-cobra-data (0.29.1-3) ... 94s Selecting previously unselected package python3-annotated-types. 94s Preparing to unpack .../15-python3-annotated-types_0.7.0-1_all.deb ... 94s Unpacking python3-annotated-types (0.7.0-1) ... 94s Selecting previously unselected package python3-sniffio. 94s Preparing to unpack .../16-python3-sniffio_1.3.1-1_all.deb ... 94s Unpacking python3-sniffio (1.3.1-1) ... 94s Selecting previously unselected package python3-anyio. 94s Preparing to unpack .../17-python3-anyio_4.11.0-3_all.deb ... 94s Unpacking python3-anyio (4.11.0-3) ... 94s Selecting previously unselected package python3-click. 94s Preparing to unpack .../18-python3-click_8.2.0+0.really.8.1.8-1build1_all.deb ... 94s Unpacking python3-click (8.2.0+0.really.8.1.8-1build1) ... 94s Selecting previously unselected package python3-depinfo. 94s Preparing to unpack .../19-python3-depinfo_2.2.0-4_amd64.deb ... 94s Unpacking python3-depinfo (2.2.0-4) ... 94s Selecting previously unselected package python3-diskcache. 94s Preparing to unpack .../20-python3-diskcache_5.6.3-1_all.deb ... 94s Unpacking python3-diskcache (5.6.3-1) ... 94s Selecting previously unselected package python3-h11. 94s Preparing to unpack .../21-python3-h11_0.14.0-1.1_all.deb ... 94s Unpacking python3-h11 (0.14.0-1.1) ... 94s Selecting previously unselected package python3-httpcore. 94s Preparing to unpack .../22-python3-httpcore_1.0.9-1_all.deb ... 94s Unpacking python3-httpcore (1.0.9-1) ... 94s Selecting previously unselected package python3-httpx. 94s Preparing to unpack .../23-python3-httpx_0.28.1-1build1_all.deb ... 94s Unpacking python3-httpx (0.28.1-1build1) ... 94s Selecting previously unselected package python3-swiglpk. 94s Preparing to unpack .../24-python3-swiglpk_5.0.10-2build3_amd64.deb ... 94s Unpacking python3-swiglpk (5.0.10-2build3) ... 94s Selecting previously unselected package python3-mpmath. 94s Preparing to unpack .../25-python3-mpmath_1.3.0-2_all.deb ... 94s Unpacking python3-mpmath (1.3.0-2) ... 94s Selecting previously unselected package python3-sympy. 94s Preparing to unpack .../26-python3-sympy_1.14.0-2_all.deb ... 94s Unpacking python3-sympy (1.14.0-2) ... 94s Selecting previously unselected package python3-optlang. 94s Preparing to unpack .../27-python3-optlang_1.8.3-1_all.deb ... 94s Unpacking python3-optlang (1.8.3-1) ... 94s Selecting previously unselected package python3-pytz. 94s Preparing to unpack .../28-python3-pytz_2025.2-5_all.deb ... 94s Unpacking python3-pytz (2025.2-5) ... 94s Selecting previously unselected package python3-pandas-lib:amd64. 94s Preparing to unpack .../29-python3-pandas-lib_2.3.3+dfsg-3_amd64.deb ... 94s Unpacking python3-pandas-lib:amd64 (2.3.3+dfsg-3) ... 94s Selecting previously unselected package python3-pandas. 94s Preparing to unpack .../30-python3-pandas_2.3.3+dfsg-3_all.deb ... 94s Unpacking python3-pandas (2.3.3+dfsg-3) ... 94s Selecting previously unselected package python3-platformdirs. 94s Preparing to unpack .../31-python3-platformdirs_4.5.1-1_all.deb ... 94s Unpacking python3-platformdirs (4.5.1-1) ... 94s Selecting previously unselected package python3-pydantic-core. 94s Preparing to unpack .../32-python3-pydantic-core_2.41.5-2_amd64.deb ... 94s Unpacking python3-pydantic-core (2.41.5-2) ... 94s Selecting previously unselected package python3-typing-inspection. 94s Preparing to unpack .../33-python3-typing-inspection_0.4.2-1_all.deb ... 94s Unpacking python3-typing-inspection (0.4.2-1) ... 94s Selecting previously unselected package python3-dnspython. 94s Preparing to unpack .../34-python3-dnspython_2.7.0-1ubuntu2_all.deb ... 94s Unpacking python3-dnspython (2.7.0-1ubuntu2) ... 94s Selecting previously unselected package python3-email-validator. 94s Preparing to unpack .../35-python3-email-validator_2.2.0-1_all.deb ... 94s Unpacking python3-email-validator (2.2.0-1) ... 94s Selecting previously unselected package python3-pydantic. 94s Preparing to unpack .../36-python3-pydantic_2.12.5-2_amd64.deb ... 94s Unpacking python3-pydantic (2.12.5-2) ... 94s Selecting previously unselected package python3-ruamel.yaml.clib. 94s Preparing to unpack .../37-python3-ruamel.yaml.clib_0.2.15+ds-1_amd64.deb ... 94s Unpacking python3-ruamel.yaml.clib (0.2.15+ds-1) ... 94s Selecting previously unselected package python3-ruamel.yaml. 94s Preparing to unpack .../38-python3-ruamel.yaml_0.18.10+ds-1_all.deb ... 94s Unpacking python3-ruamel.yaml (0.18.10+ds-1) ... 94s Selecting previously unselected package python3-tabulate. 94s Preparing to unpack .../39-python3-tabulate_0.9.0-1build1_all.deb ... 94s Unpacking python3-tabulate (0.9.0-1build1) ... 95s Selecting previously unselected package python3-sbml5. 95s Preparing to unpack .../40-python3-sbml5_5.20.5+dfsg-1build1_amd64.deb ... 95s Unpacking python3-sbml5 (5.20.5+dfsg-1build1) ... 95s Selecting previously unselected package python3-cobra. 95s Preparing to unpack .../41-python3-cobra_0.29.1-3_amd64.deb ... 95s Unpacking python3-cobra (0.29.1-3) ... 95s Selecting previously unselected package python3-cpuinfo. 95s Preparing to unpack .../42-python3-cpuinfo_9.0.0+git20221119-3_all.deb ... 95s Unpacking python3-cpuinfo (9.0.0+git20221119-3) ... 95s Selecting previously unselected package python3-decorator. 95s Preparing to unpack .../43-python3-decorator_5.2.1-2_all.deb ... 95s Unpacking python3-decorator (5.2.1-2) ... 95s Selecting previously unselected package python3-iniconfig. 95s Preparing to unpack .../44-python3-iniconfig_2.1.0-2_all.deb ... 95s Unpacking python3-iniconfig (2.1.0-2) ... 95s Selecting previously unselected package python3-pluggy. 95s Preparing to unpack .../45-python3-pluggy_1.6.0-2_all.deb ... 95s Unpacking python3-pluggy (1.6.0-2) ... 95s Selecting previously unselected package python3-pytest. 95s Preparing to unpack .../46-python3-pytest_9.0.2-2_all.deb ... 95s Unpacking python3-pytest (9.0.2-2) ... 95s Selecting previously unselected package python3-pytest-benchmark. 95s Preparing to unpack .../47-python3-pytest-benchmark_5.2.3-1_all.deb ... 95s Unpacking python3-pytest-benchmark (5.2.3-1) ... 95s Selecting previously unselected package python3-pytest-mock. 95s Preparing to unpack .../48-python3-pytest-mock_3.15.1-1_all.deb ... 95s Unpacking python3-pytest-mock (3.15.1-1) ... 95s Selecting previously unselected package quilt. 95s Preparing to unpack .../49-quilt_0.68-1_all.deb ... 95s Unpacking quilt (0.68-1) ... 95s Selecting previously unselected package python3-scipy. 95s Preparing to unpack .../50-python3-scipy_1.16.3-4_amd64.deb ... 95s Unpacking python3-scipy (1.16.3-4) ... 95s Setting up python3-iniconfig (2.1.0-2) ... 95s Setting up python3-sniffio (1.3.1-1) ... 95s Setting up python3-pydantic-core (2.41.5-2) ... 95s Setting up python3-typing-inspection (0.4.2-1) ... 95s Setting up python3-anyio (4.11.0-3) ... 95s Setting up python3-ruamel.yaml.clib (0.2.15+ds-1) ... 95s Setting up python3-tabulate (0.9.0-1build1) ... 96s Setting up libqhull-r8.0:amd64 (2020.2-8) ... 96s Setting up python3-pytz (2025.2-5) ... 96s Setting up libgomp1:amd64 (15.2.0-12ubuntu1) ... 96s Setting up python3-click (8.2.0+0.really.8.1.8-1build1) ... 96s Setting up python3-annotated-types (0.7.0-1) ... 96s Setting up python3-platformdirs (4.5.1-1) ... 96s Setting up python3-decorator (5.2.1-2) ... 96s Setting up libblas3:amd64 (3.12.1-7ubuntu1) ... 96s update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode 96s Setting up diffstat (1.68-1) ... 96s Setting up python3-numpy-dev:amd64 (1:2.3.5+ds-3) ... 96s Setting up libatomic1:amd64 (15.2.0-12ubuntu1) ... 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:amd64 (2.5.4-9) ... 96s Setting up libgfortran5:amd64 (15.2.0-12ubuntu1) ... 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 libpython3.14:amd64 (3.14.2-1) ... 97s Setting up libsuitesparseconfig7:amd64 (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) ... 97s Setting up python-cobra-data (0.29.1-3) ... 97s Setting up libstdc++6:amd64 (15.2.0-12ubuntu1) ... 97s Setting up python3-httpcore (1.0.9-1) ... 97s Setting up python3-sympy (1.14.0-2) ... 101s /usr/lib/python3/dist-packages/sympy/testing/runtests.py:283: SyntaxWarning: 'return' in a 'finally' block 101s return p.returncode 101s Setting up liblapack3:amd64 (3.12.1-7ubuntu1) ... 101s update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/x86_64-linux-gnu/liblapack.so.3 (liblapack.so.3-x86_64-linux-gnu) in auto mode 101s Setting up gettext (0.23.2-1) ... 101s Setting up libamd3:amd64 (1:7.12.1+dfsg-1) ... 101s Setting up libcolamd3:amd64 (1:7.12.1+dfsg-1) ... 101s Setting up python3-pytest (9.0.2-2) ... 101s Setting up quilt (0.68-1) ... 101s Setting up python3-sbml5 (5.20.5+dfsg-1build1) ... 101s Setting up python3-httpx (0.28.1-1build1) ... 101s Setting up libglpk40:amd64 (5.0-2) ... 101s Setting up python3-pydantic (2.12.5-2) ... 102s Setting up python3-numpy (1:2.3.5+ds-3) ... 103s Setting up python3-pytest-mock (3.15.1-1) ... 103s Setting up python3-swiglpk (5.0.10-2build3) ... 103s Setting up python3-optlang (1.8.3-1) ... 103s Setting up python3-pytest-benchmark (5.2.3-1) ... 103s Setting up python3-scipy (1.16.3-4) ... 105s Setting up python3-pandas-lib:amd64 (2.3.3+dfsg-3) ... 105s Setting up python3-pandas (2.3.3+dfsg-3) ... 108s Setting up python3-cobra (0.29.1-3) ... 108s Processing triggers for libc-bin (2.42-2ubuntu4) ... 108s Processing triggers for man-db (2.13.1-1) ... 108s Processing triggers for install-info (7.2-5) ... 110s autopkgtest [09:17:04]: test run-unit-test: [----------------------- 110s File series fully applied, ends at patch debian/patches/pr1452.patch 110s Running Tests 110s Since python3-sbml5 can only deal with one Python3 version we restrict the test to default Python3 111s ============================= test session starts ============================== 111s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 111s 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) 111s rootdir: /tmp/autopkgtest.lyUHKc/autopkgtest_tmp 111s plugins: typeguard-4.4.4, anyio-4.11.0, benchmark-5.2.3, mock-3.15.1 111s collected 554 items 111s 112s tests/test_core/test_configuration.py ...... [ 1%] 117s tests/test_core/test_core_reaction.py ..........ss.............F..FFFF.. [ 7%] 117s ...................x....... [ 12%] 117s tests/test_core/test_dictlist.py ...................... [ 16%] 117s tests/test_core/test_formula.py ..... [ 16%] 117s tests/test_core/test_gene.py . [ 17%] 117s tests/test_core/test_gpr.py ......................x..x.................. [ 25%] 122s ........................... [ 29%] 122s tests/test_core/test_group.py .. [ 30%] 122s tests/test_core/test_metabolite.py ...ss.ss. [ 31%] 126s tests/test_core/test_model.py .........................FF.F............. [ 39%] 127s ...........s..s.ss. [ 42%] 127s tests/test_core/test_solution.py .ss [ 43%] 131s tests/test_flux_analysis/test_deletion.py ....s..... [ 45%] 133s tests/test_flux_analysis/test_fastcc.py .... [ 46%] 134s tests/test_flux_analysis/test_geometric.py .. [ 46%] 134s tests/test_flux_analysis/test_moma.py . [ 46%] 136s tests/test_flux_analysis/test_parsimonious.py .. [ 46%] 136s tests/test_flux_analysis/test_reaction.py . [ 47%] 137s tests/test_flux_analysis/test_room.py .... [ 47%] 142s tests/test_flux_analysis/test_variability.py ....... [ 49%] 142s tests/test_flux_analysis/test_deletion.py sss [ 49%] 142s tests/test_flux_analysis/test_moma.py s [ 49%] 147s tests/test_flux_analysis/test_deletion.py ...... [ 50%] 147s tests/test_flux_analysis/test_gapfilling.py F [ 51%] 147s tests/test_flux_analysis/test_helpers.py ... [ 51%] 149s tests/test_flux_analysis/test_loopless.py ..... [ 52%] 150s tests/test_flux_analysis/test_phenotype_phase_plane.py ...... [ 53%] 150s tests/test_flux_analysis/test_variability.py ....... [ 54%] 151s tests/test_io/test_annotation.py .. [ 55%] 151s tests/test_io/test_annotation_format.py .. [ 55%] 152s tests/test_io/test_io_order.py ........................... [ 60%] 152s tests/test_io/test_json.py .... [ 61%] 159s tests/test_io/test_mat.py ............... [ 63%] 159s tests/test_io/test_notes.py . [ 64%] 159s tests/test_io/test_pickle.py .. [ 64%] 162s tests/test_io/test_sbml.py .ssss............xxxx.x.x..s............. [ 71%] 162s tests/test_io/test_web/test_load.py ..ssss. [ 73%] 162s tests/test_io/test_yaml.py .x [ 73%] 162s tests/test_manipulation/test_annotate.py . [ 73%] 163s tests/test_manipulation/test_delete.py ....... [ 74%] 163s tests/test_manipulation/test_modify.py ... [ 75%] 163s tests/test_manipulation/test_validate.py .. [ 75%] 163s tests/test_medium/test_boundary_types.py ........... [ 77%] 165s tests/test_medium/test_minimal_medium.py .......... [ 79%] 166s tests/test_sampling/test_achr.py ...... [ 80%] 168s tests/test_sampling/test_optgp.py ...... [ 81%] 172s tests/test_sampling/test_sampling.py .......... [ 83%] 173s tests/test_summary/test_metabolite_summary.py FFFFFFFFFFFFFFFFF [ 86%] 174s tests/test_summary/test_model_summary.py FFFFFFFFFFFFFFF [ 89%] 175s tests/test_summary/test_reaction_summary.py FFFFFFFFFFFFFFFFFFFF [ 92%] 175s tests/test_util/test_array.py .. [ 93%] 175s tests/test_util/test_context.py ... [ 93%] 185s tests/test_util/test_process_pool.py ............... [ 96%] 185s tests/test_util/test_solver.py ..............s [ 99%] 185s tests/test_util/test_util.py ...X [100%] 185s 185s =================================== FAILURES =================================== 185s __________________________________ test_copy ___________________________________ 185s 185s model = 185s 185s def test_copy(model: Model) -> None: 185s """Test reaction copying.""" 185s PGI = model.reactions.PGI 185s > copied = PGI.copy() 185s ^^^^^^^^^^ 185s 185s tests/test_core/test_core_reaction.py:393: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________________________________ test_add ___________________________________ 185s 185s model = 185s 185s def test_add(model: Model) -> None: 185s """Test reaction addition to model.""" 185s # Not in place addition should work on a copy 185s > new = model.reactions.PGI + model.reactions.EX_h2o_e 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_core/test_core_reaction.py:469: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:989: in __add__ 185s new_reaction = self.copy() 185s ^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s __________________________________ test_radd ___________________________________ 185s 185s model = 185s 185s def test_radd(model: Model) -> None: 185s """Test __radd__ for a reaction.""" 185s > new = sum([model.reactions.PGI, model.reactions.EX_h2o_e]) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_core/test_core_reaction.py:485: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:989: in __add__ 185s new_reaction = self.copy() 185s ^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________________________________ test_mul ___________________________________ 185s 185s model = 185s 185s def test_mul(model: Model) -> None: 185s """Test scalar multiplication of factors with a reaction.""" 185s > new = model.reactions.PGI * 2 185s ^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_core/test_core_reaction.py:492: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1131: in __mul__ 185s new = self.copy() 185s ^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________________________________ test_sub ___________________________________ 185s 185s model = 185s 185s def test_sub(model: Model) -> None: 185s """Test reaction subtraction.""" 185s > new = model.reactions.PGI - model.reactions.EX_h2o_e 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_core/test_core_reaction.py:498: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1050: in __sub__ 185s new = self.copy() 185s ^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________________________ test_deepcopy_benchmark ____________________________ 185s 185s model = 185s benchmark = 185s 185s def test_deepcopy_benchmark(model: Model, benchmark: BenchmarkFixture) -> None: 185s """Benchmark deepcopying a model. 185s 185s Parameters 185s ---------- 185s model: cobra.Model 185s benchmark: BenchmarkFixture 185s """ 185s > benchmark(deepcopy, model) 185s 185s tests/test_core/test_model.py:613: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:184: in __call__ 185s return self._raw(function_to_benchmark, *args, **kwargs) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:216: in _raw 185s duration, iterations, loops_range = self._calibrate_timer(runner) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:370: in _calibrate_timer 185s duration = runner(loops_range) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/pytest_benchmark/fixture.py:138: in runner 185s function_to_benchmark(*args, **kwargs) 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:240: in _reconstruct 185s state = deepcopy(state, memo) 185s ^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:131: in deepcopy 185s y = copier(x, memo) 185s ^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:202: in _deepcopy_dict 185s y[deepcopy(key, memo)] = deepcopy(value, memo) 185s ^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:257: in _reconstruct 185s item = deepcopy(item, memo) 185s ^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ________________________________ test_deepcopy _________________________________ 185s 185s model = 185s 185s def test_deepcopy(model: Model) -> None: 185s """Test deepcopying works, and maintains reference structures. 185s 185s Parameters 185s ---------- 185s model: cobra.Model 185s """ 185s # Reference structures are maintained when deepcopying 185s > model_copy = deepcopy(model) 185s ^^^^^^^^^^^^^^^ 185s 185s tests/test_core/test_model.py:624: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:240: in _reconstruct 185s state = deepcopy(state, memo) 185s ^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:131: in deepcopy 185s y = copier(x, memo) 185s ^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:202: in _deepcopy_dict 185s y[deepcopy(key, memo)] = deepcopy(value, memo) 185s ^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:257: in _reconstruct 185s item = deepcopy(item, memo) 185s ^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ______________________________ test_merge_models _______________________________ 185s 185s model = 185s tiny_toy_model = 185s 185s def test_merge_models(model: Model, tiny_toy_model: Model) -> None: 185s """Test merging models. 185s 185s Parameters 185s ---------- 185s model: cobra.Model 185s tiny_toy_model: cobra.Model 185s """ 185s with model, tiny_toy_model: 185s # Add some cons/vars to tiny_toy_model for testing merging 185s tiny_toy_model.add_reactions([Reaction("EX_glc__D_e")]) 185s variable = tiny_toy_model.problem.Variable("foo") 185s constraint = tiny_toy_model.problem.Constraint( 185s variable, ub=0, lb=0, name="constraint" 185s ) 185s tiny_toy_model.add_cons_vars([variable, constraint]) 185s 185s > merged = model.merge( 185s tiny_toy_model, inplace=False, objective="sum", prefix_existing="tiny_" 185s ) 185s 185s tests/test_core/test_model.py:679: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/model.py:1454: in merge 185s new_reactions = deepcopy(right.reactions) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:257: in _reconstruct 185s item = deepcopy(item, memo) 185s ^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s _______________________________ test_gapfilling ________________________________ 185s 185s salmonella = 185s 185s def test_gapfilling(salmonella: Model) -> None: 185s """Test Gapfilling.""" 185s m = Model() 185s m.add_metabolites([Metabolite(m_id) for m_id in ["a", "b", "c"]]) 185s exa = Reaction("EX_a") 185s exa.add_metabolites({m.metabolites.a: 1}) 185s b2c = Reaction("b2c") 185s b2c.add_metabolites({m.metabolites.b: -1, m.metabolites.c: 1}) 185s dmc = Reaction("DM_c") 185s dmc.add_metabolites({m.metabolites.c: -1}) 185s m.add_reactions([exa, b2c, dmc]) 185s m.objective = "DM_c" 185s 185s universal = Model() 185s a2b = Reaction("a2b") 185s a2d = Reaction("a2d") 185s universal.add_reactions([a2b, a2d]) 185s a2b.build_reaction_from_string("a --> b", verbose=False) 185s a2d.build_reaction_from_string("a --> d", verbose=False) 185s 185s # # GrowMatch 185s # result = gapfilling.growMatch(m, universal)[0] 185s result = gapfill(m, universal)[0] 185s assert len(result) == 1 185s assert result[0].id == "a2b" 185s 185s # # SMILEY 185s # result = gapfilling.SMILEY(m, "b", universal)[0] 185s with m: 185s m.objective = m.add_boundary(m.metabolites.b, type="demand") 185s result = gapfill(m, universal)[0] 185s assert len(result) == 1 185s assert result[0].id == "a2b" 185s 185s # # 2 rounds of GrowMatch with exchange reactions 185s # result = gapfilling.growMatch(m, None, ex_rxns=True, iterations=2) 185s result = gapfill(m, None, exchange_reactions=True, iterations=2) 185s assert len(result) == 2 185s assert len(result[0]) == 1 185s assert len(result[1]) == 1 185s assert {i[0].id for i in result} == {"EX_b", "EX_c"} 185s 185s # # Gapfilling solution adds metabolites not present in original model 185s # test for when demand = T 185s # a demand reaction must be added to clear new metabolite 185s universal_noDM = Model() 185s a2b = Reaction("a2b") 185s universal_noDM.add_reactions([a2b]) 185s a2b.build_reaction_from_string("a --> b + d", verbose=False) 185s result = gapfill( 185s m, universal_noDM, exchange_reactions=False, demand_reactions=True 185s )[0] 185s # add reaction a2b and demand reaction to clear met d 185s assert len(result) == 2 185s assert "a2b" in [x.id for x in result] 185s 185s # test for when demand = False 185s # test for when metabolites are added to the model and 185s # must be cleared by other reactions in universal model 185s # (i.e. not necessarily a demand reaction) 185s universal_withDM = universal_noDM.copy() 185s d_dm = Reaction("d_dm") 185s universal_withDM.add_reactions([d_dm]) 185s d_dm.build_reaction_from_string("d -->", verbose=False) 185s result = gapfill( 185s m, universal_withDM, exchange_reactions=False, demand_reactions=False 185s )[0] 185s assert len(result) == 2 185s assert "a2b" in [x.id for x in result] 185s 185s # somewhat bigger model 185s universal = Model("universal_reactions") 185s with salmonella as model: 185s for i in [i.id for i in model.metabolites.f6p_c.reactions]: 185s reaction = model.reactions.get_by_id(i) 185s > universal.add_reactions([reaction.copy()]) 185s ^^^^^^^^^^^^^^^ 185s 185s tests/test_flux_analysis/test_gapfilling.py:82: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s _______________ test_metabolite_summary_interface[optlang-glpk] ________________ 185s 185s model = , opt_solver = 'optlang-glpk' 185s 185s def test_metabolite_summary_interface(model, opt_solver): 185s """Test that a summary can be created successfully.""" 185s model.solver = opt_solver 185s metabolite = model.metabolites.get_by_id("q8_c") 185s > MetaboliteSummary( 185s metabolite=metabolite, 185s model=model, 185s ) 185s 185s tests/test_summary/test_metabolite_summary.py:13: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 185s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 185s ^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ________________ test_metabolite_summary_to_frame[optlang-glpk] ________________ 185s 185s model = , opt_solver = 'optlang-glpk' 185s 185s def test_metabolite_summary_to_frame(model, opt_solver): 185s """Test that the summary's method ``to_frame`` can be called.""" 185s model.solver = opt_solver 185s > summary = model.metabolites.get_by_id("atp_c").summary() 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_summary/test_metabolite_summary.py:39: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 185s return MetaboliteSummary( 185s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 185s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 185s ^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs0] ____________ 185s 185s model = , opt_solver = 'optlang-glpk' 185s kwargs = {} 185s 185s @pytest.mark.parametrize( 185s "kwargs", 185s [ 185s {}, 185s {"names": True}, 185s {"float_format": ".1f"}, 185s {"threshold": 1e-2}, 185s {"column_width": 20}, 185s ], 185s ) 185s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 185s """Test that the summary's method ``to_string`` can be called.""" 185s model.solver = opt_solver 185s > summary = model.metabolites.get_by_id("atp_c").summary() 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_summary/test_metabolite_summary.py:56: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 185s return MetaboliteSummary( 185s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 185s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 185s ^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs1] ____________ 185s 185s model = , opt_solver = 'optlang-glpk' 185s kwargs = {'names': True} 185s 185s @pytest.mark.parametrize( 185s "kwargs", 185s [ 185s {}, 185s {"names": True}, 185s {"float_format": ".1f"}, 185s {"threshold": 1e-2}, 185s {"column_width": 20}, 185s ], 185s ) 185s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 185s """Test that the summary's method ``to_string`` can be called.""" 185s model.solver = opt_solver 185s > summary = model.metabolites.get_by_id("atp_c").summary() 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_summary/test_metabolite_summary.py:56: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 185s return MetaboliteSummary( 185s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 185s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 185s ^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs2] ____________ 185s 185s model = , opt_solver = 'optlang-glpk' 185s kwargs = {'float_format': '.1f'} 185s 185s @pytest.mark.parametrize( 185s "kwargs", 185s [ 185s {}, 185s {"names": True}, 185s {"float_format": ".1f"}, 185s {"threshold": 1e-2}, 185s {"column_width": 20}, 185s ], 185s ) 185s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 185s """Test that the summary's method ``to_string`` can be called.""" 185s model.solver = opt_solver 185s > summary = model.metabolites.get_by_id("atp_c").summary() 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_summary/test_metabolite_summary.py:56: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 185s return MetaboliteSummary( 185s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 185s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 185s ^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs3] ____________ 185s 185s model = , opt_solver = 'optlang-glpk' 185s kwargs = {'threshold': 0.01} 185s 185s @pytest.mark.parametrize( 185s "kwargs", 185s [ 185s {}, 185s {"names": True}, 185s {"float_format": ".1f"}, 185s {"threshold": 1e-2}, 185s {"column_width": 20}, 185s ], 185s ) 185s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 185s """Test that the summary's method ``to_string`` can be called.""" 185s model.solver = opt_solver 185s > summary = model.metabolites.get_by_id("atp_c").summary() 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s 185s tests/test_summary/test_metabolite_summary.py:56: 185s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 185s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 185s return MetaboliteSummary( 185s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 185s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 185s ^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 185s new_reaction = deepcopy(self) 185s ^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:157: in deepcopy 185s y = _reconstruct(x, memo, *rv) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:234: in _reconstruct 185s y = func(*args) 185s ^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:233: in 185s args = (deepcopy(arg, memo) for arg in args) 185s ^^^^^^^^^^^^^^^^^^^ 185s /usr/lib/python3.14/copy.py:138: in deepcopy 185s y = copier(memo) 185s ^^^^^^^^^^^^ 185s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 185s cop = deepcopy(super(Reaction, self), memo) 185s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185s E RecursionError: maximum recursion depth exceeded 185s !!! Recursion detected (same locals & position) 185s ___________ test_metabolite_summary_to_string[optlang-glpk-kwargs4] ____________ 185s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'column_width': 20} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_metabolite_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.metabolites.get_by_id("atp_c").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:56: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs0] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.metabolites.get_by_id("atp_c").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:66: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs1] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'names': True} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.metabolites.get_by_id("atp_c").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:66: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs2] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'float_format': '.1f'} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.metabolites.get_by_id("atp_c").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:66: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_metabolite_summary_to_html[optlang-glpk-kwargs3] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'threshold': 0.01} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_metabolite_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.metabolites.get_by_id("atp_c").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:66: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ___________________ test_q8_producing_summary[optlang-glpk] ____________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_q8_producing_summary(model, opt_solver): 186s """Test that the production summary of q8 is accurate.""" 186s model.solver = opt_solver 186s > summary = model.metabolites.get_by_id("q8_c").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:73: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ___________________ test_q8_consuming_summary[optlang-glpk] ____________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_q8_consuming_summary(model, opt_solver): 186s """Test that the consumption summary of q8 is accurate.""" 186s model.solver = opt_solver 186s > summary = model.metabolites.get_by_id("q8_c").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:82: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s __________________ test_fdp_production_with_fva[optlang-glpk] __________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_fdp_production_with_fva(model, opt_solver): 186s """Test that the production summary of fdp is within expected bounds.""" 186s model.solver = opt_solver 186s > summary = model.metabolites.get_by_id("fdp_c").summary(fva=0.99) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:100: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s __________ test_metabolite_summary_flux_in_context[optlang-glpk-q8_c] __________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s metabolite_id = 'q8_c' 186s 186s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 186s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 186s """Test that the metabolite summary inside and outside of a context are equal.""" 186s model.solver = opt_solver 186s with model: 186s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:112: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _________ test_metabolite_summary_flux_in_context[optlang-glpk-fdp_c] __________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s metabolite_id = 'fdp_c' 186s 186s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 186s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 186s """Test that the metabolite summary inside and outside of a context are equal.""" 186s model.solver = opt_solver 186s with model: 186s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:112: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _________ test_metabolite_summary_flux_in_context[optlang-glpk-atp_c] __________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s metabolite_id = 'atp_c' 186s 186s @pytest.mark.parametrize("metabolite_id", ["q8_c", "fdp_c", "atp_c"]) 186s def test_metabolite_summary_flux_in_context(model, opt_solver, metabolite_id: str): 186s """Test that the metabolite summary inside and outside of a context are equal.""" 186s model.solver = opt_solver 186s with model: 186s > context_summary = model.metabolites.get_by_id(metabolite_id).summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_metabolite_summary.py:112: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/metabolite.py:310: in summary 186s return MetaboliteSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/metabolite_summary.py:83: in __init__ 186s r.copy() for r in sorted(metabolite.reactions, key=attrgetter("id")) 186s ^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s __________________ test_model_summary_interface[optlang-glpk] __________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_model_summary_interface(model, opt_solver): 186s """Test that a summary can be created successfully.""" 186s model.solver = opt_solver 186s > ModelSummary( 186s model=model, 186s ) 186s 186s tests/test_summary/test_model_summary.py:12: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s __________________ test_model_summary_to_frame[optlang-glpk] ___________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_model_summary_to_frame(model, opt_solver): 186s """Test that the summary's method ``to_frame`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:34: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ______________ test_model_summary_to_string[optlang-glpk-kwargs0] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_model_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:51: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ______________ test_model_summary_to_string[optlang-glpk-kwargs1] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'names': True} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_model_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:51: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ______________ test_model_summary_to_string[optlang-glpk-kwargs2] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'float_format': '.1f'} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_model_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:51: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ______________ test_model_summary_to_string[optlang-glpk-kwargs3] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'threshold': 0.01} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_model_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:51: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ______________ test_model_summary_to_string[optlang-glpk-kwargs4] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'column_width': 20} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_model_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:51: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _______________ test_model_summary_to_html[optlang-glpk-kwargs0] _______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_model_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:61: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _______________ test_model_summary_to_html[optlang-glpk-kwargs1] _______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'names': True} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_model_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:61: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _______________ test_model_summary_to_html[optlang-glpk-kwargs2] _______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'float_format': '.1f'} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_model_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:61: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _______________ test_model_summary_to_html[optlang-glpk-kwargs3] _______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'threshold': 0.01} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_model_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:61: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _________ test_model_summary_to_frame_previous_solution[optlang-glpk] __________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_model_summary_to_frame_previous_solution(model, opt_solver): 186s """Test that the summary correctly uses an existing solution.""" 186s model.solver = opt_solver 186s solution = pfba(model) 186s rxn = model.reactions.EX_glc__D_e 186s solution.fluxes[rxn.id] = -123 186s > summary = model.summary(solution=solution) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:71: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________________ test_model_summary_flux[optlang-glpk] _____________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_model_summary_flux(model, opt_solver): 186s """Test that the summary has expected fluxes.""" 186s model.solver = opt_solver 186s > summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:78: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _____________________ test_model_summary_fva[optlang-glpk] _____________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_model_summary_fva(model, opt_solver): 186s """Test that the exchange summary is within expected bounds.""" 186s model.solver = opt_solver 186s > summary = model.summary(fva=0.95) 186s ^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:88: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _______________ test_model_summary_flux_in_context[optlang-glpk] _______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_model_summary_flux_in_context(model, opt_solver): 186s """Test that the model summary inside and outside of a context are equal.""" 186s model.solver = opt_solver 186s copy = model.copy() 186s with model: 186s model.reactions.EX_glc__D_e.bounds = (0, 1000) 186s model.reactions.EX_ac_e.bounds = (-10, 1000) 186s > context_summary = model.summary() 186s ^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_model_summary.py:109: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/model.py:1389: in summary 186s return ModelSummary(model=self, solution=solution, fva=fva) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:84: in __init__ 186s self._generate(model, solution, fva) 186s /usr/lib/python3/dist-packages/cobra/summary/model_summary.py:126: in _generate 186s rxn.copy(): coef for rxn, coef in coefficients.items() 186s ^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ________________ test_reaction_summary_interface[optlang-glpk] _________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_reaction_summary_interface(model, opt_solver): 186s """Test that a summary can be created successfully.""" 186s model.solver = opt_solver 186s reaction = model.reactions.get_by_id("FUM") 186s > ReactionSummary( 186s reaction=reaction, 186s model=model, 186s ) 186s 186s tests/test_summary/test_reaction_summary.py:13: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _________________ test_reaction_summary_to_frame[optlang-glpk] _________________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s 186s def test_reaction_summary_to_frame(model, opt_solver): 186s """Test that the summary's method ``to_frame`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:37: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs0] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_reaction_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:54: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs1] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'names': True} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_reaction_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:54: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs2] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'float_format': '.1f'} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_reaction_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:54: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs3] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'threshold': 0.01} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_reaction_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:54: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________ test_reaction_summary_to_string[optlang-glpk-kwargs4] _____________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'column_width': 20} 186s 186s @pytest.mark.parametrize( 186s "kwargs", 186s [ 186s {}, 186s {"names": True}, 186s {"float_format": ".1f"}, 186s {"threshold": 1e-2}, 186s {"column_width": 20}, 186s ], 186s ) 186s def test_reaction_summary_to_string(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_string`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:54: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs0] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_reaction_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:64: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs1] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'names': True} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_reaction_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:64: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs2] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'float_format': '.1f'} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_reaction_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:64: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _____________ test_reaction_summary_to_html[optlang-glpk-kwargs3] ______________ 186s 186s model = , opt_solver = 'optlang-glpk' 186s kwargs = {'threshold': 0.01} 186s 186s @pytest.mark.parametrize( 186s "kwargs", [{}, {"names": True}, {"float_format": ".1f"}, {"threshold": 1e-2}] 186s ) 186s def test_reaction_summary_to_html(model, opt_solver, kwargs): 186s """Test that the summary's method ``to_html`` can be called.""" 186s model.solver = opt_solver 186s > summary = model.reactions.get_by_id("FUM").summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:64: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ____________________ test_reaction_summary_flux[ACALD-0.0] _____________________ 186s 186s model = , reaction_id = 'ACALD' 186s expected = 0.0 186s 186s @pytest.mark.parametrize( 186s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 186s ) 186s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 186s """Test that the reported flux in the summary is reasonable.""" 186s > result = ReactionSummary( 186s reaction=model.reactions.get_by_id(reaction_id), model=model 186s ) 186s 186s tests/test_summary/test_reaction_summary.py:73: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _____________________ test_reaction_summary_flux[FUM-5.06] _____________________ 186s 186s model = , reaction_id = 'FUM' 186s expected = 5.06 186s 186s @pytest.mark.parametrize( 186s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 186s ) 186s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 186s """Test that the reported flux in the summary is reasonable.""" 186s > result = ReactionSummary( 186s reaction=model.reactions.get_by_id(reaction_id), model=model 186s ) 186s 186s tests/test_summary/test_reaction_summary.py:73: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _____________________ test_reaction_summary_flux[PFK-7.48] _____________________ 186s 186s model = , reaction_id = 'PFK' 186s expected = 7.48 186s 186s @pytest.mark.parametrize( 186s "reaction_id, expected", [("ACALD", 0.0), ("FUM", 5.06), ("PFK", 7.48)] 186s ) 186s def test_reaction_summary_flux(model, reaction_id: str, expected: float) -> None: 186s """Test that the reported flux in the summary is reasonable.""" 186s > result = ReactionSummary( 186s reaction=model.reactions.get_by_id(reaction_id), model=model 186s ) 186s 186s tests/test_summary/test_reaction_summary.py:73: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _______________ test_reaction_summary_flux_fva[ACALD--1.27-0.0] ________________ 186s 186s model = , reaction_id = 'ACALD' 186s min_flux = -1.27, max_flux = 0.0 186s 186s @pytest.mark.parametrize( 186s "reaction_id, min_flux, max_flux", 186s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 186s ) 186s def test_reaction_summary_flux_fva( 186s model, reaction_id: str, min_flux: float, max_flux: float 186s ) -> None: 186s """Test that the reported flux ranges in the summary are reasonable.""" 186s > result = ReactionSummary( 186s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 186s ) 186s 186s tests/test_summary/test_reaction_summary.py:89: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ________________ test_reaction_summary_flux_fva[FUM-0.79-7.38] _________________ 186s 186s model = , reaction_id = 'FUM' 186s min_flux = 0.79, max_flux = 7.38 186s 186s @pytest.mark.parametrize( 186s "reaction_id, min_flux, max_flux", 186s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 186s ) 186s def test_reaction_summary_flux_fva( 186s model, reaction_id: str, min_flux: float, max_flux: float 186s ) -> None: 186s """Test that the reported flux ranges in the summary are reasonable.""" 186s > result = ReactionSummary( 186s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 186s ) 186s 186s tests/test_summary/test_reaction_summary.py:89: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s ________________ test_reaction_summary_flux_fva[PFK-2.58-16.38] ________________ 186s 186s model = , reaction_id = 'PFK' 186s min_flux = 2.58, max_flux = 16.38 186s 186s @pytest.mark.parametrize( 186s "reaction_id, min_flux, max_flux", 186s [("ACALD", -1.27, 0.0), ("FUM", 0.79, 7.38), ("PFK", 2.58, 16.38)], 186s ) 186s def test_reaction_summary_flux_fva( 186s model, reaction_id: str, min_flux: float, max_flux: float 186s ) -> None: 186s """Test that the reported flux ranges in the summary are reasonable.""" 186s > result = ReactionSummary( 186s reaction=model.reactions.get_by_id(reaction_id), model=model, fva=0.95 186s ) 186s 186s tests/test_summary/test_reaction_summary.py:89: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s _________________ test_reaction_summary_flux_in_context[ACALD] _________________ 186s 186s model = , reaction_id = 'ACALD' 186s 186s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 186s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 186s """Test that the reaction summary inside and outside of a context are equal.""" 186s with model: 186s > context_summary = model.reactions.get_by_id(reaction_id).summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:104: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s __________________ test_reaction_summary_flux_in_context[FUM] __________________ 186s 186s model = , reaction_id = 'FUM' 186s 186s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 186s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 186s """Test that the reaction summary inside and outside of a context are equal.""" 186s with model: 186s > context_summary = model.reactions.get_by_id(reaction_id).summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:104: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s __________________ test_reaction_summary_flux_in_context[PFK] __________________ 186s 186s model = , reaction_id = 'PFK' 186s 186s @pytest.mark.parametrize("reaction_id", ["ACALD", "FUM", "PFK"]) 186s def test_reaction_summary_flux_in_context(model, reaction_id: str) -> None: 186s """Test that the reaction summary inside and outside of a context are equal.""" 186s with model: 186s > context_summary = model.reactions.get_by_id(reaction_id).summary() 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s 186s tests/test_summary/test_reaction_summary.py:104: 186s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:1653: in summary 186s return ReactionSummary( 186s /usr/lib/python3/dist-packages/cobra/summary/reaction_summary.py:73: in __init__ 186s self._reaction = reaction.copy() 186s ^^^^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:960: in copy 186s new_reaction = deepcopy(self) 186s ^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:157: in deepcopy 186s y = _reconstruct(x, memo, *rv) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:234: in _reconstruct 186s y = func(*args) 186s ^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:233: in 186s args = (deepcopy(arg, memo) for arg in args) 186s ^^^^^^^^^^^^^^^^^^^ 186s /usr/lib/python3.14/copy.py:138: in deepcopy 186s y = copier(memo) 186s ^^^^^^^^^^^^ 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:273: in __deepcopy__ 186s cop = deepcopy(super(Reaction, self), memo) 186s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186s E RecursionError: maximum recursion depth exceeded 186s !!! Recursion detected (same locals & position) 186s =============================== warnings summary =============================== 186s :491 186s :491: DeprecationWarning: builtin type SwigPyPacked has no __module__ attribute 186s 186s :491 186s :491: DeprecationWarning: builtin type SwigPyObject has no __module__ attribute 186s 186s tests/test_core/test_gpr.py::test_and_gpr[a AND b-2-gpr_genes2-a and b] 186s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_and_b_strs] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 186s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a AND b'. 186s warn( 186s 186s tests/test_core/test_gpr.py::test_or_gpr[a OR b-2-gpr_genes2-a or b] 186s tests/test_core/test_gpr.py::test_gpr_as_symbolic_boolean[a OR b-symbolic_gpr2] 186s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_or_b_strs] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 186s tests/test_core/test_gpr.py::test_gpr_from_symbolic[a OR b-symbolic_gpr5] 186s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a OR b'. 186s warn( 186s 186s tests/test_core/test_gpr.py::test_complicated_gpr[(a OR b) AND c] 186s tests/test_core/test_gpr.py::test_gpr_as_symbolic_boolean[(a OR b) AND c-symbolic_gpr6] 186s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_or_and_strs] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists8] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists9] 186s tests/test_core/test_gpr.py::test_gpr_from_symbolic[(a OR b) AND c-symbolic_gpr9] 186s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule '(a OR b) AND c'. 186s warn( 186s 186s tests/test_core/test_gpr.py::test_gpr_that_needs_two_replacements 186s /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)'. 186s warn( 186s 186s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_and_b_strs] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists3] 186s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'b AND a'. 186s warn( 186s 186s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_or_b_strs] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists0] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists6] 186s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'b OR a'. 186s warn( 186s 186s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_or_strs] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists1] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists4] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists7] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists8] 186s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a OR b or c'. 186s warn( 186s 186s tests/test_core/test_gpr.py::test_gpr_equality_with_bolean_logic[a_b_c_and_strs] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists2] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists5] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists7] 186s tests/test_core/test_gpr.py::test_gpr_inequality_boolean[gpr_lists9] 186s /usr/lib/python3/dist-packages/cobra/core/gene.py:358: SyntaxWarning: Uppercase AND/OR found in rule 'a AND b and c'. 186s warn( 186s 186s tests/test_core/test_model.py::test_reaction_delete 186s tests/test_core/test_model.py::test_reaction_delete 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:879: DeprecationWarning: delete is deprecated. Use reaction.remove_from_model instead 186s warn( 186s 186s tests/test_core/test_model.py::test_group_loss_of_elements 186s /usr/lib/python3/dist-packages/cobra/core/group.py:147: UserWarning: need to pass in a list 186s warn("need to pass in a list") 186s 186s tests/test_core/test_model.py::test_change_objective 186s tests/test_core/test_model.py::test_change_objective 186s tests/test_core/test_model.py::test_change_objective 186s /usr/lib/python3/dist-packages/cobra/core/reaction.py:761: DeprecationWarning: Please use reaction.flux instead. 186s warn("Please use reaction.flux instead.", DeprecationWarning) 186s 186s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 186s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 186s /tmp/autopkgtest.lyUHKc/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 186s assert math.isnan(sol.growth) 186s 186s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 186s tests/test_flux_analysis/test_deletion.py::test_double_reaction_deletion 186s /tmp/autopkgtest.lyUHKc/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 186s assert math.isnan(sol_one.growth) 186s 186s tests/test_flux_analysis/test_gapfilling.py: 980 warnings 186s /tmp/autopkgtest.lyUHKc/autopkgtest_tmp/tests/conftest.py:53: DeprecationWarning: BoolOp.__init__ missing 1 required positional argument: 'op'. This will become an error in Python 3.15. 186s return _load(infile) 186s 186s tests/test_flux_analysis/test_gapfilling.py: 4020 warnings 186s /tmp/autopkgtest.lyUHKc/autopkgtest_tmp/tests/conftest.py:53: DeprecationWarning: Name.__init__ missing 1 required positional argument: 'id'. This will become an error in Python 3.15. 186s return _load(infile) 186s 186s tests/test_io/test_json.py: 34 warnings 186s tests/test_io/test_mat.py: 34 warnings 186s tests/test_io/test_pickle.py: 34 warnings 186s tests/test_io/test_yaml.py: 34 warnings 186s /tmp/autopkgtest.lyUHKc/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. 186s return load(infile) 186s 186s tests/test_io/test_json.py: 11 warnings 186s tests/test_io/test_mat.py: 11 warnings 186s tests/test_io/test_pickle.py: 11 warnings 186s tests/test_io/test_yaml.py: 11 warnings 186s /tmp/autopkgtest.lyUHKc/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. 186s return load(infile) 186s 186s tests/test_io/test_json.py: 1 warning 186s tests/test_io/test_mat.py: 5 warnings 186s tests/test_io/test_pickle.py: 1 warning 186s tests/test_io/test_sbml.py: 9 warnings 186s tests/test_io/test_yaml.py: 1 warning 186s /usr/lib/python3/dist-packages/cobra/util/solver.py:554: UserWarning: Solver status is 'infeasible'. 186s warn(f"Solver status is '{status}'.", UserWarning) 186s 186s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 186s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 186s /tmp/autopkgtest.lyUHKc/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. 186s return load(infile) 186s 186s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 186s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 186s tests/test_io/test_mat.py::test_load_matlab_model[raven_model-data_directory-raven.mat] 186s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 186s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 186s tests/test_io/test_mat.py::test_save_matlab_model[raven_model-raven.mat] 186s /tmp/autopkgtest.lyUHKc/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. 186s return load(infile) 186s 186s tests/test_io/test_pickle.py: 34 warnings 186s /tmp/autopkgtest.lyUHKc/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. 186s pickle_model = load_function(infile) 186s 186s tests/test_io/test_pickle.py: 11 warnings 186s /tmp/autopkgtest.lyUHKc/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. 186s pickle_model = load_function(infile) 186s 186s tests/test_io/test_sbml.py: 136 warnings 186s /tmp/autopkgtest.lyUHKc/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. 186s reference_model = load(infile) 186s 186s tests/test_io/test_sbml.py: 44 warnings 186s /tmp/autopkgtest.lyUHKc/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. 186s reference_model = load(infile) 186s 186s tests/test_io/test_yaml.py::test_save_yaml_model 186s /tmp/autopkgtest.lyUHKc/autopkgtest_tmp/tests/test_io/test_yaml.py:29: PendingDeprecationWarning: 186s you should no longer specify 'unsafe'. 186s For **dumping only** use yaml=YAML(typ='full') 186s 186s yaml = YAML(typ="unsafe") 186s 186s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 186s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 186s tests/test_medium/test_boundary_types.py::test_find_external_compartment_multi 186s /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]` 186s compartment = most[matches[most]][0] 186s 186s tests/test_util/test_process_pool.py::test_with_context 186s /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 186s self._pool.__enter__() 186s 186s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 186s 186s ------------------------------------------------------------------------------------------------------------------- benchmark: 30 tests -------------------------------------------------------------------------------------------------------------------- 186s Name (time in us) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations 186s ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 186s test_subtract_metabolite_benchmark[glpk] 1.5120 (1.0) 42.6340 (1.88) 1.6617 (1.01) 0.6812 (1.31) 1.6220 (1.0) 0.0590 (1.18) 41;206 601,777.4028 (0.99) 10032 1 186s test_subtract_metabolite_benchmark[gurobi] 1.5220 (1.01) 22.7340 (1.0) 1.6705 (1.01) 0.5192 (1.0) 1.6330 (1.01) 0.0510 (1.02) 49;296 598,611.0059 (0.99) 8516 1 186s test_subtract_metabolite_benchmark[cplex] 1.5220 (1.01) 42.2740 (1.86) 1.6493 (1.0) 0.5933 (1.14) 1.6220 (1.0) 0.0500 (1.0) 31;195 606,331.5458 (1.0) 9688 1 186s test_achr_sample_benchmark 76.2650 (50.44) 291.7090 (12.83) 83.4621 (50.61) 9.3754 (18.06) 79.9800 (49.31) 6.0790 (121.58) 326;284 11,981.4825 (0.02) 2345 1 186s test_change_objective_benchmark[optlang-glpk] 87.3910 (57.80) 406.9710 (17.90) 96.0918 (58.26) 10.5366 (20.29) 93.0295 (57.35) 5.6890 (113.78) 658;768 10,406.7123 (0.02) 6818 1 186s test_optgp_sample_benchmark 117.7670 (77.89) 369.4050 (16.25) 129.9640 (78.80) 11.8690 (22.86) 125.2080 (77.19) 14.3920 (287.84) 474;36 7,694.4360 (0.01) 2494 1 186s test_loopless_benchmark_after 579.8410 (383.49) 948.4550 (41.72) 617.3572 (374.32) 26.9072 (51.82) 614.4630 (378.83) 21.6730 (433.46) 71;19 1,619.8078 (0.00) 654 1 186s test_loopless_benchmark_before 2,851.7040 (>1000.0) 3,285.7050 (144.53) 2,928.7833 (>1000.0) 59.1252 (113.87) 2,916.1510 (>1000.0) 33.2748 (665.50) 21;17 341.4387 (0.00) 239 1 186s test_single_gene_deletion_fba_benchmark[glpk] 3,022.8310 (>1000.0) 3,461.6900 (152.27) 3,069.1846 (>1000.0) 43.4649 (83.71) 3,060.6175 (>1000.0) 24.7215 (494.43) 18;17 325.8194 (0.00) 260 1 186s test_minimal_medium_mip_benchmark 3,673.7480 (>1000.0) 4,407.5200 (193.87) 3,742.3830 (>1000.0) 67.0553 (129.14) 3,730.1480 (>1000.0) 37.3260 (746.52) 8;7 267.2094 (0.00) 176 1 186s test_minimal_medium_linear_benchmark 3,783.9540 (>1000.0) 4,234.5910 (186.27) 3,849.8213 (>1000.0) 66.3786 (127.84) 3,837.2240 (>1000.0) 37.0955 (741.91) 10;11 259.7523 (0.00) 151 1 186s test_copy_benchmark[optlang-glpk] 6,961.6070 (>1000.0) 59,366.9040 (>1000.0) 8,379.9565 (>1000.0) 6,065.5942 (>1000.0) 7,235.2280 (>1000.0) 233.4830 (>1000.0) 5;15 119.3324 (0.00) 139 1 186s test_gpr_equality_benchmark 9,354.9620 (>1000.0) 10,180.7220 (447.82) 9,532.6026 (>1000.0) 149.3010 (287.54) 9,499.5090 (>1000.0) 111.5450 (>1000.0) 13;8 104.9031 (0.00) 93 1 186s test_single_reaction_deletion_benchmark[glpk] 16,551.8630 (>1000.0) 17,075.4190 (751.10) 16,720.5238 (>1000.0) 122.6103 (236.14) 16,689.3845 (>1000.0) 125.0980 (>1000.0) 9;6 59.8067 (0.00) 58 1 186s test_flux_variability_loopless_benchmark[glpk] 18,073.8280 (>1000.0) 20,797.1890 (914.81) 18,290.1896 (>1000.0) 435.3286 (838.40) 18,205.9270 (>1000.0) 127.4215 (>1000.0) 1;2 54.6741 (0.00) 37 1 186s test_fastcc_benchmark[glpk] 30,890.9910 (>1000.0) 31,900.7680 (>1000.0) 31,199.1411 (>1000.0) 234.2903 (451.22) 31,183.2800 (>1000.0) 214.6280 (>1000.0) 7;3 32.0522 (0.00) 31 1 186s test_add_metabolite_benchmark[gurobi] 40,410.9700 (>1000.0) 41,180.2270 (>1000.0) 40,625.9907 (>1000.0) 188.5790 (363.19) 40,558.7575 (>1000.0) 199.8500 (>1000.0) 4;1 24.6148 (0.00) 26 1 186s test_add_metabolite_benchmark[cplex] 40,426.2240 (>1000.0) 43,653.3810 (>1000.0) 40,753.0569 (>1000.0) 604.2807 (>1000.0) 40,660.9565 (>1000.0) 208.7530 (>1000.0) 1;1 24.5380 (0.00) 26 1 186s test_add_metabolite_benchmark[glpk] 40,900.0850 (>1000.0) 41,467.6880 (>1000.0) 41,084.4932 (>1000.0) 141.9484 (273.38) 41,051.9440 (>1000.0) 149.6913 (>1000.0) 7;2 24.3401 (0.00) 25 1 186s test_gpr_symbolism_benchmark 43,349.3140 (>1000.0) 45,273.2940 (>1000.0) 44,106.9269 (>1000.0) 441.9295 (851.11) 44,091.9950 (>1000.0) 463.2460 (>1000.0) 7;1 22.6722 (0.00) 22 1 186s test_double_reaction_deletion_benchmark 48,119.4600 (>1000.0) 48,690.1970 (>1000.0) 48,409.1061 (>1000.0) 230.2280 (443.40) 48,450.5670 (>1000.0) 396.2223 (>1000.0) 2;0 20.6573 (0.00) 7 1 186s test_achr_init_benchmark 67,734.9230 (>1000.0) 69,175.0570 (>1000.0) 68,204.0586 (>1000.0) 351.1548 (676.29) 68,184.3890 (>1000.0) 398.4307 (>1000.0) 3;1 14.6619 (0.00) 15 1 186s test_optgp_init_benchmark 68,008.7440 (>1000.0) 69,083.8800 (>1000.0) 68,446.2153 (>1000.0) 302.4697 (582.53) 68,360.3630 (>1000.0) 496.0728 (>1000.0) 5;0 14.6100 (0.00) 15 1 186s test_single_gene_deletion_linear_moma_benchmark[glpk] 91,902.2350 (>1000.0) 93,675.6290 (>1000.0) 92,855.1724 (>1000.0) 530.6316 (>1000.0) 92,879.8840 (>1000.0) 765.7625 (>1000.0) 4;0 10.7695 (0.00) 11 1 186s test_single_gene_deletion_linear_room_benchmark[glpk] 128,366.2570 (>1000.0) 130,423.1560 (>1000.0) 129,217.7996 (>1000.0) 746.5133 (>1000.0) 129,190.0690 (>1000.0) 1,197.2440 (>1000.0) 4;0 7.7389 (0.00) 8 1 186s test_double_gene_deletion_benchmark 131,552.7730 (>1000.0) 143,306.4790 (>1000.0) 134,619.2334 (>1000.0) 4,895.2867 (>1000.0) 132,490.0710 (>1000.0) 3,570.2685 (>1000.0) 1;1 7.4284 (0.00) 5 1 186s test_pfba_benchmark[glpk] 150,710.3300 (>1000.0) 172,853.9510 (>1000.0) 160,598.3882 (>1000.0) 8,391.5452 (>1000.0) 159,306.2310 (>1000.0) 11,484.2850 (>1000.0) 2;0 6.2267 (0.00) 5 1 186s test_copy_benchmark_large_model[optlang-glpk] 160,828.4580 (>1000.0) 220,762.1130 (>1000.0) 183,057.9210 (>1000.0) 26,701.9875 (>1000.0) 173,215.0740 (>1000.0) 48,948.0915 (>1000.0) 2;0 5.4628 (0.00) 7 1 186s test_geometric_fba_benchmark[glpk] 214,739.6770 (>1000.0) 216,511.4080 (>1000.0) 215,733.1952 (>1000.0) 672.1358 (>1000.0) 215,945.2780 (>1000.0) 879.4665 (>1000.0) 2;0 4.6354 (0.00) 5 1 186s test_flux_variability_benchmark[glpk] 241,423.8580 (>1000.0) 242,038.1520 (>1000.0) 241,655.8450 (>1000.0) 304.9744 (587.35) 241,442.1460 (>1000.0) 527.6502 (>1000.0) 1;0 4.1381 (0.00) 5 1 186s ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 186s 186s Legend: 186s Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. 186s OPS: Operations Per Second, computed as 1 / Mean 186s =========================== short test summary info ============================ 186s FAILED tests/test_core/test_core_reaction.py::test_copy - RecursionError: max... 186s FAILED tests/test_core/test_core_reaction.py::test_add - RecursionError: maxi... 186s FAILED tests/test_core/test_core_reaction.py::test_radd - RecursionError: max... 186s FAILED tests/test_core/test_core_reaction.py::test_mul - RecursionError: maxi... 186s FAILED tests/test_core/test_core_reaction.py::test_sub - RecursionError: maxi... 186s FAILED tests/test_core/test_model.py::test_deepcopy_benchmark - RecursionErro... 186s FAILED tests/test_core/test_model.py::test_deepcopy - RecursionError: maximum... 186s FAILED tests/test_core/test_model.py::test_merge_models - RecursionError: max... 186s FAILED tests/test_flux_analysis/test_gapfilling.py::test_gapfilling - Recursi... 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_interface[optlang-glpk] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_frame[optlang-glpk] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs0] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs1] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs2] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs3] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_string[optlang-glpk-kwargs4] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs0] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs1] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs2] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_to_html[optlang-glpk-kwargs3] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_q8_producing_summary[optlang-glpk] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_q8_consuming_summary[optlang-glpk] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_fdp_production_with_fva[optlang-glpk] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-q8_c] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-fdp_c] 186s FAILED tests/test_summary/test_metabolite_summary.py::test_metabolite_summary_flux_in_context[optlang-glpk-atp_c] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_interface[optlang-glpk] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_frame[optlang-glpk] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs0] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs1] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs2] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs3] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_string[optlang-glpk-kwargs4] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs0] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs1] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs2] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_html[optlang-glpk-kwargs3] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_to_frame_previous_solution[optlang-glpk] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_flux[optlang-glpk] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_fva[optlang-glpk] 186s FAILED tests/test_summary/test_model_summary.py::test_model_summary_flux_in_context[optlang-glpk] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_interface[optlang-glpk] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_frame[optlang-glpk] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs0] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs1] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs2] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs3] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_string[optlang-glpk-kwargs4] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs0] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs1] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs2] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_to_html[optlang-glpk-kwargs3] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[ACALD-0.0] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[FUM-5.06] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux[PFK-7.48] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[ACALD--1.27-0.0] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[FUM-0.79-7.38] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_fva[PFK-2.58-16.38] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[ACALD] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[FUM] 186s FAILED tests/test_summary/test_reaction_summary.py::test_reaction_summary_flux_in_context[PFK] 186s = 61 failed, 455 passed, 27 skipped, 10 xfailed, 1 xpassed, 5490 warnings in 74.62s (0:01:14) = 187s autopkgtest [09:18:21]: test run-unit-test: -----------------------] 188s run-unit-test FAIL non-zero exit status 1 188s autopkgtest [09:18:22]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 188s autopkgtest [09:18:22]: @@@@@@@@@@@@@@@@@@@@ summary 188s run-unit-test FAIL non-zero exit status 1