0s autopkgtest [12:16:01]: starting date and time: 2026-02-03 12:16:01+0000 0s autopkgtest [12:16:01]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [12:16:01]: host juju-7f2275-prod-proposed-migration-environment-15; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.zfty3un4/out --timeout-copy=6000 --needs-internet=try --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:netbase --apt-upgrade python-eventlet --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=netbase/6.5build1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-cpu2-ram4-disk20-s390x --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-15@sto01-s390x-9.secgroup --name adt-resolute-s390x-python-eventlet-20260203-121601-juju-7f2275-prod-proposed-migration-environment-15-5eb23176-5a38-401c-990f-57991bed78ab --image adt/ubuntu-resolute-s390x-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-15 --net-id=net_prod-autopkgtest-workers-s390x -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 3s Creating nova instance adt-resolute-s390x-python-eventlet-20260203-121601-juju-7f2275-prod-proposed-migration-environment-15-5eb23176-5a38-401c-990f-57991bed78ab from image adt/ubuntu-resolute-s390x-server-20260203.img (UUID 733879ca-10c9-4d0b-9d4a-492c78d47079)... 123s autopkgtest [12:18:04]: testbed dpkg architecture: s390x 123s autopkgtest [12:18:04]: testbed apt version: 3.1.14 124s autopkgtest [12:18:05]: @@@@@@@@@@@@@@@@@@@@ test bed setup 124s autopkgtest [12:18:05]: testbed release detected to be: None 127s autopkgtest [12:18:08]: updating testbed package index (apt update) 127s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 127s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 127s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 128s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 128s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [5260 B] 128s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [243 kB] 128s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [27.9 kB] 128s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1317 kB] 128s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x Packages [278 kB] 128s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/universe s390x Packages [1063 kB] 128s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse s390x Packages [7048 B] 130s Fetched 3066 kB in 3s (1132 kB/s) 136s Reading package lists... 140s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 140s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 140s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 140s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 146s Reading package lists... 146s Reading package lists... 147s Building dependency tree... 148s Reading state information... 149s Calculating upgrade... 150s The following packages will be upgraded: 150s netbase powermgmt-base systemd-hwe-hwdb 150s 3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 150s Need to get 24.1 kB of archives. 150s After this operation, 1024 B of additional disk space will be used. 150s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed/main s390x netbase all 6.5build1 [13.0 kB] 151s Get:2 http://ftpmaster.internal/ubuntu resolute/main s390x systemd-hwe-hwdb all 259.0.1 [3152 B] 151s Get:3 http://ftpmaster.internal/ubuntu resolute/main s390x powermgmt-base all 1.38ubuntu2 [7878 B] 156s dpkg-preconfigure: unable to re-open stdin: No such file or directory 156s Fetched 24.1 kB in 1s (19.1 kB/s) 161s (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 ... 61953 files and directories currently installed.) 161s Preparing to unpack .../netbase_6.5build1_all.deb ... 162s Unpacking netbase (6.5build1) over (6.5) ... 164s Preparing to unpack .../systemd-hwe-hwdb_259.0.1_all.deb ... 165s Unpacking systemd-hwe-hwdb (259.0.1) over (257.7.1) ... 168s Preparing to unpack .../powermgmt-base_1.38ubuntu2_all.deb ... 168s Unpacking powermgmt-base (1.38ubuntu2) over (1.38ubuntu1) ... 169s Setting up powermgmt-base (1.38ubuntu2) ... 169s Setting up systemd-hwe-hwdb (259.0.1) ... 176s Setting up netbase (6.5build1) ... 177s Processing triggers for udev (259-1ubuntu3) ... 181s Processing triggers for man-db (2.13.1-1) ... 202s autopkgtest [12:19:23]: upgrading testbed (apt dist-upgrade and autopurge) 203s Reading package lists... 204s Building dependency tree... 204s Reading state information... 206s Calculating upgrade... 207s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 208s Reading package lists... 209s Building dependency tree... 209s Reading state information... 209s Solving dependencies... 210s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 217s autopkgtest [12:19:38]: testbed running kernel: Linux 6.18.0-9-generic #9-Ubuntu SMP Mon Jan 12 15:39:23 UTC 2026 217s autopkgtest [12:19:38]: @@@@@@@@@@@@@@@@@@@@ apt-source python-eventlet 226s Get:1 http://ftpmaster.internal/ubuntu resolute/main python-eventlet 0.39.0-0ubuntu2 (dsc) [2605 B] 226s Get:2 http://ftpmaster.internal/ubuntu resolute/main python-eventlet 0.39.0-0ubuntu2 (tar) [562 kB] 226s Get:3 http://ftpmaster.internal/ubuntu resolute/main python-eventlet 0.39.0-0ubuntu2 (diff) [24.3 kB] 228s gpgv: Signature made Mon Sep 15 17:48:29 2025 UTC 228s gpgv: using RSA key 50C4A0DDCF31E452CEB19B516569D855A744BE93 228s gpgv: Can't check signature: No public key 228s dpkg-source: warning: cannot verify inline signature for ./python-eventlet_0.39.0-0ubuntu2.dsc: no acceptable signature found 230s autopkgtest [12:19:51]: testing package python-eventlet version 0.39.0-0ubuntu2 230s autopkgtest [12:19:51]: build not needed 232s autopkgtest [12:19:53]: test listen3: preparing testbed 233s Reading package lists... 235s Building dependency tree... 235s Reading state information... 235s Solving dependencies... 236s The following NEW packages will be installed: 236s python3-dnspython python3-eventlet python3-greenlet 236s 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. 236s Need to get 627 kB of archives. 236s After this operation, 3042 kB of additional disk space will be used. 236s Get:1 http://ftpmaster.internal/ubuntu resolute/main s390x python3-dnspython all 2.7.0-1ubuntu2 [167 kB] 236s Get:2 http://ftpmaster.internal/ubuntu resolute/main s390x python3-greenlet s390x 3.2.4-3 [183 kB] 236s Get:3 http://ftpmaster.internal/ubuntu resolute/main s390x python3-eventlet all 0.39.0-0ubuntu2 [277 kB] 238s Fetched 627 kB in 0s (1904 kB/s) 238s Selecting previously unselected package python3-dnspython. 238s (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 ... 61954 files and directories currently installed.) 238s Preparing to unpack .../python3-dnspython_2.7.0-1ubuntu2_all.deb ... 238s Unpacking python3-dnspython (2.7.0-1ubuntu2) ... 238s Selecting previously unselected package python3-greenlet. 238s Preparing to unpack .../python3-greenlet_3.2.4-3_s390x.deb ... 238s Unpacking python3-greenlet (3.2.4-3) ... 239s Selecting previously unselected package python3-eventlet. 239s Preparing to unpack .../python3-eventlet_0.39.0-0ubuntu2_all.deb ... 239s Unpacking python3-eventlet (0.39.0-0ubuntu2) ... 239s Setting up python3-greenlet (3.2.4-3) ... 240s Setting up python3-dnspython (2.7.0-1ubuntu2) ... 242s Setting up python3-eventlet (0.39.0-0ubuntu2) ... 247s autopkgtest [12:20:08]: test listen3: [----------------------- 250s autopkgtest [12:20:11]: test listen3: -----------------------] 252s autopkgtest [12:20:13]: test listen3: - - - - - - - - - - results - - - - - - - - - - 252s listen3 PASS 252s autopkgtest [12:20:13]: test unittests: preparing testbed 254s Reading package lists... 255s Building dependency tree... 255s Reading state information... 255s Solving dependencies... 256s The following NEW packages will be installed: 256s autoconf automake autopoint autotools-dev build-essential cpp cpp-15 256s cpp-15-s390x-linux-gnu cpp-s390x-linux-gnu debhelper debugedit dh-autoreconf 256s dh-python dh-strip-nondeterminism docutils-common dwz g++ g++-15 256s g++-15-s390x-linux-gnu g++-s390x-linux-gnu gcc gcc-15 gcc-15-s390x-linux-gnu 256s gcc-s390x-linux-gnu gettext intltool-debian libarchive-zip-perl libasan8 256s libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libdebhelper-perl 256s libfile-stripnondeterminism-perl libgcc-15-dev libgomp1 libisl23 libitm1 256s libjson-perl liblsan0 libmpc3 libnorm1t64 libpgm-5.3-0t64 256s libpython3.14-minimal libpython3.14-stdlib libsodium23 libstdc++-15-dev 256s libtool libtsan2 libubsan1 libzmq5 linux-libc-dev m4 openstack-pkg-tools 256s po-debconf pybuild-plugin-pyproject python-eventlet-doc python3-alabaster 256s python3-all python3-build python3-defusedxml python3-docutils 256s python3-execnet python3-hatchling python3-imagesize python3-iniconfig 256s python3-installer python3-monotonic python3-pathspec python3-pbr python3-pip 256s python3-pluggy python3-pyproject-hooks python3-pytest python3-pytest-xdist 256s python3-roman-numerals python3-setuptools-scm python3-snowballstemmer 256s python3-sphinx python3-sphinxcontrib.apidoc python3-trove-classifiers 256s python3-wheel python3-zmq python3.14 python3.14-minimal rpcsvc-proto 256s sgml-base sphinx-common xml-core 256s 0 upgraded, 89 newly installed, 0 to remove and 0 not upgraded. 256s Need to get 76.1 MB of archives. 256s After this operation, 269 MB of additional disk space will be used. 256s Get:1 http://ftpmaster.internal/ubuntu resolute/main s390x libpython3.14-minimal s390x 3.14.2-1 [917 kB] 257s Get:2 http://ftpmaster.internal/ubuntu resolute/main s390x python3.14-minimal s390x 3.14.2-1 [2510 kB] 257s Get:3 http://ftpmaster.internal/ubuntu resolute/main s390x m4 s390x 1.4.20-2 [223 kB] 257s Get:4 http://ftpmaster.internal/ubuntu resolute/main s390x autoconf all 2.72-3.1ubuntu1 [384 kB] 257s Get:5 http://ftpmaster.internal/ubuntu resolute/main s390x autotools-dev all 20240727.1 [43.4 kB] 257s Get:6 http://ftpmaster.internal/ubuntu resolute/main s390x automake all 1:1.18.1-3build1 [582 kB] 257s Get:7 http://ftpmaster.internal/ubuntu resolute/main s390x autopoint all 0.23.2-1 [620 kB] 257s Get:8 http://ftpmaster.internal/ubuntu resolute/main s390x libc-dev-bin s390x 2.42-2ubuntu4 [22.9 kB] 257s Get:9 http://ftpmaster.internal/ubuntu resolute/main s390x linux-libc-dev s390x 6.18.0-9.9 [1854 kB] 257s Get:10 http://ftpmaster.internal/ubuntu resolute/main s390x libcrypt-dev s390x 1:4.5.1-1 [127 kB] 257s Get:11 http://ftpmaster.internal/ubuntu resolute/main s390x rpcsvc-proto s390x 1.4.3-1build1 [67.1 kB] 257s Get:12 http://ftpmaster.internal/ubuntu resolute/main s390x libc6-dev s390x 2.42-2ubuntu4 [1696 kB] 257s Get:13 http://ftpmaster.internal/ubuntu resolute/main s390x libisl23 s390x 0.27-1build1 [702 kB] 257s Get:14 http://ftpmaster.internal/ubuntu resolute/main s390x libmpc3 s390x 1.3.1-2 [57.4 kB] 258s Get:15 http://ftpmaster.internal/ubuntu resolute/main s390x cpp-15-s390x-linux-gnu s390x 15.2.0-12ubuntu1 [10.2 MB] 258s Get:16 http://ftpmaster.internal/ubuntu resolute/main s390x cpp-15 s390x 15.2.0-12ubuntu1 [1028 B] 258s Get:17 http://ftpmaster.internal/ubuntu resolute/main s390x cpp-s390x-linux-gnu s390x 4:15.2.0-4ubuntu1 [5746 B] 258s Get:18 http://ftpmaster.internal/ubuntu resolute/main s390x cpp s390x 4:15.2.0-4ubuntu1 [22.4 kB] 258s Get:19 http://ftpmaster.internal/ubuntu resolute/main s390x libcc1-0 s390x 15.2.0-12ubuntu1 [50.0 kB] 258s Get:20 http://ftpmaster.internal/ubuntu resolute/main s390x libgomp1 s390x 15.2.0-12ubuntu1 [154 kB] 258s Get:21 http://ftpmaster.internal/ubuntu resolute/main s390x libitm1 s390x 15.2.0-12ubuntu1 [30.9 kB] 258s Get:22 http://ftpmaster.internal/ubuntu resolute/main s390x libasan8 s390x 15.2.0-12ubuntu1 [2968 kB] 258s Get:23 http://ftpmaster.internal/ubuntu resolute/main s390x liblsan0 s390x 15.2.0-12ubuntu1 [1354 kB] 258s Get:24 http://ftpmaster.internal/ubuntu resolute/main s390x libtsan2 s390x 15.2.0-12ubuntu1 [2685 kB] 258s Get:25 http://ftpmaster.internal/ubuntu resolute/main s390x libubsan1 s390x 15.2.0-12ubuntu1 [1211 kB] 259s Get:26 http://ftpmaster.internal/ubuntu resolute/main s390x libgcc-15-dev s390x 15.2.0-12ubuntu1 [1294 kB] 259s Get:27 http://ftpmaster.internal/ubuntu resolute/main s390x gcc-15-s390x-linux-gnu s390x 15.2.0-12ubuntu1 [19.9 MB] 259s Get:28 http://ftpmaster.internal/ubuntu resolute/main s390x gcc-15 s390x 15.2.0-12ubuntu1 [519 kB] 259s Get:29 http://ftpmaster.internal/ubuntu resolute/main s390x gcc-s390x-linux-gnu s390x 4:15.2.0-4ubuntu1 [1208 B] 259s Get:30 http://ftpmaster.internal/ubuntu resolute/main s390x gcc s390x 4:15.2.0-4ubuntu1 [5018 B] 259s Get:31 http://ftpmaster.internal/ubuntu resolute/main s390x libstdc++-15-dev s390x 15.2.0-12ubuntu1 [2660 kB] 259s Get:32 http://ftpmaster.internal/ubuntu resolute/main s390x g++-15-s390x-linux-gnu s390x 15.2.0-12ubuntu1 [11.7 MB] 260s Get:33 http://ftpmaster.internal/ubuntu resolute/main s390x g++-15 s390x 15.2.0-12ubuntu1 [25.3 kB] 260s Get:34 http://ftpmaster.internal/ubuntu resolute/main s390x g++-s390x-linux-gnu s390x 4:15.2.0-4ubuntu1 [956 B] 260s Get:35 http://ftpmaster.internal/ubuntu resolute/main s390x g++ s390x 4:15.2.0-4ubuntu1 [1078 B] 260s Get:36 http://ftpmaster.internal/ubuntu resolute/main s390x build-essential s390x 12.12ubuntu2 [5258 B] 260s Get:37 http://ftpmaster.internal/ubuntu resolute/main s390x libdebhelper-perl all 13.28ubuntu1 [97.4 kB] 260s Get:38 http://ftpmaster.internal/ubuntu resolute/main s390x libtool all 2.5.4-9 [169 kB] 260s Get:39 http://ftpmaster.internal/ubuntu resolute/main s390x dh-autoreconf all 21 [12.5 kB] 260s Get:40 http://ftpmaster.internal/ubuntu resolute/main s390x libarchive-zip-perl all 1.68-1 [90.2 kB] 261s Get:41 http://ftpmaster.internal/ubuntu resolute/main s390x libfile-stripnondeterminism-perl all 1.15.0-1build1 [20.6 kB] 261s Get:42 http://ftpmaster.internal/ubuntu resolute/main s390x dh-strip-nondeterminism all 1.15.0-1build1 [5110 B] 261s Get:43 http://ftpmaster.internal/ubuntu resolute/main s390x debugedit s390x 1:5.2-3 [52.8 kB] 261s Get:44 http://ftpmaster.internal/ubuntu resolute/main s390x dwz s390x 0.16-2 [121 kB] 261s Get:45 http://ftpmaster.internal/ubuntu resolute/main s390x gettext s390x 0.23.2-1 [1062 kB] 261s Get:46 http://ftpmaster.internal/ubuntu resolute/main s390x intltool-debian all 0.35.0+20060710.6build1 [24.1 kB] 261s Get:47 http://ftpmaster.internal/ubuntu resolute/main s390x po-debconf all 1.0.22 [215 kB] 261s Get:48 http://ftpmaster.internal/ubuntu resolute/main s390x debhelper all 13.28ubuntu1 [916 kB] 261s Get:49 http://ftpmaster.internal/ubuntu resolute/universe s390x dh-python all 7.20260125 [122 kB] 261s Get:50 http://ftpmaster.internal/ubuntu resolute/main s390x sgml-base all 1.31+nmu1 [11.0 kB] 261s Get:51 http://ftpmaster.internal/ubuntu resolute/main s390x xml-core all 0.19build1 [20.3 kB] 261s Get:52 http://ftpmaster.internal/ubuntu resolute/main s390x docutils-common all 0.22.4+dfsg-1 [130 kB] 261s Get:53 http://ftpmaster.internal/ubuntu resolute/main s390x libjson-perl all 4.10000-1 [81.9 kB] 261s Get:54 http://ftpmaster.internal/ubuntu resolute/universe s390x libnorm1t64 s390x 1.5.9+dfsg-4 [156 kB] 261s Get:55 http://ftpmaster.internal/ubuntu resolute/universe s390x libpgm-5.3-0t64 s390x 5.3.128~dfsg-2.1build2 [169 kB] 261s Get:56 http://ftpmaster.internal/ubuntu resolute/main s390x libpython3.14-stdlib s390x 3.14.2-1 [2373 kB] 261s Get:57 http://ftpmaster.internal/ubuntu resolute/main s390x libsodium23 s390x 1.0.18-2 [138 kB] 261s Get:58 http://ftpmaster.internal/ubuntu resolute/universe s390x libzmq5 s390x 4.3.5-1build3 [252 kB] 261s Get:59 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 261s Get:60 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-wheel all 0.46.1-2 [22.1 kB] 261s Get:61 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-build all 1.2.2-5 [30.9 kB] 261s Get:62 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 261s Get:63 http://ftpmaster.internal/ubuntu resolute/universe s390x pybuild-plugin-pyproject all 7.20260125 [1712 B] 261s Get:64 http://ftpmaster.internal/ubuntu resolute/main s390x python-eventlet-doc all 0.39.0-0ubuntu2 [353 kB] 261s Get:65 http://ftpmaster.internal/ubuntu resolute/main s390x python3.14 s390x 3.14.2-1 [816 kB] 261s Get:66 http://ftpmaster.internal/ubuntu resolute/main s390x python3-all s390x 3.13.9-3 [890 B] 261s Get:67 http://ftpmaster.internal/ubuntu resolute/main s390x python3-defusedxml all 0.7.1-3build1 [42.4 kB] 261s Get:68 http://ftpmaster.internal/ubuntu resolute/main s390x python3-roman-numerals all 4.1.0-1 [8660 B] 261s Get:69 http://ftpmaster.internal/ubuntu resolute/main s390x python3-docutils all 0.22.4+dfsg-1 [439 kB] 261s Get:70 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-execnet all 2.1.1-1build1 [33.5 kB] 261s Get:71 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pathspec all 0.12.1-1build1 [24.6 kB] 262s Get:72 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pluggy all 1.6.0-2 [21.1 kB] 262s Get:73 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-trove-classifiers all 2025.11.14.15-1 [11.1 kB] 262s Get:74 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-hatchling all 1.28.0-1 [47.3 kB] 262s Get:75 http://ftpmaster.internal/ubuntu resolute/main s390x python3-imagesize all 1.4.1-1build1 [6900 B] 262s Get:76 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-iniconfig all 2.1.0-2 [6962 B] 262s Get:77 http://ftpmaster.internal/ubuntu resolute/main s390x python3-monotonic all 1.6-3build1 [5518 B] 262s Get:78 http://ftpmaster.internal/ubuntu resolute/main s390x python3-pbr all 6.1.1-0ubuntu2 [58.3 kB] 262s Get:79 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pip all 25.1.1+dfsg-1ubuntu2 [1416 kB] 262s Get:80 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pytest all 9.0.2-2 [277 kB] 262s Get:81 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-pytest-xdist all 3.8.0-4 [34.7 kB] 262s Get:82 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-setuptools-scm all 8.2.1-4 [32.8 kB] 262s Get:83 http://ftpmaster.internal/ubuntu resolute/main s390x python3-snowballstemmer all 3.0.1-1 [65.9 kB] 262s Get:84 http://ftpmaster.internal/ubuntu resolute/main s390x sphinx-common all 8.2.3-12 [657 kB] 262s Get:85 http://ftpmaster.internal/ubuntu resolute/main s390x python3-alabaster all 0.7.16-0.1build1 [18.6 kB] 262s Get:86 http://ftpmaster.internal/ubuntu resolute/main s390x python3-sphinx all 8.2.3-12 [483 kB] 262s Get:87 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-sphinxcontrib.apidoc all 0.3.0-2ubuntu1 [8032 B] 262s Get:88 http://ftpmaster.internal/ubuntu resolute/universe s390x python3-zmq s390x 27.1.0-1 [248 kB] 262s Get:89 http://ftpmaster.internal/ubuntu resolute/universe s390x openstack-pkg-tools all 140 [103 kB] 265s Fetched 76.1 MB in 5s (14.0 MB/s) 265s Selecting previously unselected package libpython3.14-minimal:s390x. 265s (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 ... 62358 files and directories currently installed.) 265s Preparing to unpack .../00-libpython3.14-minimal_3.14.2-1_s390x.deb ... 265s Unpacking libpython3.14-minimal:s390x (3.14.2-1) ... 265s Selecting previously unselected package python3.14-minimal. 265s Preparing to unpack .../01-python3.14-minimal_3.14.2-1_s390x.deb ... 265s Unpacking python3.14-minimal (3.14.2-1) ... 267s Selecting previously unselected package m4. 267s Preparing to unpack .../02-m4_1.4.20-2_s390x.deb ... 267s Unpacking m4 (1.4.20-2) ... 267s Selecting previously unselected package autoconf. 267s Preparing to unpack .../03-autoconf_2.72-3.1ubuntu1_all.deb ... 267s Unpacking autoconf (2.72-3.1ubuntu1) ... 267s Selecting previously unselected package autotools-dev. 267s Preparing to unpack .../04-autotools-dev_20240727.1_all.deb ... 267s Unpacking autotools-dev (20240727.1) ... 267s Selecting previously unselected package automake. 268s Preparing to unpack .../05-automake_1%3a1.18.1-3build1_all.deb ... 268s Unpacking automake (1:1.18.1-3build1) ... 268s Selecting previously unselected package autopoint. 268s Preparing to unpack .../06-autopoint_0.23.2-1_all.deb ... 268s Unpacking autopoint (0.23.2-1) ... 268s Selecting previously unselected package libc-dev-bin. 268s Preparing to unpack .../07-libc-dev-bin_2.42-2ubuntu4_s390x.deb ... 268s Unpacking libc-dev-bin (2.42-2ubuntu4) ... 269s Selecting previously unselected package linux-libc-dev:s390x. 269s Preparing to unpack .../08-linux-libc-dev_6.18.0-9.9_s390x.deb ... 269s Unpacking linux-libc-dev:s390x (6.18.0-9.9) ... 270s Selecting previously unselected package libcrypt-dev:s390x. 270s Preparing to unpack .../09-libcrypt-dev_1%3a4.5.1-1_s390x.deb ... 270s Unpacking libcrypt-dev:s390x (1:4.5.1-1) ... 270s Selecting previously unselected package rpcsvc-proto. 270s Preparing to unpack .../10-rpcsvc-proto_1.4.3-1build1_s390x.deb ... 270s Unpacking rpcsvc-proto (1.4.3-1build1) ... 270s Selecting previously unselected package libc6-dev:s390x. 270s Preparing to unpack .../11-libc6-dev_2.42-2ubuntu4_s390x.deb ... 270s Unpacking libc6-dev:s390x (2.42-2ubuntu4) ... 271s Selecting previously unselected package libisl23:s390x. 271s Preparing to unpack .../12-libisl23_0.27-1build1_s390x.deb ... 271s Unpacking libisl23:s390x (0.27-1build1) ... 273s Selecting previously unselected package libmpc3:s390x. 273s Preparing to unpack .../13-libmpc3_1.3.1-2_s390x.deb ... 273s Unpacking libmpc3:s390x (1.3.1-2) ... 273s Selecting previously unselected package cpp-15-s390x-linux-gnu. 273s Preparing to unpack .../14-cpp-15-s390x-linux-gnu_15.2.0-12ubuntu1_s390x.deb ... 273s Unpacking cpp-15-s390x-linux-gnu (15.2.0-12ubuntu1) ... 274s Selecting previously unselected package cpp-15. 274s Preparing to unpack .../15-cpp-15_15.2.0-12ubuntu1_s390x.deb ... 274s Unpacking cpp-15 (15.2.0-12ubuntu1) ... 274s Selecting previously unselected package cpp-s390x-linux-gnu. 274s Preparing to unpack .../16-cpp-s390x-linux-gnu_4%3a15.2.0-4ubuntu1_s390x.deb ... 274s Unpacking cpp-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 274s Selecting previously unselected package cpp. 274s Preparing to unpack .../17-cpp_4%3a15.2.0-4ubuntu1_s390x.deb ... 274s Unpacking cpp (4:15.2.0-4ubuntu1) ... 275s Selecting previously unselected package libcc1-0:s390x. 275s Preparing to unpack .../18-libcc1-0_15.2.0-12ubuntu1_s390x.deb ... 275s Unpacking libcc1-0:s390x (15.2.0-12ubuntu1) ... 275s Selecting previously unselected package libgomp1:s390x. 275s Preparing to unpack .../19-libgomp1_15.2.0-12ubuntu1_s390x.deb ... 275s Unpacking libgomp1:s390x (15.2.0-12ubuntu1) ... 275s Selecting previously unselected package libitm1:s390x. 275s Preparing to unpack .../20-libitm1_15.2.0-12ubuntu1_s390x.deb ... 275s Unpacking libitm1:s390x (15.2.0-12ubuntu1) ... 275s Selecting previously unselected package libasan8:s390x. 275s Preparing to unpack .../21-libasan8_15.2.0-12ubuntu1_s390x.deb ... 275s Unpacking libasan8:s390x (15.2.0-12ubuntu1) ... 275s Selecting previously unselected package liblsan0:s390x. 276s Preparing to unpack .../22-liblsan0_15.2.0-12ubuntu1_s390x.deb ... 276s Unpacking liblsan0:s390x (15.2.0-12ubuntu1) ... 276s Selecting previously unselected package libtsan2:s390x. 276s Preparing to unpack .../23-libtsan2_15.2.0-12ubuntu1_s390x.deb ... 276s Unpacking libtsan2:s390x (15.2.0-12ubuntu1) ... 277s Selecting previously unselected package libubsan1:s390x. 277s Preparing to unpack .../24-libubsan1_15.2.0-12ubuntu1_s390x.deb ... 277s Unpacking libubsan1:s390x (15.2.0-12ubuntu1) ... 277s Selecting previously unselected package libgcc-15-dev:s390x. 277s Preparing to unpack .../25-libgcc-15-dev_15.2.0-12ubuntu1_s390x.deb ... 277s Unpacking libgcc-15-dev:s390x (15.2.0-12ubuntu1) ... 278s Selecting previously unselected package gcc-15-s390x-linux-gnu. 278s Preparing to unpack .../26-gcc-15-s390x-linux-gnu_15.2.0-12ubuntu1_s390x.deb ... 278s Unpacking gcc-15-s390x-linux-gnu (15.2.0-12ubuntu1) ... 282s Selecting previously unselected package gcc-15. 282s Preparing to unpack .../27-gcc-15_15.2.0-12ubuntu1_s390x.deb ... 282s Unpacking gcc-15 (15.2.0-12ubuntu1) ... 283s Selecting previously unselected package gcc-s390x-linux-gnu. 283s Preparing to unpack .../28-gcc-s390x-linux-gnu_4%3a15.2.0-4ubuntu1_s390x.deb ... 283s Unpacking gcc-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 283s Selecting previously unselected package gcc. 283s Preparing to unpack .../29-gcc_4%3a15.2.0-4ubuntu1_s390x.deb ... 283s Unpacking gcc (4:15.2.0-4ubuntu1) ... 283s Selecting previously unselected package libstdc++-15-dev:s390x. 283s Preparing to unpack .../30-libstdc++-15-dev_15.2.0-12ubuntu1_s390x.deb ... 283s Unpacking libstdc++-15-dev:s390x (15.2.0-12ubuntu1) ... 284s Selecting previously unselected package g++-15-s390x-linux-gnu. 284s Preparing to unpack .../31-g++-15-s390x-linux-gnu_15.2.0-12ubuntu1_s390x.deb ... 284s Unpacking g++-15-s390x-linux-gnu (15.2.0-12ubuntu1) ... 287s Selecting previously unselected package g++-15. 287s Preparing to unpack .../32-g++-15_15.2.0-12ubuntu1_s390x.deb ... 287s Unpacking g++-15 (15.2.0-12ubuntu1) ... 287s Selecting previously unselected package g++-s390x-linux-gnu. 287s Preparing to unpack .../33-g++-s390x-linux-gnu_4%3a15.2.0-4ubuntu1_s390x.deb ... 287s Unpacking g++-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 287s Selecting previously unselected package g++. 287s Preparing to unpack .../34-g++_4%3a15.2.0-4ubuntu1_s390x.deb ... 288s Unpacking g++ (4:15.2.0-4ubuntu1) ... 288s Selecting previously unselected package build-essential. 288s Preparing to unpack .../35-build-essential_12.12ubuntu2_s390x.deb ... 288s Unpacking build-essential (12.12ubuntu2) ... 288s Selecting previously unselected package libdebhelper-perl. 288s Preparing to unpack .../36-libdebhelper-perl_13.28ubuntu1_all.deb ... 288s Unpacking libdebhelper-perl (13.28ubuntu1) ... 288s Selecting previously unselected package libtool. 288s Preparing to unpack .../37-libtool_2.5.4-9_all.deb ... 288s Unpacking libtool (2.5.4-9) ... 288s Selecting previously unselected package dh-autoreconf. 288s Preparing to unpack .../38-dh-autoreconf_21_all.deb ... 288s Unpacking dh-autoreconf (21) ... 288s Selecting previously unselected package libarchive-zip-perl. 288s Preparing to unpack .../39-libarchive-zip-perl_1.68-1_all.deb ... 288s Unpacking libarchive-zip-perl (1.68-1) ... 289s Selecting previously unselected package libfile-stripnondeterminism-perl. 289s Preparing to unpack .../40-libfile-stripnondeterminism-perl_1.15.0-1build1_all.deb ... 289s Unpacking libfile-stripnondeterminism-perl (1.15.0-1build1) ... 289s Selecting previously unselected package dh-strip-nondeterminism. 289s Preparing to unpack .../41-dh-strip-nondeterminism_1.15.0-1build1_all.deb ... 289s Unpacking dh-strip-nondeterminism (1.15.0-1build1) ... 289s Selecting previously unselected package debugedit. 289s Preparing to unpack .../42-debugedit_1%3a5.2-3_s390x.deb ... 289s Unpacking debugedit (1:5.2-3) ... 289s Selecting previously unselected package dwz. 289s Preparing to unpack .../43-dwz_0.16-2_s390x.deb ... 289s Unpacking dwz (0.16-2) ... 290s Selecting previously unselected package gettext. 290s Preparing to unpack .../44-gettext_0.23.2-1_s390x.deb ... 290s Unpacking gettext (0.23.2-1) ... 290s Selecting previously unselected package intltool-debian. 290s Preparing to unpack .../45-intltool-debian_0.35.0+20060710.6build1_all.deb ... 290s Unpacking intltool-debian (0.35.0+20060710.6build1) ... 291s Selecting previously unselected package po-debconf. 291s Preparing to unpack .../46-po-debconf_1.0.22_all.deb ... 291s Unpacking po-debconf (1.0.22) ... 291s Selecting previously unselected package debhelper. 291s Preparing to unpack .../47-debhelper_13.28ubuntu1_all.deb ... 291s Unpacking debhelper (13.28ubuntu1) ... 292s Selecting previously unselected package dh-python. 292s Preparing to unpack .../48-dh-python_7.20260125_all.deb ... 292s Unpacking dh-python (7.20260125) ... 292s Selecting previously unselected package sgml-base. 292s Preparing to unpack .../49-sgml-base_1.31+nmu1_all.deb ... 292s Unpacking sgml-base (1.31+nmu1) ... 292s Selecting previously unselected package xml-core. 292s Preparing to unpack .../50-xml-core_0.19build1_all.deb ... 292s Unpacking xml-core (0.19build1) ... 292s Selecting previously unselected package docutils-common. 292s Preparing to unpack .../51-docutils-common_0.22.4+dfsg-1_all.deb ... 292s Unpacking docutils-common (0.22.4+dfsg-1) ... 292s Selecting previously unselected package libjson-perl. 292s Preparing to unpack .../52-libjson-perl_4.10000-1_all.deb ... 292s Unpacking libjson-perl (4.10000-1) ... 294s Selecting previously unselected package libnorm1t64:s390x. 294s Preparing to unpack .../53-libnorm1t64_1.5.9+dfsg-4_s390x.deb ... 294s Unpacking libnorm1t64:s390x (1.5.9+dfsg-4) ... 294s Selecting previously unselected package libpgm-5.3-0t64:s390x. 294s Preparing to unpack .../54-libpgm-5.3-0t64_5.3.128~dfsg-2.1build2_s390x.deb ... 294s Unpacking libpgm-5.3-0t64:s390x (5.3.128~dfsg-2.1build2) ... 294s Selecting previously unselected package libpython3.14-stdlib:s390x. 294s Preparing to unpack .../55-libpython3.14-stdlib_3.14.2-1_s390x.deb ... 294s Unpacking libpython3.14-stdlib:s390x (3.14.2-1) ... 295s Selecting previously unselected package libsodium23:s390x. 295s Preparing to unpack .../56-libsodium23_1.0.18-2_s390x.deb ... 295s Unpacking libsodium23:s390x (1.0.18-2) ... 295s Selecting previously unselected package libzmq5:s390x. 295s Preparing to unpack .../57-libzmq5_4.3.5-1build3_s390x.deb ... 295s Unpacking libzmq5:s390x (4.3.5-1build3) ... 295s Selecting previously unselected package python3-pyproject-hooks. 296s Preparing to unpack .../58-python3-pyproject-hooks_1.2.0-1_all.deb ... 296s Unpacking python3-pyproject-hooks (1.2.0-1) ... 296s Selecting previously unselected package python3-wheel. 296s Preparing to unpack .../59-python3-wheel_0.46.1-2_all.deb ... 296s Unpacking python3-wheel (0.46.1-2) ... 296s Selecting previously unselected package python3-build. 296s Preparing to unpack .../60-python3-build_1.2.2-5_all.deb ... 296s Unpacking python3-build (1.2.2-5) ... 296s Selecting previously unselected package python3-installer. 296s Preparing to unpack .../61-python3-installer_0.7.0+dfsg1-3_all.deb ... 296s Unpacking python3-installer (0.7.0+dfsg1-3) ... 296s Selecting previously unselected package pybuild-plugin-pyproject. 296s Preparing to unpack .../62-pybuild-plugin-pyproject_7.20260125_all.deb ... 296s Unpacking pybuild-plugin-pyproject (7.20260125) ... 296s Selecting previously unselected package python-eventlet-doc. 296s Preparing to unpack .../63-python-eventlet-doc_0.39.0-0ubuntu2_all.deb ... 296s Unpacking python-eventlet-doc (0.39.0-0ubuntu2) ... 296s Selecting previously unselected package python3.14. 296s Preparing to unpack .../64-python3.14_3.14.2-1_s390x.deb ... 296s Unpacking python3.14 (3.14.2-1) ... 296s Selecting previously unselected package python3-all. 296s Preparing to unpack .../65-python3-all_3.13.9-3_s390x.deb ... 296s Unpacking python3-all (3.13.9-3) ... 297s Selecting previously unselected package python3-defusedxml. 297s Preparing to unpack .../66-python3-defusedxml_0.7.1-3build1_all.deb ... 297s Unpacking python3-defusedxml (0.7.1-3build1) ... 297s Selecting previously unselected package python3-roman-numerals. 297s Preparing to unpack .../67-python3-roman-numerals_4.1.0-1_all.deb ... 297s Unpacking python3-roman-numerals (4.1.0-1) ... 297s Selecting previously unselected package python3-docutils. 297s Preparing to unpack .../68-python3-docutils_0.22.4+dfsg-1_all.deb ... 297s Unpacking python3-docutils (0.22.4+dfsg-1) ... 297s Selecting previously unselected package python3-execnet. 297s Preparing to unpack .../69-python3-execnet_2.1.1-1build1_all.deb ... 297s Unpacking python3-execnet (2.1.1-1build1) ... 297s Selecting previously unselected package python3-pathspec. 297s Preparing to unpack .../70-python3-pathspec_0.12.1-1build1_all.deb ... 297s Unpacking python3-pathspec (0.12.1-1build1) ... 298s Selecting previously unselected package python3-pluggy. 298s Preparing to unpack .../71-python3-pluggy_1.6.0-2_all.deb ... 298s Unpacking python3-pluggy (1.6.0-2) ... 298s Selecting previously unselected package python3-trove-classifiers. 298s Preparing to unpack .../72-python3-trove-classifiers_2025.11.14.15-1_all.deb ... 298s Unpacking python3-trove-classifiers (2025.11.14.15-1) ... 298s Selecting previously unselected package python3-hatchling. 298s Preparing to unpack .../73-python3-hatchling_1.28.0-1_all.deb ... 298s Unpacking python3-hatchling (1.28.0-1) ... 298s Selecting previously unselected package python3-imagesize. 298s Preparing to unpack .../74-python3-imagesize_1.4.1-1build1_all.deb ... 298s Unpacking python3-imagesize (1.4.1-1build1) ... 298s Selecting previously unselected package python3-iniconfig. 298s Preparing to unpack .../75-python3-iniconfig_2.1.0-2_all.deb ... 298s Unpacking python3-iniconfig (2.1.0-2) ... 298s Selecting previously unselected package python3-monotonic. 298s Preparing to unpack .../76-python3-monotonic_1.6-3build1_all.deb ... 298s Unpacking python3-monotonic (1.6-3build1) ... 298s Selecting previously unselected package python3-pbr. 298s Preparing to unpack .../77-python3-pbr_6.1.1-0ubuntu2_all.deb ... 298s Unpacking python3-pbr (6.1.1-0ubuntu2) ... 299s Selecting previously unselected package python3-pip. 299s Preparing to unpack .../78-python3-pip_25.1.1+dfsg-1ubuntu2_all.deb ... 299s Unpacking python3-pip (25.1.1+dfsg-1ubuntu2) ... 299s Selecting previously unselected package python3-pytest. 299s Preparing to unpack .../79-python3-pytest_9.0.2-2_all.deb ... 299s Unpacking python3-pytest (9.0.2-2) ... 299s Selecting previously unselected package python3-pytest-xdist. 300s Preparing to unpack .../80-python3-pytest-xdist_3.8.0-4_all.deb ... 300s Unpacking python3-pytest-xdist (3.8.0-4) ... 300s Selecting previously unselected package python3-setuptools-scm. 300s Preparing to unpack .../81-python3-setuptools-scm_8.2.1-4_all.deb ... 300s Unpacking python3-setuptools-scm (8.2.1-4) ... 300s Selecting previously unselected package python3-snowballstemmer. 300s Preparing to unpack .../82-python3-snowballstemmer_3.0.1-1_all.deb ... 300s Unpacking python3-snowballstemmer (3.0.1-1) ... 300s Selecting previously unselected package sphinx-common. 300s Preparing to unpack .../83-sphinx-common_8.2.3-12_all.deb ... 300s Unpacking sphinx-common (8.2.3-12) ... 304s Selecting previously unselected package python3-alabaster. 304s Preparing to unpack .../84-python3-alabaster_0.7.16-0.1build1_all.deb ... 304s Unpacking python3-alabaster (0.7.16-0.1build1) ... 304s Selecting previously unselected package python3-sphinx. 304s Preparing to unpack .../85-python3-sphinx_8.2.3-12_all.deb ... 304s Unpacking python3-sphinx (8.2.3-12) ... 304s Selecting previously unselected package python3-sphinxcontrib.apidoc. 304s Preparing to unpack .../86-python3-sphinxcontrib.apidoc_0.3.0-2ubuntu1_all.deb ... 304s Unpacking python3-sphinxcontrib.apidoc (0.3.0-2ubuntu1) ... 305s Selecting previously unselected package python3-zmq. 305s Preparing to unpack .../87-python3-zmq_27.1.0-1_s390x.deb ... 305s Unpacking python3-zmq (27.1.0-1) ... 305s Selecting previously unselected package openstack-pkg-tools. 305s Preparing to unpack .../88-openstack-pkg-tools_140_all.deb ... 305s Unpacking openstack-pkg-tools (140) ... 305s Setting up dh-python (7.20260125) ... 306s Setting up python3-iniconfig (2.1.0-2) ... 308s Setting up libnorm1t64:s390x (1.5.9+dfsg-4) ... 308s Setting up libsodium23:s390x (1.0.18-2) ... 308s Setting up python3-defusedxml (0.7.1-3build1) ... 309s Setting up python3-pbr (6.1.1-0ubuntu2) ... 311s Setting up libarchive-zip-perl (1.68-1) ... 311s Setting up python3-alabaster (0.7.16-0.1build1) ... 312s Setting up libdebhelper-perl (13.28ubuntu1) ... 312s Setting up libpython3.14-minimal:s390x (3.14.2-1) ... 312s Setting up linux-libc-dev:s390x (6.18.0-9.9) ... 312s Setting up m4 (1.4.20-2) ... 312s Setting up python-eventlet-doc (0.39.0-0ubuntu2) ... 312s Setting up libgomp1:s390x (15.2.0-12ubuntu1) ... 312s Setting up python3-wheel (0.46.1-2) ... 313s Setting up python3-setuptools-scm (8.2.1-4) ... 314s Setting up python3-monotonic (1.6-3build1) ... 315s Setting up libpgm-5.3-0t64:s390x (5.3.128~dfsg-2.1build2) ... 315s Setting up autotools-dev (20240727.1) ... 315s Setting up rpcsvc-proto (1.4.3-1build1) ... 315s Setting up python3-pyproject-hooks (1.2.0-1) ... 317s Setting up python3-snowballstemmer (3.0.1-1) ... 321s Setting up libmpc3:s390x (1.3.1-2) ... 321s Setting up autopoint (0.23.2-1) ... 321s Setting up python3-pip (25.1.1+dfsg-1ubuntu2) ... 335s Setting up python3-installer (0.7.0+dfsg1-3) ... 337s Setting up autoconf (2.72-3.1ubuntu1) ... 337s Setting up python3-pluggy (1.6.0-2) ... 339s Setting up libubsan1:s390x (15.2.0-12ubuntu1) ... 339s Setting up dwz (0.16-2) ... 339s Setting up python3-trove-classifiers (2025.11.14.15-1) ... 340s Setting up libcrypt-dev:s390x (1:4.5.1-1) ... 340s Setting up libasan8:s390x (15.2.0-12ubuntu1) ... 340s Setting up libjson-perl (4.10000-1) ... 340s Setting up debugedit (1:5.2-3) ... 340s Setting up python3-roman-numerals (4.1.0-1) ... 341s Setting up sgml-base (1.31+nmu1) ... 342s Setting up libtsan2:s390x (15.2.0-12ubuntu1) ... 342s Setting up libisl23:s390x (0.27-1build1) ... 342s Setting up python3-build (1.2.2-5) ... 344s Setting up libc-dev-bin (2.42-2ubuntu4) ... 344s Setting up python3-execnet (2.1.1-1build1) ... 345s Setting up python3-pathspec (0.12.1-1build1) ... 347s Setting up python3.14-minimal (3.14.2-1) ... 353s Setting up libcc1-0:s390x (15.2.0-12ubuntu1) ... 353s Setting up liblsan0:s390x (15.2.0-12ubuntu1) ... 353s Setting up libitm1:s390x (15.2.0-12ubuntu1) ... 353s Setting up python3-imagesize (1.4.1-1build1) ... 354s Setting up automake (1:1.18.1-3build1) ... 355s update-alternatives: using /usr/bin/automake-1.18 to provide /usr/bin/automake (automake) in auto mode 355s Setting up libfile-stripnondeterminism-perl (1.15.0-1build1) ... 355s Setting up gettext (0.23.2-1) ... 355s Setting up libgcc-15-dev:s390x (15.2.0-12ubuntu1) ... 355s Setting up libzmq5:s390x (4.3.5-1build3) ... 355s Setting up libpython3.14-stdlib:s390x (3.14.2-1) ... 355s Setting up pybuild-plugin-pyproject (7.20260125) ... 355s Setting up python3-pytest (9.0.2-2) ... 360s Setting up intltool-debian (0.35.0+20060710.6build1) ... 360s Setting up python3-zmq (27.1.0-1) ... 362s Setting up sphinx-common (8.2.3-12) ... 362s Setting up dh-strip-nondeterminism (1.15.0-1build1) ... 362s Setting up xml-core (0.19build1) ... 363s Setting up cpp-15-s390x-linux-gnu (15.2.0-12ubuntu1) ... 364s Setting up libc6-dev:s390x (2.42-2ubuntu4) ... 364s Setting up python3-hatchling (1.28.0-1) ... 365s Setting up python3.14 (3.14.2-1) ... 372s Setting up gcc-15-s390x-linux-gnu (15.2.0-12ubuntu1) ... 372s Setting up python3-pytest-xdist (3.8.0-4) ... 373s Setting up cpp-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 373s Setting up po-debconf (1.0.22) ... 373s Setting up python3-all (3.13.9-3) ... 373s Setting up openstack-pkg-tools (140) ... 373s Setting up libstdc++-15-dev:s390x (15.2.0-12ubuntu1) ... 373s Setting up gcc-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 373s Setting up cpp-15 (15.2.0-12ubuntu1) ... 373s Setting up cpp (4:15.2.0-4ubuntu1) ... 373s Setting up g++-15-s390x-linux-gnu (15.2.0-12ubuntu1) ... 373s Setting up g++-s390x-linux-gnu (4:15.2.0-4ubuntu1) ... 373s Setting up gcc-15 (15.2.0-12ubuntu1) ... 373s Setting up g++-15 (15.2.0-12ubuntu1) ... 373s Setting up libtool (2.5.4-9) ... 373s Setting up gcc (4:15.2.0-4ubuntu1) ... 373s Setting up dh-autoreconf (21) ... 373s Setting up g++ (4:15.2.0-4ubuntu1) ... 373s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 373s Setting up build-essential (12.12ubuntu2) ... 373s Setting up debhelper (13.28ubuntu1) ... 373s Processing triggers for install-info (7.2-5) ... 376s Processing triggers for libc-bin (2.42-2ubuntu4) ... 376s Processing triggers for systemd (259-1ubuntu3) ... 376s Processing triggers for man-db (2.13.1-1) ... 402s Processing triggers for sgml-base (1.31+nmu1) ... 402s Setting up docutils-common (0.22.4+dfsg-1) ... 403s Processing triggers for sgml-base (1.31+nmu1) ... 403s Setting up python3-docutils (0.22.4+dfsg-1) ... 408s Setting up python3-sphinx (8.2.3-12) ... 417s Setting up python3-sphinxcontrib.apidoc (0.3.0-2ubuntu1) ... 422s autopkgtest [12:23:03]: test unittests: [----------------------- 430s /usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated 430s !! 430s 430s ******************************************************************************** 430s Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). 430s 430s By 2026-Feb-18, you need to update your project and remove deprecated calls 430s or your builds will no longer be supported. 430s 430s See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 430s ******************************************************************************** 430s 430s !! 430s corresp(dist, value, root_dir) 434s /usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. 434s !! 434s 434s ******************************************************************************** 434s Please consider removing the following classifiers in favor of a SPDX license expression: 434s 434s License :: OSI Approved :: MIT License 434s 434s See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 434s ******************************************************************************** 434s 434s !! 434s dist._finalize_license_expression() 434s /usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. 434s !! 434s 434s ******************************************************************************** 434s Please consider removing the following classifiers in favor of a SPDX license expression: 434s 434s License :: OSI Approved :: MIT License 434s 434s See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 434s ******************************************************************************** 434s 434s !! 434s self._finalize_license_expression() 434s running install 434s running build 434s running build_py 434s creating build/lib/eventlet 434s copying eventlet/corolocal.py -> build/lib/eventlet 434s copying eventlet/debug.py -> build/lib/eventlet 434s copying eventlet/pools.py -> build/lib/eventlet 434s copying eventlet/semaphore.py -> build/lib/eventlet 434s copying eventlet/timeout.py -> build/lib/eventlet 434s copying eventlet/backdoor.py -> build/lib/eventlet 434s copying eventlet/wsgi.py -> build/lib/eventlet 434s copying eventlet/event.py -> build/lib/eventlet 434s copying eventlet/convenience.py -> build/lib/eventlet 434s copying eventlet/tpool.py -> build/lib/eventlet 434s copying eventlet/websocket.py -> build/lib/eventlet 434s copying eventlet/patcher.py -> build/lib/eventlet 434s copying eventlet/queue.py -> build/lib/eventlet 434s copying eventlet/asyncio.py -> build/lib/eventlet 434s copying eventlet/lock.py -> build/lib/eventlet 434s copying eventlet/dagpool.py -> build/lib/eventlet 434s copying eventlet/greenpool.py -> build/lib/eventlet 434s copying eventlet/_version.py -> build/lib/eventlet 434s copying eventlet/greenthread.py -> build/lib/eventlet 434s /usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:90: SetuptoolsDeprecationWarning: setup.py install is deprecated. 434s !! 434s 434s ******************************************************************************** 434s Please avoid running ``setup.py`` directly. 434s Instead, use pypa/build, pypa/installer or other 434s standards-based tools. 434s 434s See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details. 434s ******************************************************************************** 434s 434s !! 434s self.initialize_options() 434s copying eventlet/__init__.py -> build/lib/eventlet 434s copying eventlet/db_pool.py -> build/lib/eventlet 434s copying eventlet/coros.py -> build/lib/eventlet 434s running egg_info 434s creating eventlet.egg-info 434s writing eventlet.egg-info/PKG-INFO 434s writing dependency_links to eventlet.egg-info/dependency_links.txt 434s writing requirements to eventlet.egg-info/requires.txt 434s writing top-level names to eventlet.egg-info/top_level.txt 434s writing manifest file 'eventlet.egg-info/SOURCES.txt' 434s reading manifest file 'eventlet.egg-info/SOURCES.txt' 434s reading manifest template 'MANIFEST.in' 434s adding license file 'LICENSE' 434s adding license file 'AUTHORS' 434s warning: no files found matching 'Makefile' under directory 'doc' 434s writing manifest file 'eventlet.egg-info/SOURCES.txt' 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.green' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.green' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.green' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.green' to be distributed and are 434s already explicitly excluding 'eventlet.green' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.green.OpenSSL' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.green.OpenSSL' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.green.OpenSSL' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.green.OpenSSL' to be distributed and are 434s already explicitly excluding 'eventlet.green.OpenSSL' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.green.http' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.green.http' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.green.http' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.green.http' to be distributed and are 434s already explicitly excluding 'eventlet.green.http' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.green.urllib' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.green.urllib' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.green.urllib' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.green.urllib' to be distributed and are 434s already explicitly excluding 'eventlet.green.urllib' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.greenio' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.greenio' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.greenio' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.greenio' to be distributed and are 434s already explicitly excluding 'eventlet.greenio' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.hubs' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.hubs' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.hubs' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.hubs' to be distributed and are 434s already explicitly excluding 'eventlet.hubs' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.support' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.support' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.support' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.support' to be distributed and are 434s already explicitly excluding 'eventlet.support' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.zipkin' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.zipkin' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.zipkin' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.zipkin' to be distributed and are 434s already explicitly excluding 'eventlet.zipkin' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.zipkin._thrift' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.zipkin._thrift' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.zipkin._thrift' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.zipkin._thrift' to be distributed and are 434s already explicitly excluding 'eventlet.zipkin._thrift' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Packagcreating build/lib/eventlet/green 434s copying eventlet/green/BaseHTTPServer.py -> build/lib/eventlet/green 434s copying eventlet/green/CGIHTTPServer.py -> build/lib/eventlet/green 434s copying eventlet/green/MySQLdb.py -> build/lib/eventlet/green 434s copying eventlet/green/Queue.py -> build/lib/eventlet/green 434s copying eventlet/green/SimpleHTTPServer.py -> build/lib/eventlet/green 434s copying eventlet/green/SocketServer.py -> build/lib/eventlet/green 434s copying eventlet/green/__init__.py -> build/lib/eventlet/green 434s copying eventlet/green/_socket_nodns.py -> build/lib/eventlet/green 434s copying eventlet/green/asynchat.py -> build/lib/eventlet/green 434s copying eventlet/green/asyncore.py -> build/lib/eventlet/green 434s copying eventlet/green/builtin.py -> build/lib/eventlet/green 434s copying eventlet/green/ftplib.py -> build/lib/eventlet/green 434s copying eventlet/green/httplib.py -> build/lib/eventlet/green 434s copying eventlet/green/os.py -> build/lib/eventlet/green 434s copying eventlet/green/profile.py -> build/lib/eventlet/green 434s copying eventlet/green/select.py -> build/lib/eventlet/green 434s copying eventlet/green/selectors.py -> build/lib/eventlet/green 434s copying eventlet/green/socket.py -> build/lib/eventlet/green 434s copying eventlet/green/ssl.py -> build/lib/eventlet/green 434s e 'eventlet.zipkin._thrift.zipkinCore' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.zipkin._thrift.zipkinCore' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.zipkin._thrift.zipkinCore' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.zipkin._thrift.zipkinCore' to be distributed and are 434s already explicitly excluding 'eventlet.zipkin._thrift.zipkinCore' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.zipkin.example' is absent from the `packages` configuration. 434s !! 434s 434s ******************************************************************************** 434s ############################ 434s # Package would be ignored # 434s ############################ 434s Python recognizes 'eventlet.zipkin.example' as an importable package[^1], 434s but it is absent from setuptools' `packages` configuration. 434s 434s This leads to an ambiguous overall configuration. If you want to distribute this 434s package, please make sure that 'eventlet.zipkin.example' is explicitly added 434s to the `packages` configuration field. 434s 434s Alternatively, you can also rely on setuptools' discovery methods 434s (for example by using `find_namespace_packages(...)`/`find_namespace:` 434s instead of `find_packages(...)`/`find:`). 434s 434s You can read more about "package discovery" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 434s 434s If you don't want 'eventlet.zipkin.example' to be distributed and are 434s already explicitly excluding 'eventlet.zipkin.example' via 434s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 434s you can try to use `exclude_package_data`, or `include-package-data=False` in 434s combination with a more fine grained `package-data` configuration. 434s 434s You can read more about "package data files" on setuptools documentation page: 434s 434s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 434s 434s 434s [^1]: For Python, any directory (with suitable naming) can be imported, 434s even if it does not contain any `.py` files. 434s On the other hand, currently there is no concept of package data 434s directory, all directories are treated like packages. 434s ******************************************************************************** 434s 434s !! 434s check.warn(importable) 434s copying eventlet/green/subprocess.py -> build/lib/eventlet/green 434s copying eventlet/green/thread.py -> build/lib/eventlet/green 434s copying eventlet/green/threading.py -> build/lib/eventlet/green 434s copying eventlet/green/time.py -> build/lib/eventlet/green 434s copying eventlet/green/urllib2.py -> build/lib/eventlet/green 434s copying eventlet/green/zmq.py -> build/lib/eventlet/green 434s creating build/lib/eventlet/green/OpenSSL 434s copying eventlet/green/OpenSSL/SSL.py -> build/lib/eventlet/green/OpenSSL 434s copying eventlet/green/OpenSSL/__init__.py -> build/lib/eventlet/green/OpenSSL 434s copying eventlet/green/OpenSSL/crypto.py -> build/lib/eventlet/green/OpenSSL 434s copying eventlet/green/OpenSSL/tsafe.py -> build/lib/eventlet/green/OpenSSL 434s copying eventlet/green/OpenSSL/version.py -> build/lib/eventlet/green/OpenSSL 434s creating build/lib/eventlet/green/http 434s copying eventlet/green/http/__init__.py -> build/lib/eventlet/green/http 434s copying eventlet/green/http/client.py -> build/lib/eventlet/green/http 434s copying eventlet/green/http/cookiejar.py -> build/lib/eventlet/green/http 434s copying eventlet/green/http/cookies.py -> build/lib/eventlet/green/http 434s copying eventlet/green/http/server.py -> build/lib/eventlet/green/http 434s creating build/lib/eventlet/green/urllib 434s copying eventlet/green/urllib/__init__.py -> build/lib/eventlet/green/urllib 434s copying eventlet/green/urllib/error.py -> build/lib/eventlet/green/urllib 434s copying eventlet/green/urllib/parse.py -> build/lib/eventlet/green/urllib 434s copying eventlet/green/urllib/request.py -> build/lib/eventlet/green/urllib 434s copying eventlet/green/urllib/response.py -> build/lib/eventlet/green/urllib 434s creating build/lib/eventlet/greenio 434s copying eventlet/greenio/__init__.py -> build/lib/eventlet/greenio 434s copying eventlet/greenio/base.py -> build/lib/eventlet/greenio 434s copying eventlet/greenio/py3.py -> build/lib/eventlet/greenio 434s creating build/lib/eventlet/hubs 434s copying eventlet/hubs/__init__.py -> build/lib/eventlet/hubs 434s copying eventlet/hubs/asyncio.py -> build/lib/eventlet/hubs 434s copying eventlet/hubs/epolls.py -> build/lib/eventlet/hubs 434s copying eventlet/hubs/hub.py -> build/lib/eventlet/hubs 434s copying eventlet/hubs/kqueue.py -> build/lib/eventlet/hubs 434s copying eventlet/hubs/poll.py -> build/lib/eventlet/hubs 434s copying eventlet/hubs/pyevent.py -> build/lib/eventlet/hubs 434s copying eventlet/hubs/selects.py -> build/lib/eventlet/hubs 434s copying eventlet/hubs/timer.py -> build/lib/eventlet/hubs 434s creating build/lib/eventlet/support 434s copying eventlet/support/__init__.py -> build/lib/eventlet/support 434s copying eventlet/support/greendns.py -> build/lib/eventlet/support 434s copying eventlet/support/greenlets.py -> build/lib/eventlet/support 434s copying eventlet/support/psycopg2_patcher.py -> build/lib/eventlet/support 434s copying eventlet/support/pylib.py -> build/lib/eventlet/support 434s copying eventlet/support/stacklesspypys.py -> build/lib/eventlet/support 434s copying eventlet/support/stacklesss.py -> build/lib/eventlet/support 434s creating build/lib/eventlet/zipkin 434s copying eventlet/zipkin/README.rst -> build/lib/eventlet/zipkin 434s copying eventlet/zipkin/__init__.py -> build/lib/eventlet/zipkin 434s copying eventlet/zipkin/api.py -> build/lib/eventlet/zipkin 434s copying eventlet/zipkin/client.py -> build/lib/eventlet/zipkin 434s copying eventlet/zipkin/greenthread.py -> build/lib/eventlet/zipkin 434s copying eventlet/zipkin/http.py -> build/lib/eventlet/zipkin 434s copying eventlet/zipkin/log.py -> build/lib/eventlet/zipkin 434s copying eventlet/zipkin/patcher.py -> build/lib/eventlet/zipkin 434s copying eventlet/zipkin/wsgi.py -> build/lib/eventlet/zipkin 434s creating build/lib/eventlet/zipkin/_thrift 434s copying eventlet/zipkin/_thrift/README.rst -> build/lib/eventlet/zipkin/_thrift 434s copying eventlet/zipkin/_thrift/__init__.py -> build/lib/eventlet/zipkin/_thrift 434s copying eventlet/zipkin/_thrift/zipkinCore.thrift -> build/lib/eventlet/zipkin/_thrift 434s creating build/lib/eventlet/zipkin/_thrift/zipkinCore 434s copying eventlet/zipkin/_thrift/zipkinCore/__init__.py -> build/lib/eventlet/zipkin/_thrift/zipkinCore 434s copying eventlet/zipkin/_thrift/zipkinCore/constants.py -> build/lib/eventlet/zipkin/_thrift/zipkinCore 434s copying eventlet/zipkin/_thrift/zipkinCore/ttypes.py -> build/lib/eventlet/zipkin/_thrift/zipkinCore 434s creating build/lib/eventlet/zipkin/example 434s copying eventlet/zipkin/example/ex1.png -> build/lib/eventlet/zipkin/example 434s copying eventlet/zipkin/example/ex2.png -> build/lib/eventlet/zipkin/example 434s copying eventlet/zipkin/example/ex3.png -> build/lib/eventlet/zipkin/example 434s running install_lib 434s creating /debian/tmp/usr/lib/python3/dist-packages 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/corolocal.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/debug.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/httplib.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/zmq.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/profile.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/ftplib.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/asyncore.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/asynchat.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 434s copying build/lib/eventlet/green/http/cookies.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 434s copying build/lib/eventlet/green/http/server.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 434s copying build/lib/eventlet/green/http/client.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 434s copying build/lib/eventlet/green/http/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 434s copying build/lib/eventlet/green/http/cookiejar.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 434s copying build/lib/eventlet/green/select.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/subprocess.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/thread.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/ssl.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/os.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 434s copying build/lib/eventlet/green/urllib/response.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 434s copying build/lib/eventlet/green/urllib/parse.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 434s copying build/lib/eventlet/green/urllib/error.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 434s copying build/lib/eventlet/green/urllib/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 434s copying build/lib/eventlet/green/urllib/request.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 434s copying build/lib/eventlet/green/OpenSSL/tsafe.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 434s copying build/lib/eventlet/green/OpenSSL/crypto.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 434s copying build/lib/eventlet/green/OpenSSL/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 434s copying build/lib/eventlet/green/OpenSSL/version.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 434s copying build/lib/eventlet/green/OpenSSL/SSL.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 434s copying build/lib/eventlet/green/urllib2.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/BaseHTTPServer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/MySQLdb.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/SimpleHTTPServer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/SocketServer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/time.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/builtin.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/_socket_nodns.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/Queue.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/threading.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/socket.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/CGIHTTPServer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/green/selectors.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 434s copying build/lib/eventlet/pools.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 434s copying build/lib/eventlet/support/greendns.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 434s copying build/lib/eventlet/support/pylib.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 434s copying build/lib/eventlet/support/psycopg2_patcher.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 434s copying build/lib/eventlet/support/stacklesspypys.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 434s copying build/lib/eventlet/support/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 434s copying build/lib/eventlet/support/stacklesss.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 434s copying build/lib/eventlet/support/greenlets.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 434s copying build/lib/eventlet/semaphore.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/timeout.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/backdoor.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/wsgi.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/event.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/convenience.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/tpool.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/websocket.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/patcher.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/queue.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/asyncio.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/lock.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/dagpool.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/greenpool.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/_version.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/greenthread.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/poll.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/hub.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/kqueue.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/pyevent.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/asyncio.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/selects.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/epolls.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/timer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s copying build/lib/eventlet/hubs/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio 434s copying build/lib/eventlet/greenio/py3.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio 434s copying build/lib/eventlet/greenio/base.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio 434s copying build/lib/eventlet/greenio/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio 434s copying build/lib/eventlet/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/db_pool.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s copying build/lib/eventlet/coros.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s copying build/lib/eventlet/zipkin/wsgi.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s copying build/lib/eventlet/zipkin/api.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/example 434s copying build/lib/eventlet/zipkin/example/ex1.png -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/example 434s copying build/lib/eventlet/zipkin/example/ex2.png -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/example 434s copying build/lib/eventlet/zipkin/example/ex3.png -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/example 434s copying build/lib/eventlet/zipkin/patcher.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s copying build/lib/eventlet/zipkin/greenthread.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s copying build/lib/eventlet/zipkin/client.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s copying build/lib/eventlet/zipkin/http.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s copying build/lib/eventlet/zipkin/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s copying build/lib/eventlet/zipkin/log.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift 434s copying build/lib/eventlet/zipkin/_thrift/zipkinCore.thrift -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift 434s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore 434s copying build/lib/eventlet/zipkin/_thrift/zipkinCore/constants.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore 434s copying build/lib/eventlet/zipkin/_thrift/zipkinCore/ttypes.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore 434s copying build/lib/eventlet/zipkin/_thrift/zipkinCore/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore 434s copying build/lib/eventlet/zipkin/_thrift/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift 434s copying build/lib/eventlet/zipkin/_thrift/README.rst -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift 434s copying build/lib/eventlet/zipkin/README.rst -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/corolocal.py to corolocal.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/debug.py to debug.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/httplib.py to httplib.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/zmq.py to zmq.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/profile.py to profile.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/ftplib.py to ftplib.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/asyncore.py to asyncore.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/asynchat.py to asynchat.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/cookies.py to cookies.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/server.py to server.cpython-314.pyc 434s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/client.py to client.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/cookiejar.py to cookiejar.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/select.py to select.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/subprocess.py to subprocess.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/thread.py to thread.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/ssl.py to ssl.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/os.py to os.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/response.py to response.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/parse.py to parse.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/error.py to error.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/request.py to request.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/tsafe.py to tsafe.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/crypto.py to crypto.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/version.py to version.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/SSL.py to SSL.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib2.py to urllib2.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/BaseHTTPServer.py to BaseHTTPServer.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/MySQLdb.py to MySQLdb.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/SimpleHTTPServer.py to SimpleHTTPServer.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/SocketServer.py to SocketServer.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/time.py to time.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/builtin.py to builtin.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/_socket_nodns.py to _socket_nodns.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/Queue.py to Queue.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/threading.py to threading.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/socket.py to socket.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/CGIHTTPServer.py to CGIHTTPServer.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/selectors.py to selectors.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/pools.py to pools.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/greendns.py to greendns.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/pylib.py to pylib.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/psycopg2_patcher.py to psycopg2_patcher.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/stacklesspypys.py to stacklesspypys.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/stacklesss.py to stacklesss.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/greenlets.py to greenlets.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/semaphore.py to semaphore.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/timeout.py to timeout.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/backdoor.py to backdoor.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/wsgi.py to wsgi.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/event.py to event.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/convenience.py to convenience.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/tpool.py to tpool.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/websocket.py to websocket.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/patcher.py to patcher.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/queue.py to queue.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/asyncio.py to asyncio.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/lock.py to lock.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/dagpool.py to dagpool.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenpool.py to greenpool.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/_version.py to _version.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenthread.py to greenthread.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/poll.py to poll.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/hub.py to hub.cpython-314.pyc 435s /usr/lib/python3/dist-packages/eventlet/greenpool.py:95: SyntaxWarning: 'return' in a 'finally' block 435s return 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/kqueue.py to kqueue.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/pyevent.py to pyevent.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/asyncio.py to asyncio.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/selects.py to selects.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/epolls.py to epolls.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/timer.py to timer.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio/py3.py to py3.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio/base.py to base.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/db_pool.py to db_pool.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/coros.py to coros.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/wsgi.py to wsgi.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/api.py to api.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/patcher.py to patcher.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/greenthread.py to greenthread.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/client.py to client.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/http.py to http.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/log.py to log.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore/constants.py to constants.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore/ttypes.py to ttypes.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore/__init__.py to __init__.cpython-314.pyc 435s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/__init__.py to __init__.cpython-314.pyc 435s running install_egg_info 435s Copying eventlet.egg-info to /debian/tmp/usr/lib/python3/dist-packages/eventlet-0.0.0.egg-info 435s Skipping SOURCES.txt 435s running install_scripts 449s ============================= test session starts ============================== 449s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.14 449s cachedir: .pytest_cache 449s rootdir: /tmp/autopkgtest.tr1sSo/build.emR/src 449s configfile: pyproject.toml 449s plugins: typeguard-4.4.4, xdist-3.8.0 449s created: 2/2 workers 449s 2 workers [717 items] 449s 449s scheduling tests via LoadScheduling 449s 449s tests/api_test.py::TestApi::test_001_trampoline_timeout 449s tests/db_pool_test.py::Test01Psycopg2Tpool::test_connection_is_clean_after_put 449s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_connection_is_clean_after_put 449s tests/db_pool_test.py::Test01Psycopg2Tpool::test_create_cursor 449s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_create_cursor 449s tests/db_pool_test.py::Test01Psycopg2Tpool::test_cursor_works_as_context_manager 449s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_cursor_works_as_context_manager 449s tests/db_pool_test.py::Test01Psycopg2Tpool::test_put_doesnt_double_wrap 449s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_put_doesnt_double_wrap 449s tests/db_pool_test.py::Test01Psycopg2Tpool::test_put_none 449s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_put_none 449s tests/db_pool_test.py::Test01Psycopg2Tpool::test_raising_create 449s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_raising_create 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_returns_immediately 450s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_returns_immediately 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_run_bad_query 450s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_run_bad_query 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_run_query 450s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_run_query 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_safe_close 450s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_safe_close 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_set_isolation_level 450s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_set_isolation_level 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_unwrap_connection 450s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_unwrap_connection 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_visibility_from_other_connections 450s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_visibility_from_other_connections 450s [gw0] [ 1%] PASSED tests/api_test.py::TestApi::test_001_trampoline_timeout 450s tests/api_test.py::TestApi::test_connect_ssl 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_waiters_get_woken 450s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_waiters_get_woken 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_zero_max_age 450s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_zero_max_age 450s tests/db_pool_test.py::Test01Psycopg2Tpool::test_zero_max_idle 450s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_zero_max_idle 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_bool 450s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_bool 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_close_does_a_put 450s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_close_does_a_put 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_connecting 450s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_connecting 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_connection_is_clean_after_put 450s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_connection_is_clean_after_put 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_create_cursor 450s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_create_cursor 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_cursor_works_as_context_manager 450s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_cursor_works_as_context_manager 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_put_doesnt_double_wrap 450s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_put_doesnt_double_wrap 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_put_none 450s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_put_none 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_raising_create 450s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_raising_create 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_returns_immediately 450s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_returns_immediately 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_run_bad_query 450s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_run_bad_query 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_run_query 450s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_run_query 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_safe_close 450s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_safe_close 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_set_isolation_level 450s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_set_isolation_level 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_unwrap_connection 450s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_unwrap_connection 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_visibility_from_other_connections 450s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_visibility_from_other_connections 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_waiters_get_woken 450s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_waiters_get_woken 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_zero_max_age 450s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_zero_max_age 450s tests/db_pool_test.py::Test02Psycopg2Raw::test_zero_max_idle 450s [gw1] [ 5%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_zero_max_idle 450s tests/debug_test.py::TestSpew::test_line 450s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line 450s tests/debug_test.py::TestSpew::test_line_global 450s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line_global 450s tests/debug_test.py::TestSpew::test_line_nofile 450s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line_nofile 450s tests/debug_test.py::TestSpew::test_line_nooutput 450s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line_nooutput 450s tests/debug_test.py::TestSpew::test_line_novalue 450s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line_novalue 450s tests/debug_test.py::TestSpew::test_spew 450s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_spew 450s tests/debug_test.py::TestSpew::test_unspew 450s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_unspew 450s tests/debug_test.py::TestDebug::test_everything 450s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_connect_ssl 450s tests/api_test.py::TestApi::test_connect_tcp 450s [gw1] [ 6%] PASSED tests/debug_test.py::TestDebug::test_everything 450s tests/debug_test.py::TestDebug::test_hub_exceptions 450s [gw1] [ 6%] PASSED tests/debug_test.py::TestDebug::test_hub_exceptions 450s tests/env_test.py::test_hub_selects 450s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_connect_tcp 451s tests/api_test.py::TestApi::test_killing_dormant 451s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_killing_dormant 451s tests/api_test.py::TestApi::test_nested_with_timeout 451s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_nested_with_timeout 451s tests/api_test.py::TestApi::test_tcp_listener 451s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_tcp_listener 451s tests/api_test.py::TestApi::test_timeout_cancel 451s [gw0] [ 7%] PASSED tests/api_test.py::TestApi::test_timeout_cancel 451s tests/api_test.py::test_wrap_is_timeout 451s [gw0] [ 7%] PASSED tests/api_test.py::test_wrap_is_timeout 452s tests/api_test.py::test_timeouterror_deprecated 452s [gw1] [ 7%] PASSED tests/env_test.py::test_hub_selects 452s tests/env_test.py::test_tpool_dns 452s [gw0] [ 7%] PASSED tests/api_test.py::test_timeouterror_deprecated 453s tests/api_test.py::test_zero_second_sleep 453s [gw1] [ 7%] PASSED tests/env_test.py::test_tpool_dns 454s tests/env_test.py::test_tpool_size 454s [gw0] [ 7%] PASSED tests/api_test.py::test_zero_second_sleep 455s tests/backdoor_test.py::BackdoorTest::test_quick_client_disconnect 455s [gw0] [ 7%] PASSED tests/backdoor_test.py::BackdoorTest::test_quick_client_disconnect 455s tests/backdoor_test.py::BackdoorTest::test_server 455s [gw1] [ 8%] PASSED tests/env_test.py::test_tpool_size 455s tests/env_test.py::test_tpool_negative 455s [gw0] [ 8%] PASSED tests/backdoor_test.py::BackdoorTest::test_server 455s tests/backdoor_test.py::BackdoorTest::test_server_on_ipv6_socket 455s [gw0] [ 8%] SKIPPED tests/backdoor_test.py::BackdoorTest::test_server_on_ipv6_socket 456s tests/backdoor_test.py::BackdoorTest::test_server_on_unix_socket 456s [gw0] [ 8%] PASSED tests/backdoor_test.py::BackdoorTest::test_server_on_unix_socket 456s tests/convenience_test.py::TestServe::test_blocking 456s [gw0] [ 8%] PASSED tests/convenience_test.py::TestServe::test_blocking 456s tests/convenience_test.py::TestServe::test_called_for_each_connection 456s [gw0] [ 8%] PASSED tests/convenience_test.py::TestServe::test_called_for_each_connection 456s tests/convenience_test.py::TestServe::test_concurrency 456s [gw0] [ 8%] PASSED tests/convenience_test.py::TestServe::test_concurrency 457s tests/convenience_test.py::TestServe::test_excepting_server 457s [gw0] [ 9%] PASSED tests/convenience_test.py::TestServe::test_excepting_server 457s tests/convenience_test.py::TestServe::test_excepting_server_already_closed 457s [gw0] [ 9%] PASSED tests/convenience_test.py::TestServe::test_excepting_server_already_closed 457s tests/convenience_test.py::TestServe::test_exiting_server 457s [gw0] [ 9%] PASSED tests/convenience_test.py::TestServe::test_exiting_server 457s tests/convenience_test.py::TestServe::test_raising_stopserve 457s [gw1] [ 9%] PASSED tests/env_test.py::test_tpool_negative 457s tests/env_test.py::test_tpool_zero 457s [gw0] [ 9%] PASSED tests/convenience_test.py::TestServe::test_raising_stopserve 458s tests/convenience_test.py::TestServe::test_wrap_ssl 458s [gw0] [ 9%] PASSED tests/convenience_test.py::TestServe::test_wrap_ssl 458s tests/convenience_test.py::test_socket_reuse 458s [gw0] [ 9%] PASSED tests/convenience_test.py::test_socket_reuse 458s tests/convenience_test.py::test_reuse_random_port_warning 458s [gw0] [ 10%] PASSED tests/convenience_test.py::test_reuse_random_port_warning 458s tests/convenience_test.py::test_reuseport_oserror 458s [gw0] [ 10%] PASSED tests/convenience_test.py::test_reuseport_oserror 458s tests/dagpool_test.py::test_check_no_suspend 458s [gw0] [ 10%] PASSED tests/dagpool_test.py::test_check_no_suspend 458s tests/dagpool_test.py::test_init 458s [gw0] [ 10%] PASSED tests/dagpool_test.py::test_init 458s tests/dagpool_test.py::test_wait_each_empty 458s [gw0] [ 10%] PASSED tests/dagpool_test.py::test_wait_each_empty 458s tests/dagpool_test.py::test_wait_each_preload 458s [gw0] [ 10%] PASSED tests/dagpool_test.py::test_wait_each_preload 458s tests/dagpool_test.py::test_wait_each_posted 458s [gw0] [ 10%] PASSED tests/dagpool_test.py::test_wait_each_posted 458s tests/dagpool_test.py::test_wait_posted 458s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_wait_posted 458s tests/dagpool_test.py::test_spawn_collision_preload 458s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_spawn_collision_preload 458s tests/dagpool_test.py::test_spawn_collision_post 458s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_spawn_collision_post 458s tests/dagpool_test.py::test_spawn_collision_spawn 458s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_spawn_collision_spawn 458s tests/dagpool_test.py::test_spawn_multiple 458s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_spawn_multiple 458s tests/dagpool_test.py::test_spawn_many 458s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_spawn_many 458s tests/dagpool_test.py::test_wait_each_all 458s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_wait_each_all 458s tests/dagpool_test.py::test_kill 458s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_kill 458s tests/dagpool_test.py::test_post_collision_preload 458s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_post_collision_preload 458s tests/dagpool_test.py::test_post_collision_post 458s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_post_collision_post 458s tests/dagpool_test.py::test_post_collision_spawn 458s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_post_collision_spawn 458s tests/dagpool_test.py::test_post_replace 458s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_post_replace 458s tests/dagpool_test.py::test_getitem 458s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_getitem 458s tests/dagpool_test.py::test_waitall_exc 458s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_waitall_exc 458s tests/dagpool_test.py::test_propagate_exc 458s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_propagate_exc 458s tests/dagpool_test.py::test_wait_each_exc 458s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_wait_each_exc 458s tests/dagpool_test.py::test_post_get_exc 458s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_post_get_exc 458s tests/db_pool_test.py::test_raw_pool_issue_125 458s [gw0] [ 13%] PASSED tests/db_pool_test.py::test_raw_pool_issue_125 458s tests/db_pool_test.py::test_raw_pool_custom_cleanup_ok 458s [gw0] [ 13%] PASSED tests/db_pool_test.py::test_raw_pool_custom_cleanup_ok 458s tests/db_pool_test.py::test_raw_pool_custom_cleanup_arg_error 458s [gw0] [ 13%] PASSED tests/db_pool_test.py::test_raw_pool_custom_cleanup_arg_error 458s tests/db_pool_test.py::test_raw_pool_custom_cleanup_fatal 458s [gw0] [ 13%] PASSED tests/db_pool_test.py::test_raw_pool_custom_cleanup_fatal 458s tests/db_pool_test.py::test_raw_pool_clear_update_current_size 458s [gw0] [ 13%] PASSED tests/db_pool_test.py::test_raw_pool_clear_update_current_size 458s tests/db_pool_test.py::Test01MysqlTpool::test_bool 458s [gw0] [ 14%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_bool 458s tests/db_pool_test.py::Test01MysqlTpool::test_close_does_a_put 458s [gw0] [ 14%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_close_does_a_put 458s tests/db_pool_test.py::Test01MysqlTpool::test_connecting 458s [gw0] [ 14%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_connecting 458s tests/db_pool_test.py::Test01MysqlTpool::test_connection_is_clean_after_put 458s [gw0] [ 14%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_connection_is_clean_after_put 458s tests/db_pool_test.py::Test01MysqlTpool::test_create_cursor 458s [gw0] [ 14%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_create_cursor 458s tests/db_pool_test.py::Test01MysqlTpool::test_put_doesnt_double_wrap 458s [gw0] [ 14%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_put_doesnt_double_wrap 458s tests/db_pool_test.py::Test01MysqlTpool::test_put_none 458s [gw0] [ 14%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_put_none 458s tests/db_pool_test.py::Test01MysqlTpool::test_raising_create 458s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_raising_create 458s tests/db_pool_test.py::Test01MysqlTpool::test_returns_immediately 458s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_returns_immediately 458s tests/db_pool_test.py::Test01MysqlTpool::test_run_bad_query 458s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_run_bad_query 458s tests/db_pool_test.py::Test01MysqlTpool::test_run_query 458s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_run_query 458s tests/db_pool_test.py::Test01MysqlTpool::test_safe_close 458s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_safe_close 458s tests/db_pool_test.py::Test01MysqlTpool::test_unwrap_connection 458s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_unwrap_connection 458s tests/db_pool_test.py::Test01MysqlTpool::test_visibility_from_other_connections 458s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_visibility_from_other_connections 458s tests/db_pool_test.py::Test01MysqlTpool::test_waiters_get_woken 458s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_waiters_get_woken 458s tests/db_pool_test.py::Test01MysqlTpool::test_zero_max_age 458s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_zero_max_age 458s tests/db_pool_test.py::Test01MysqlTpool::test_zero_max_idle 458s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_zero_max_idle 458s tests/db_pool_test.py::Test02MysqlRaw::test_bool 458s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_bool 458s tests/db_pool_test.py::Test02MysqlRaw::test_close_does_a_put 458s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_close_does_a_put 458s tests/db_pool_test.py::Test02MysqlRaw::test_connecting 458s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_connecting 458s tests/db_pool_test.py::Test02MysqlRaw::test_connection_is_clean_after_put 458s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_connection_is_clean_after_put 458s tests/db_pool_test.py::Test02MysqlRaw::test_create_cursor 458s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_create_cursor 458s tests/db_pool_test.py::Test02MysqlRaw::test_put_doesnt_double_wrap 458s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_put_doesnt_double_wrap 458s tests/db_pool_test.py::Test02MysqlRaw::test_put_none 458s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_put_none 458s tests/db_pool_test.py::Test02MysqlRaw::test_raising_create 458s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_raising_create 458s tests/db_pool_test.py::Test02MysqlRaw::test_returns_immediately 458s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_returns_immediately 458s tests/db_pool_test.py::Test02MysqlRaw::test_run_bad_query 458s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_run_bad_query 458s tests/db_pool_test.py::Test02MysqlRaw::test_run_query 458s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_run_query 458s tests/db_pool_test.py::Test02MysqlRaw::test_safe_close 458s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_safe_close 458s tests/db_pool_test.py::Test02MysqlRaw::test_unwrap_connection 458s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_unwrap_connection 458s tests/db_pool_test.py::Test02MysqlRaw::test_visibility_from_other_connections 458s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_visibility_from_other_connections 458s tests/db_pool_test.py::Test02MysqlRaw::test_waiters_get_woken 458s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_waiters_get_woken 458s tests/db_pool_test.py::Test02MysqlRaw::test_zero_max_age 458s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_zero_max_age 458s tests/db_pool_test.py::Test02MysqlRaw::test_zero_max_idle 458s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_zero_max_idle 458s tests/db_pool_test.py::Test01Psycopg2Tpool::test_bool 458s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_bool 458s tests/db_pool_test.py::Test01Psycopg2Tpool::test_close_does_a_put 458s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_close_does_a_put 458s tests/db_pool_test.py::Test01Psycopg2Tpool::test_connecting 458s [gw0] [ 19%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_connecting 459s tests/greenio_test.py::TestGreenSocket::test_del_closes_socket 459s [gw0] [ 19%] PASSED tests/greenio_test.py::TestGreenSocket::test_del_closes_socket 459s tests/greenio_test.py::TestGreenSocket::test_dup_nonblocking 459s [gw0] [ 19%] PASSED tests/greenio_test.py::TestGreenSocket::test_dup_nonblocking 459s tests/greenio_test.py::TestGreenSocket::test_full_duplex 459s [gw1] [ 19%] PASSED tests/env_test.py::test_tpool_zero 459s tests/event_test.py::TestEvent::test_double_exception 459s [gw1] [ 19%] PASSED tests/event_test.py::TestEvent::test_double_exception 460s tests/event_test.py::TestEvent::test_multiple_waiters 460s [gw0] [ 19%] PASSED tests/greenio_test.py::TestGreenSocket::test_full_duplex 460s tests/greenio_test.py::TestGreenSocket::test_invalid_connection 460s [gw1] [ 19%] PASSED tests/event_test.py::TestEvent::test_multiple_waiters 460s tests/event_test.py::TestEvent::test_multiple_waiters_with_exception 460s [gw0] [ 20%] PASSED tests/greenio_test.py::TestGreenSocket::test_invalid_connection 460s tests/greenio_test.py::TestGreenSocket::test_nonblocking_accept_mark_as_reopened 460s [gw1] [ 20%] PASSED tests/event_test.py::TestEvent::test_multiple_waiters_with_exception 460s tests/event_test.py::TestEvent::test_reset 460s [gw0] [ 20%] PASSED tests/greenio_test.py::TestGreenSocket::test_nonblocking_accept_mark_as_reopened 460s tests/greenio_test.py::TestGreenSocket::test_raised_multiple_readers 460s [gw1] [ 20%] PASSED tests/event_test.py::TestEvent::test_reset 460s tests/event_test.py::TestEvent::test_waiting_for_event 460s [gw1] [ 20%] PASSED tests/event_test.py::TestEvent::test_waiting_for_event 460s [gw0] [ 20%] PASSED tests/greenio_test.py::TestGreenSocket::test_raised_multiple_readers 460s tests/greenio_test.py::TestGreenSocket::test_recv_into_timeout 460s tests/event_test.py::test_wait_timeout_ok 461s [gw1] [ 20%] PASSED tests/event_test.py::test_wait_timeout_ok 461s tests/event_test.py::test_wait_timeout_exceed 461s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_recv_into_timeout 461s tests/greenio_test.py::TestGreenSocket::test_recv_timeout 461s [gw1] [ 21%] PASSED tests/event_test.py::test_wait_timeout_exceed 461s tests/green_http_test.py::test_green_http_doesnt_change_original_module 461s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_recv_timeout 461s tests/greenio_test.py::TestGreenSocket::test_recvfrom_into_timeout 461s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_recvfrom_into_timeout 462s tests/greenio_test.py::TestGreenSocket::test_recvfrom_timeout 462s [gw1] [ 21%] PASSED tests/green_http_test.py::test_green_http_doesnt_change_original_module 462s tests/green_http_test.py::test_green_httplib_doesnt_change_original_module 462s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_recvfrom_timeout 462s tests/greenio_test.py::TestGreenSocket::test_send_timeout 462s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_send_timeout 462s tests/greenio_test.py::TestGreenSocket::test_sendall 462s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_sendall 463s tests/greenio_test.py::TestGreenSocket::test_sendall_timeout 463s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_sendall_timeout 463s tests/greenio_test.py::TestGreenSocket::test_shutdown_safe 463s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_shutdown_safe 463s tests/greenio_test.py::TestGreenSocket::test_skip_nonblocking 463s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_skip_nonblocking 463s tests/greenio_test.py::TestGreenSocket::test_socketpair_select 463s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_socketpair_select 463s tests/greenio_test.py::TestGreenSocket::test_sockopt_interface 463s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_sockopt_interface 463s tests/greenio_test.py::TestGreenSocket::test_timeout_and_final_write 463s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_timeout_and_final_write 464s tests/greenio_test.py::TestGreenSocket::test_wrap_socket 464s [gw1] [ 23%] PASSED tests/green_http_test.py::test_green_httplib_doesnt_change_original_module 464s tests/green_http_test.py::test_http_request_encode_chunked_kwarg 464s [gw1] [ 23%] PASSED tests/green_http_test.py::test_http_request_encode_chunked_kwarg 464s tests/green_profile_test.py::test_green_profile_basic 464s [gw1] [ 23%] PASSED tests/green_profile_test.py::test_green_profile_basic 464s tests/green_select_test.py::test_select_mark_file_as_reopened 464s [gw0] [ 23%] PASSED tests/greenio_test.py::TestGreenSocket::test_wrap_socket 464s tests/greenio_test.py::TestGreenSocket::test_zero_timeout_and_back 464s [gw0] [ 23%] PASSED tests/greenio_test.py::TestGreenSocket::test_zero_timeout_and_back 464s tests/greenio_test.py::test_get_fileno_of_a_socket_works 464s [gw0] [ 23%] PASSED tests/greenio_test.py::test_get_fileno_of_a_socket_works 464s tests/greenio_test.py::test_get_fileno_of_an_int_works 464s [gw0] [ 23%] PASSED tests/greenio_test.py::test_get_fileno_of_an_int_works 464s tests/greenio_test.py::test_get_fileno_of_wrong_type_fails 464s [gw0] [ 23%] PASSED tests/greenio_test.py::test_get_fileno_of_wrong_type_fails 464s tests/greenio_test.py::test_get_fileno_of_a_socket_with_fileno_returning_wrong_type_fails 464s [gw0] [ 24%] PASSED tests/greenio_test.py::test_get_fileno_of_a_socket_with_fileno_returning_wrong_type_fails 464s tests/greenio_test.py::TestGreenPipe::test_pip_read_until_end 464s [gw0] [ 24%] FAILED tests/greenio_test.py::TestGreenPipe::test_pip_read_until_end 464s tests/greenio_test.py::TestGreenPipe::test_pipe 464s [gw1] [ 24%] PASSED tests/green_select_test.py::test_select_mark_file_as_reopened 465s tests/greendns_test.py::TestHostsResolver::test_default_fname 465s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_default_fname 465s tests/greendns_test.py::TestHostsResolver::test_getaliases 465s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_getaliases 465s tests/greendns_test.py::TestHostsResolver::test_getaliases_fqdn 465s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_getaliases_fqdn 465s tests/greendns_test.py::TestHostsResolver::test_getaliases_unknown 465s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_getaliases_unknown 465s tests/greendns_test.py::TestHostsResolver::test_hosts_case_insensitive 465s [gw0] [ 25%] FAILED tests/greenio_test.py::TestGreenPipe::test_pipe 465s tests/greenio_test.py::TestGreenPipe::test_pipe_read 465s [gw1] [ 25%] PASSED tests/greendns_test.py::TestHostsResolver::test_hosts_case_insensitive 465s tests/greendns_test.py::TestHostsResolver::test_load_no_contents 465s [gw1] [ 25%] PASSED tests/greendns_test.py::TestHostsResolver::test_load_no_contents 466s tests/greendns_test.py::TestHostsResolver::test_load_v4_v6_cname_aliases 466s [gw0] [ 25%] FAILED tests/greenio_test.py::TestGreenPipe::test_pipe_read 466s tests/greenio_test.py::TestGreenPipe::test_pipe_read_unbuffered 466s [gw1] [ 25%] PASSED tests/greendns_test.py::TestHostsResolver::test_load_v4_v6_cname_aliases 466s tests/greendns_test.py::TestHostsResolver::test_load_v6_link_local 466s [gw1] [ 25%] PASSED tests/greendns_test.py::TestHostsResolver::test_load_v6_link_local 466s tests/greendns_test.py::TestHostsResolver::test_query_A 466s [gw1] [ 25%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_A 466s tests/greendns_test.py::TestHostsResolver::test_query_AAAA 466s [gw0] [ 26%] PASSED tests/greenio_test.py::TestGreenPipe::test_pipe_read_unbuffered 466s tests/greenio_test.py::TestGreenPipe::test_pipe_writes_large_messages 466s [gw1] [ 26%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_AAAA 466s tests/greendns_test.py::TestHostsResolver::test_query_CNAME 466s [gw1] [ 26%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_CNAME 467s tests/greendns_test.py::TestHostsResolver::test_query_ans_types 467s [gw1] [ 26%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_ans_types 467s tests/greendns_test.py::TestHostsResolver::test_query_unknown_no_raise 467s [gw1] [ 26%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_unknown_no_raise 467s tests/greendns_test.py::TestHostsResolver::test_query_unknown_raises 467s [gw1] [ 26%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_unknown_raises 467s tests/greendns_test.py::TestHostsResolver::test_query_unknown_type 467s [gw0] [ 26%] FAILED tests/greenio_test.py::TestGreenPipe::test_pipe_writes_large_messages 467s tests/greenio_test.py::TestGreenPipe::test_seek_on_buffered_pipe 467s [gw1] [ 27%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_unknown_type 467s tests/greendns_test.py::TestHostsResolver::test_readlines_lines 467s [gw0] [ 27%] PASSED tests/greenio_test.py::TestGreenPipe::test_seek_on_buffered_pipe 467s tests/greenio_test.py::TestGreenPipe::test_truncate 467s [gw0] [ 27%] PASSED tests/greenio_test.py::TestGreenPipe::test_truncate 467s [gw1] [ 27%] PASSED tests/greendns_test.py::TestHostsResolver::test_readlines_lines 467s tests/greendns_test.py::TestHostsResolver::test_readlines_missing_file 467s tests/greenio_test.py::TestGreenIoLong::test_multiple_readers 467s [gw1] [ 27%] PASSED tests/greendns_test.py::TestHostsResolver::test_readlines_missing_file 468s tests/greendns_test.py::TestUdp::test_udp_ipv4 468s [gw1] [ 27%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv4 468s tests/greendns_test.py::TestUdp::test_udp_ipv4_timeout 468s [gw1] [ 27%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv4_timeout 468s tests/greendns_test.py::TestUdp::test_udp_ipv4_wrong_addr 468s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv4_wrong_addr 469s tests/greendns_test.py::TestUdp::test_udp_ipv4_wrong_addr_ignore 469s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv4_wrong_addr_ignore 469s tests/greendns_test.py::TestUdp::test_udp_ipv6 469s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6 469s tests/greendns_test.py::TestUdp::test_udp_ipv6_addr_zeroes 469s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6_addr_zeroes 469s tests/greendns_test.py::TestUdp::test_udp_ipv6_timeout 469s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6_timeout 469s tests/greendns_test.py::TestUdp::test_udp_ipv6_wrong_addr 469s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6_wrong_addr 469s tests/greendns_test.py::TestUdp::test_udp_ipv6_wrong_addr_ignore 469s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6_wrong_addr_ignore 469s tests/greendns_test.py::TestProxyResolver::test_getaliases 469s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_getaliases 469s tests/greendns_test.py::TestProxyResolver::test_getaliases_fqdn 469s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_getaliases_fqdn 469s tests/greendns_test.py::TestProxyResolver::test_getaliases_nxdomain 469s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_getaliases_nxdomain 469s tests/greendns_test.py::TestProxyResolver::test_hosts 469s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_hosts 470s tests/greendns_test.py::TestProxyResolver::test_hosts_noanswer 470s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_hosts_noanswer 470s tests/greendns_test.py::TestProxyResolver::test_noanswer 470s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_noanswer 470s tests/greendns_test.py::TestProxyResolver::test_noanswer_hosts 470s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_noanswer_hosts 470s tests/greendns_test.py::TestProxyResolver::test_nxdomain 470s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_nxdomain 470s tests/greendns_test.py::TestProxyResolver::test_resolver 470s [gw1] [ 30%] PASSED tests/greendns_test.py::TestProxyResolver::test_resolver 470s tests/greendns_test.py::TestResolve::test_A 470s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_A 470s tests/greendns_test.py::TestResolve::test_AAAA 470s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_AAAA 470s tests/greendns_test.py::TestResolve::test_exc 470s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_exc 470s tests/greendns_test.py::TestResolve::test_noraise_noanswer 470s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_noraise_noanswer 470s tests/greendns_test.py::TestResolve::test_noraise_nxdomain 470s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_noraise_nxdomain 470s tests/greendns_test.py::TestResolve::test_timeout 470s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_timeout 470s tests/greendns_test.py::TestResolve::test_unknown_rdtype 470s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolve::test_unknown_rdtype 470s tests/greendns_test.py::TestResolveCname::test_no_answer 470s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolveCname::test_no_answer 470s tests/greendns_test.py::TestResolveCname::test_nodata 470s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolveCname::test_nodata 470s tests/greendns_test.py::TestResolveCname::test_success 470s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolveCname::test_success 470s tests/greendns_test.py::TestResolveCname::test_timeout 470s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolveCname::test_timeout 470s tests/greendns_test.py::TestGetaddrinfo::test_AI_ADDRCONFIG 470s [gw1] [ 31%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_AI_ADDRCONFIG 470s tests/greendns_test.py::TestGetaddrinfo::test_AI_ADDRCONFIG_noaddr 470s [gw1] [ 31%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_AI_ADDRCONFIG_noaddr 470s tests/greendns_test.py::TestGetaddrinfo::test_canonname 470s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_canonname 470s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo 470s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo 470s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_bytes 470s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_bytes 470s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_ans_with_error 470s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_ans_with_error 470s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_ans_with_timeout 470s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_ans_with_timeout 470s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_dns_error 470s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_dns_error 470s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_timeout 470s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_timeout 470s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_idn 470s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_idn 470s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_inet 470s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_inet 471s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_inet6 471s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_inet6 471s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_only_a_ans 471s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_only_a_ans 471s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_only_aaaa_ans 471s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_only_aaaa_ans 471s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_type_parameter 471s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_type_parameter 471s tests/greendns_test.py::TestGetaddrinfo::test_host_none 471s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_host_none 471s tests/greendns_test.py::TestGetaddrinfo::test_host_none_passive 471s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_host_none_passive 471s tests/greendns_test.py::TestGetaddrinfo::test_noport 471s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_noport 471s tests/greendns_test.py::TestGetaddrinfo::test_numerichost 471s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_numerichost 471s tests/greendns_test.py::TestGetaddrinfo::test_numericserv 471s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_numericserv 471s tests/greendns_test.py::TestGetaddrinfo::test_v4mapped 471s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_v4mapped 471s tests/greendns_test.py::TestGetaddrinfo::test_v4mapped_all 471s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_v4mapped_all 471s tests/greendns_test.py::TestIsIpAddr::test_isv4 471s [gw1] [ 34%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv4 471s tests/greendns_test.py::TestIsIpAddr::test_isv4_false 471s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv4_false 471s tests/greendns_test.py::TestIsIpAddr::test_isv4_none 471s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv4_none 471s tests/greendns_test.py::TestIsIpAddr::test_isv6 471s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv6 471s tests/greendns_test.py::TestIsIpAddr::test_isv6_invalid 471s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv6_invalid 471s tests/greendns_test.py::TestIsIpAddr::test_isv6_none 472s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv6_none 472s tests/greendns_test.py::TestIsIpAddr::test_none 472s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_none 472s tests/greendns_test.py::TestIsIpAddr::test_v4 472s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_v4 472s tests/greendns_test.py::TestIsIpAddr::test_v4_illegal 472s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_v4_illegal 472s tests/greendns_test.py::TestIsIpAddr::test_v6_addr 472s [gw1] [ 36%] PASSED tests/greendns_test.py::TestIsIpAddr::test_v6_addr 472s tests/greendns_test.py::TestGethostbyname::test_ipaddr 472s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname::test_ipaddr 472s tests/greendns_test.py::TestGethostbyname::test_name 472s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname::test_name 472s tests/greendns_test.py::TestGetaliases::test_getaliases 472s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGetaliases::test_getaliases 472s tests/greendns_test.py::TestGethostbyname_ex::test_ipaddr 472s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname_ex::test_ipaddr 472s tests/greendns_test.py::TestGethostbyname_ex::test_multiple_addrs 472s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname_ex::test_multiple_addrs 472s tests/greendns_test.py::TestGethostbyname_ex::test_name 472s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname_ex::test_name 472s tests/greendns_test.py::TestRaiseErrors::test_raise_new_error 472s [gw1] [ 37%] PASSED tests/greendns_test.py::TestRaiseErrors::test_raise_new_error 474s tests/greendns_test.py::test_reverse_name 474s [gw1] [ 37%] PASSED tests/greendns_test.py::test_reverse_name 474s tests/greendns_test.py::test_proxy_resolve_unqualified 474s [gw1] [ 37%] PASSED tests/greendns_test.py::test_proxy_resolve_unqualified 474s tests/greendns_test.py::test_hosts_priority 474s [gw1] [ 37%] PASSED tests/greendns_test.py::test_hosts_priority 474s tests/greendns_test.py::test_hosts_no_network 474s [gw1] [ 37%] PASSED tests/greendns_test.py::test_hosts_no_network 475s tests/greendns_test.py::test_import_rdtypes_then_eventlet 475s [gw1] [ 37%] PASSED tests/greendns_test.py::test_import_rdtypes_then_eventlet 476s tests/greenio_test.py::TestGreenSocket::test_accept_timeout 476s [gw1] [ 37%] PASSED tests/greenio_test.py::TestGreenSocket::test_accept_timeout 476s tests/greenio_test.py::TestGreenSocket::test_blocking_accept_mark_as_reopened 476s [gw1] [ 38%] PASSED tests/greenio_test.py::TestGreenSocket::test_blocking_accept_mark_as_reopened 476s tests/greenio_test.py::TestGreenSocket::test_close_with_makefile 476s [gw1] [ 38%] PASSED tests/greenio_test.py::TestGreenSocket::test_close_with_makefile 476s tests/greenio_test.py::TestGreenSocket::test_closure 476s [gw1] [ 38%] SKIPPED tests/greenio_test.py::TestGreenSocket::test_closure 476s tests/greenio_test.py::TestGreenSocket::test_datagram_socket_operations_work 476s [gw1] [ 38%] PASSED tests/greenio_test.py::TestGreenSocket::test_datagram_socket_operations_work 476s tests/greenio_test.py::TestGreenSocket::test_default_nonblocking 476s [gw1] [ 38%] PASSED tests/greenio_test.py::TestGreenSocket::test_default_nonblocking 477s tests/mysqldb_test.py::TestMySQLdb::test_connecting_annoyingly 477s [gw1] [ 38%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_connecting_annoyingly 477s tests/mysqldb_test.py::TestMySQLdb::test_create_cursor 477s [gw1] [ 38%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_create_cursor 477s tests/mysqldb_test.py::TestMySQLdb::test_module_attributes 477s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_module_attributes 477s tests/mysqldb_test.py::TestMySQLdb::test_run_bad_query 477s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_run_bad_query 477s tests/mysqldb_test.py::TestMySQLdb::test_run_query 477s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_run_query 477s tests/mysqldb_test.py::TestMySQLdb::test_visibility_from_other_connections 477s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_visibility_from_other_connections 477s tests/mysqldb_test.py::TestMySQLdb::test_yields 477s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_yields 477s tests/mysqldb_test.py::TestMonkeyPatch::test_monkey_patching 477s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMonkeyPatch::test_monkey_patching 477s tests/not_asyncio_test.py::test_spawn_from_coroutine_errors 477s [gw1] [ 39%] PASSED tests/not_asyncio_test.py::test_spawn_from_coroutine_errors 477s tests/openssl_test.py::test_import 477s [gw1] [ 40%] PASSED tests/openssl_test.py::test_import 477s tests/os_test.py::test_pathlib_open_issue_534 477s [gw1] [ 40%] PASSED tests/os_test.py::test_pathlib_open_issue_534 478s tests/os_test.py::test_os_read_nonblocking 478s [gw0] [ 40%] FAILED tests/greenio_test.py::TestGreenIoLong::test_multiple_readers 478s [gw0] [ 40%] ERROR tests/greenio_test.py::TestGreenIoLong::test_multiple_readers 478s tests/greenio_test.py::test_set_nonblocking 478s [gw0] [ 40%] PASSED tests/greenio_test.py::test_set_nonblocking 478s tests/greenio_test.py::test_socket_del_fails_gracefully_when_not_fully_initialized 478s [gw0] [ 40%] PASSED tests/greenio_test.py::test_socket_del_fails_gracefully_when_not_fully_initialized 478s tests/greenio_test.py::test_double_close_219 478s [gw1] [ 40%] PASSED tests/os_test.py::test_os_read_nonblocking 480s tests/os_test.py::test_os_write_nonblocking 480s [gw0] [ 40%] PASSED tests/greenio_test.py::test_double_close_219 480s tests/greenio_test.py::test_partial_write_295 480s [gw0] [ 41%] PASSED tests/greenio_test.py::test_partial_write_295 480s tests/greenio_test.py::test_socket_file_read_non_int 480s [gw0] [ 41%] PASSED tests/greenio_test.py::test_socket_file_read_non_int 480s tests/greenio_test.py::test_pipe_context 480s [gw0] [ 41%] FAILED tests/greenio_test.py::test_pipe_context 481s tests/greenio_test.py::test_greenpipe_write 481s [gw0] [ 41%] FAILED tests/greenio_test.py::test_greenpipe_write 481s tests/greenio_test.py::test_greenpipe_append 481s [gw0] [ 41%] FAILED tests/greenio_test.py::test_greenpipe_append 481s tests/greenio_test.py::test_greenpipe_read_overwrite 481s [gw0] [ 41%] FAILED tests/greenio_test.py::test_greenpipe_read_overwrite 482s tests/greenio_test.py::test_greenpipe_write_plus 482s [gw0] [ 41%] FAILED tests/greenio_test.py::test_greenpipe_write_plus 482s tests/greenio_test.py::test_greenpipe_append_plus 482s [gw1] [ 41%] PASSED tests/os_test.py::test_os_write_nonblocking 482s tests/patcher_psycopg_test.py::PatchingPsycopg::test_psycopg_patched 482s [gw0] [ 42%] FAILED tests/greenio_test.py::test_greenpipe_append_plus 482s tests/greenpool_test.py::GreenPool::test_empty_imap 482s [gw1] [ 42%] SKIPPED tests/patcher_psycopg_test.py::PatchingPsycopg::test_psycopg_patched 482s tests/patcher_test.py::ImportPatched::test_patch_a_module 483s [gw0] [ 42%] PASSED tests/greenpool_test.py::GreenPool::test_empty_imap 483s tests/greenpool_test.py::GreenPool::test_exceptions 483s [gw0] [ 42%] PASSED tests/greenpool_test.py::GreenPool::test_exceptions 483s tests/greenpool_test.py::GreenPool::test_imap 483s [gw0] [ 42%] PASSED tests/greenpool_test.py::GreenPool::test_imap 483s tests/greenpool_test.py::GreenPool::test_imap_multi_args 483s [gw0] [ 42%] PASSED tests/greenpool_test.py::GreenPool::test_imap_multi_args 483s tests/greenpool_test.py::GreenPool::test_imap_nonefunc 483s [gw0] [ 42%] PASSED tests/greenpool_test.py::GreenPool::test_imap_nonefunc 484s tests/greenpool_test.py::GreenPool::test_imap_raises 484s [gw0] [ 43%] PASSED tests/greenpool_test.py::GreenPool::test_imap_raises 484s tests/greenpool_test.py::GreenPool::test_multiple_coros 484s [gw0] [ 43%] PASSED tests/greenpool_test.py::GreenPool::test_multiple_coros 484s tests/greenpool_test.py::GreenPool::test_pool_smash 484s [gw0] [ 43%] PASSED tests/greenpool_test.py::GreenPool::test_pool_smash 484s tests/greenpool_test.py::GreenPool::test_recursive_waitall 484s [gw1] [ 43%] PASSED tests/patcher_test.py::ImportPatched::test_patch_a_module 484s tests/patcher_test.py::test_import_patched_handles_sub_modules 484s [gw0] [ 43%] PASSED tests/greenpool_test.py::GreenPool::test_recursive_waitall 484s tests/greenpool_test.py::GreenPool::test_reentrant 484s [gw0] [ 43%] PASSED tests/greenpool_test.py::GreenPool::test_reentrant 484s tests/greenpool_test.py::GreenPool::test_resize 484s [gw0] [ 43%] PASSED tests/greenpool_test.py::GreenPool::test_resize 484s tests/greenpool_test.py::GreenPool::test_spawn 484s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_spawn 485s tests/greenpool_test.py::GreenPool::test_spawn_n 485s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_spawn_n 485s tests/greenpool_test.py::GreenPool::test_spawn_n_2 485s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_spawn_n_2 485s tests/greenpool_test.py::GreenPool::test_starmap 485s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_starmap 485s tests/greenpool_test.py::GreenPool::test_timer_cancel 485s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_timer_cancel 485s tests/greenpool_test.py::GreenPool::test_waitall_on_nothing 485s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_waitall_on_nothing 485s tests/greenpool_test.py::GreenPool::test_waiting 485s [gw1] [ 44%] PASSED tests/patcher_test.py::test_import_patched_handles_sub_modules 486s tests/patcher_test.py::MonkeyPatch::test_boolean 486s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPool::test_waiting 486s tests/greenpool_test.py::GreenPile::test_constructing_from_pool 486s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPile::test_constructing_from_pool 486s tests/greenpool_test.py::GreenPile::test_empty_pile 486s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPile::test_empty_pile 486s tests/greenpool_test.py::GreenPile::test_pile 486s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPile::test_pile 486s tests/greenpool_test.py::GreenPile::test_pile_spawn_times_out 486s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPile::test_pile_spawn_times_out 486s tests/greenpool_test.py::test_greenpool_type_check 486s [gw0] [ 45%] PASSED tests/greenpool_test.py::test_greenpool_type_check 487s tests/greenpool_test.py::Stress::test_imap_50 487s [gw1] [ 45%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean 489s tests/patcher_test.py::MonkeyPatch::test_boolean_all 489s [gw1] [ 46%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_all 491s tests/patcher_test.py::MonkeyPatch::test_boolean_all_negative 491s [gw1] [ 46%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_all_negative 493s tests/patcher_test.py::MonkeyPatch::test_boolean_all_single 493s [gw1] [ 46%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_all_single 494s tests/patcher_test.py::MonkeyPatch::test_boolean_double 494s [gw1] [ 46%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_double 496s tests/patcher_test.py::MonkeyPatch::test_boolean_negative 496s [gw1] [ 46%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_negative 497s tests/patcher_test.py::MonkeyPatch::test_boolean_negative2 497s [gw1] [ 46%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_negative2 499s tests/patcher_test.py::MonkeyPatch::test_boolean_single 499s [gw1] [ 46%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_single 501s tests/patcher_test.py::MonkeyPatch::test_conflicting_specifications 502s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_conflicting_specifications 503s tests/patcher_test.py::MonkeyPatch::test_early_patching 503s [gw0] [ 47%] PASSED tests/greenpool_test.py::Stress::test_imap_50 503s tests/greenpool_test.py::Stress::test_imap_500 503s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_early_patching 505s tests/patcher_test.py::MonkeyPatch::test_late_patching 505s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_late_patching 508s tests/patcher_test.py::MonkeyPatch::test_patched_modules 508s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_patched_modules 511s tests/patcher_test.py::MonkeyPatch::test_typeerror 511s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_typeerror 514s tests/patcher_test.py::Tpool::test_patched_thread 514s [gw1] [ 47%] PASSED tests/patcher_test.py::Tpool::test_patched_thread 516s tests/patcher_test.py::Tpool::test_simple 516s [gw1] [ 47%] PASSED tests/patcher_test.py::Tpool::test_simple 519s tests/patcher_test.py::Tpool::test_unpatched_thread 519s [gw1] [ 48%] PASSED tests/patcher_test.py::Tpool::test_unpatched_thread 521s tests/patcher_test.py::test_subprocess_after_monkey_patch 521s [gw1] [ 48%] PASSED tests/patcher_test.py::test_subprocess_after_monkey_patch 522s tests/patcher_test.py::Threading::test_greenlet 522s [gw0] [ 48%] PASSED tests/greenpool_test.py::Stress::test_imap_500 523s tests/greenpool_test.py::Stress::test_ordering_5 523s [gw1] [ 48%] PASSED tests/patcher_test.py::Threading::test_greenlet 524s tests/patcher_test.py::Threading::test_greenthread 524s [gw1] [ 48%] PASSED tests/patcher_test.py::Threading::test_greenthread 525s tests/patcher_test.py::Threading::test_keyerror 525s [gw0] [ 48%] PASSED tests/greenpool_test.py::Stress::test_ordering_5 527s tests/greenpool_test.py::Stress::test_ordering_50 527s [gw1] [ 48%] PASSED tests/patcher_test.py::Threading::test_keyerror 528s tests/patcher_test.py::Threading::test_tpool 528s [gw0] [ 49%] PASSED tests/greenpool_test.py::Stress::test_ordering_50 528s tests/greenpool_test.py::Stress::test_with_intpool 528s [gw0] [ 49%] PASSED tests/greenpool_test.py::Stress::test_with_intpool 528s tests/greenthread_test.py::Spawn::test_kill 528s [gw0] [ 49%] PASSED tests/greenthread_test.py::Spawn::test_kill 528s tests/greenthread_test.py::Spawn::test_kill_meth 528s [gw1] [ 49%] PASSED tests/patcher_test.py::Threading::test_tpool 528s tests/patcher_test.py::Os::test_waitpid 528s [gw0] [ 49%] PASSED tests/greenthread_test.py::Spawn::test_kill_meth 529s tests/greenthread_test.py::Spawn::test_kill_n 529s [gw0] [ 49%] PASSED tests/greenthread_test.py::Spawn::test_kill_n 529s tests/greenthread_test.py::Spawn::test_link 529s [gw0] [ 49%] PASSED tests/greenthread_test.py::Spawn::test_link 529s tests/greenthread_test.py::Spawn::test_link_after_exited 529s [gw0] [ 50%] PASSED tests/greenthread_test.py::Spawn::test_link_after_exited 529s tests/greenthread_test.py::Spawn::test_link_relinks 529s [gw0] [ 50%] PASSED tests/greenthread_test.py::Spawn::test_link_relinks 530s tests/greenthread_test.py::Spawn::test_n 530s [gw0] [ 50%] PASSED tests/greenthread_test.py::Spawn::test_n 530s tests/greenthread_test.py::Spawn::test_simple 530s [gw0] [ 50%] PASSED tests/greenthread_test.py::Spawn::test_simple 530s tests/greenthread_test.py::SpawnAfter::test_basic 530s [gw0] [ 50%] PASSED tests/greenthread_test.py::SpawnAfter::test_basic 530s tests/greenthread_test.py::SpawnAfter::test_cancel 530s [gw0] [ 50%] PASSED tests/greenthread_test.py::SpawnAfter::test_cancel 530s tests/greenthread_test.py::SpawnAfter::test_cancel_already_started 530s [gw1] [ 50%] PASSED tests/patcher_test.py::Os::test_waitpid 530s tests/patcher_test.py::GreenThreadWrapper::test_ident 530s [gw0] [ 51%] PASSED tests/greenthread_test.py::SpawnAfter::test_cancel_already_started 530s tests/greenthread_test.py::SpawnAfter::test_kill 530s [gw0] [ 51%] PASSED tests/greenthread_test.py::SpawnAfter::test_kill 530s tests/greenthread_test.py::SpawnAfter::test_kill_already_started 530s [gw0] [ 51%] PASSED tests/greenthread_test.py::SpawnAfter::test_kill_already_started 530s tests/greenthread_test.py::SpawnAfter::test_kill_meth 530s [gw0] [ 51%] PASSED tests/greenthread_test.py::SpawnAfter::test_kill_meth 530s tests/greenthread_test.py::SpawnAfter::test_kill_n 530s [gw0] [ 51%] PASSED tests/greenthread_test.py::SpawnAfter::test_kill_n 531s tests/greenthread_test.py::SpawnAfter::test_link 531s [gw0] [ 51%] PASSED tests/greenthread_test.py::SpawnAfter::test_link 531s tests/greenthread_test.py::SpawnAfter::test_link_after_exited 531s [gw0] [ 51%] PASSED tests/greenthread_test.py::SpawnAfter::test_link_after_exited 531s tests/greenthread_test.py::SpawnAfter::test_link_relinks 531s [gw0] [ 52%] PASSED tests/greenthread_test.py::SpawnAfter::test_link_relinks 531s tests/greenthread_test.py::SpawnAfter::test_n 531s [gw0] [ 52%] PASSED tests/greenthread_test.py::SpawnAfter::test_n 532s tests/greenthread_test.py::SpawnAfter::test_simple 532s [gw0] [ 52%] PASSED tests/greenthread_test.py::SpawnAfter::test_simple 532s tests/greenthread_test.py::SpawnAfterLocal::test_spawn_is_not_cancelled 532s [gw0] [ 52%] PASSED tests/greenthread_test.py::SpawnAfterLocal::test_spawn_is_not_cancelled 532s tests/greenthread_test.py::SpawnAfterLocal::test_timer_cancelled_upon_greenlet_exit 532s [gw1] [ 52%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_ident 532s tests/patcher_test.py::GreenThreadWrapper::test_is_alive 532s [gw0] [ 52%] PASSED tests/greenthread_test.py::SpawnAfterLocal::test_timer_cancelled_upon_greenlet_exit 533s tests/greenthread_test.py::SpawnAfterLocal::test_timer_fired 533s [gw0] [ 52%] PASSED tests/greenthread_test.py::SpawnAfterLocal::test_timer_fired 533s tests/hub_test.py::TestTimerCleanup::test_cancel_accumulated 533s [gw0] [ 52%] PASSED tests/hub_test.py::TestTimerCleanup::test_cancel_accumulated 533s tests/hub_test.py::TestTimerCleanup::test_cancel_immediate 533s [gw0] [ 53%] PASSED tests/hub_test.py::TestTimerCleanup::test_cancel_immediate 533s tests/hub_test.py::TestMultipleListenersCleanup::test_cleanup 533s [gw0] [ 53%] PASSED tests/hub_test.py::TestMultipleListenersCleanup::test_cleanup 533s tests/hub_test.py::TestScheduleCall::test_global 533s [gw0] [ 53%] PASSED tests/hub_test.py::TestScheduleCall::test_global 534s tests/hub_test.py::TestScheduleCall::test_local 534s [gw0] [ 53%] PASSED tests/hub_test.py::TestScheduleCall::test_local 534s tests/hub_test.py::TestScheduleCall::test_ordering 534s [gw0] [ 53%] PASSED tests/hub_test.py::TestScheduleCall::test_ordering 534s tests/hub_test.py::TestDebug::test_debug_listeners 534s [gw0] [ 53%] PASSED tests/hub_test.py::TestDebug::test_debug_listeners 534s [gw1] [ 53%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_is_alive 534s tests/hub_test.py::TestDebug::test_timer_exceptions 534s tests/patcher_test.py::GreenThreadWrapper::test_is_daemon 534s [gw0] [ 54%] PASSED tests/hub_test.py::TestDebug::test_timer_exceptions 535s tests/hub_test.py::TestExceptionInMainloop::test_sleep 535s [gw0] [ 54%] PASSED tests/hub_test.py::TestExceptionInMainloop::test_sleep 535s tests/hub_test.py::TestExceptionInGreenthread::test_exceptionleaks 535s [gw0] [ 54%] PASSED tests/hub_test.py::TestExceptionInGreenthread::test_exceptionleaks 535s tests/hub_test.py::TestExceptionInGreenthread::test_exceptionpreservation 535s [gw0] [ 54%] PASSED tests/hub_test.py::TestExceptionInGreenthread::test_exceptionpreservation 536s tests/hub_test.py::TestHubBlockingDetector::test_block_detect 536s [gw1] [ 54%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_is_daemon 536s tests/patcher_test.py::GreenThreadWrapper::test_join 536s [gw0] [ 54%] PASSED tests/hub_test.py::TestHubBlockingDetector::test_block_detect 536s tests/hub_test.py::TestHubBlockingDetector::test_block_detect_with_itimer 536s [gw0] [ 54%] SKIPPED tests/hub_test.py::TestHubBlockingDetector::test_block_detect_with_itimer 537s tests/hub_test.py::TestSuspend::test_suspend_doesnt_crash 537s [gw1] [ 55%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_join 538s tests/patcher_test.py::GreenThreadWrapper::test_name 538s [gw0] [ 55%] PASSED tests/hub_test.py::TestSuspend::test_suspend_doesnt_crash 538s tests/hub_test.py::test_repeated_select_bad_fd 538s [gw0] [ 55%] PASSED tests/hub_test.py::test_repeated_select_bad_fd 540s tests/hub_test.py::test_fork 540s [gw1] [ 55%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_name 540s tests/patcher_test.py::test_patcher_existing_locks_early 540s [gw0] [ 55%] PASSED tests/hub_test.py::test_fork 542s tests/hub_test.py::test_fork_simple 542s [gw1] [ 55%] PASSED tests/patcher_test.py::test_patcher_existing_locks_early 542s tests/patcher_test.py::test_patcher_existing_locks_late 542s [gw0] [ 55%] PASSED tests/hub_test.py::test_fork_simple 543s tests/hub_test.py::TestDeadRunLoop::test_kill 543s [gw0] [ 56%] PASSED tests/hub_test.py::TestDeadRunLoop::test_kill 544s tests/hub_test.py::TestDeadRunLoop::test_parent 544s [gw0] [ 56%] PASSED tests/hub_test.py::TestDeadRunLoop::test_parent 544s tests/hub_test.py::test_use_hub_class 544s [gw1] [ 56%] PASSED tests/patcher_test.py::test_patcher_existing_locks_late 544s tests/patcher_test.py::test_patcher_existing_locks_unlocked 544s [gw1] [ 56%] SKIPPED tests/patcher_test.py::test_patcher_existing_locks_unlocked 545s tests/patcher_test.py::test_patcher_existing_logging_module_lock 545s [gw0] [ 56%] PASSED tests/hub_test.py::test_use_hub_class 547s tests/hub_test.py::test_kqueue_unsupported 547s [gw1] [ 56%] PASSED tests/patcher_test.py::test_patcher_existing_logging_module_lock 547s tests/patcher_test.py::test_importlib_lock 547s [gw0] [ 56%] PASSED tests/hub_test.py::test_kqueue_unsupported 547s tests/mysqldb_test.py::TestMySQLdb::test_connecting 547s [gw0] [ 57%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_connecting 547s tests/queue_test.py::TestQueue::test_send_last 547s [gw0] [ 57%] PASSED tests/queue_test.py::TestQueue::test_send_last 547s tests/queue_test.py::TestQueue::test_task_done 547s [gw0] [ 57%] PASSED tests/queue_test.py::TestQueue::test_task_done 548s tests/queue_test.py::TestQueue::test_two_bogus_waiters 548s [gw0] [ 57%] PASSED tests/queue_test.py::TestQueue::test_two_bogus_waiters 548s tests/queue_test.py::TestQueue::test_two_waiters_one_dies 548s [gw0] [ 57%] PASSED tests/queue_test.py::TestQueue::test_two_waiters_one_dies 548s tests/queue_test.py::TestQueue::test_waiters_that_cancel 548s [gw0] [ 57%] PASSED tests/queue_test.py::TestQueue::test_waiters_that_cancel 548s tests/queue_test.py::TestQueue::test_waiting 548s [gw0] [ 57%] PASSED tests/queue_test.py::TestQueue::test_waiting 549s tests/queue_test.py::TestQueue::test_zero_length_queue_nonblocking_put 549s [gw0] [ 58%] PASSED tests/queue_test.py::TestQueue::test_zero_length_queue_nonblocking_put 549s tests/queue_test.py::TestQueue::test_zero_max_size 549s [gw1] [ 58%] PASSED tests/patcher_test.py::test_importlib_lock 549s tests/patcher_test.py::test_threading_condition 549s [gw0] [ 58%] PASSED tests/queue_test.py::TestQueue::test_zero_max_size 549s tests/queue_test.py::TestNoWait::test_get_nowait_simple 549s [gw0] [ 58%] PASSED tests/queue_test.py::TestNoWait::test_get_nowait_simple 550s tests/queue_test.py::TestNoWait::test_get_nowait_unlock 550s [gw0] [ 58%] PASSED tests/queue_test.py::TestNoWait::test_get_nowait_unlock 550s tests/queue_test.py::TestNoWait::test_put_nowait_simple 550s [gw0] [ 58%] PASSED tests/queue_test.py::TestNoWait::test_put_nowait_simple 550s tests/queue_test.py::TestNoWait::test_put_nowait_unlock 550s [gw0] [ 58%] PASSED tests/queue_test.py::TestNoWait::test_put_nowait_unlock 550s tests/queue_test.py::TestNoWait::test_wait_except 550s [gw0] [ 58%] PASSED tests/queue_test.py::TestNoWait::test_wait_except 551s tests/semaphore_test.py::TestSemaphore::test_bounded 551s [gw0] [ 59%] PASSED tests/semaphore_test.py::TestSemaphore::test_bounded 551s tests/semaphore_test.py::TestSemaphore::test_bounded_with_zero_limit 551s [gw0] [ 59%] PASSED tests/semaphore_test.py::TestSemaphore::test_bounded_with_zero_limit 551s tests/semaphore_test.py::TestSemaphore::test_non_blocking 551s [gw0] [ 59%] PASSED tests/semaphore_test.py::TestSemaphore::test_non_blocking 551s tests/semaphore_test.py::TestSemaphore::test_timeout 551s [gw1] [ 59%] PASSED tests/patcher_test.py::test_threading_condition 551s tests/patcher_test.py::test_threading_join 551s [gw0] [ 59%] PASSED tests/semaphore_test.py::TestSemaphore::test_timeout 551s tests/semaphore_test.py::TestSemaphore::test_timeout_non_blocking 551s [gw0] [ 59%] PASSED tests/semaphore_test.py::TestSemaphore::test_timeout_non_blocking 552s tests/semaphore_test.py::test_semaphore_contention 552s [gw0] [ 59%] PASSED tests/semaphore_test.py::test_semaphore_contention 552s tests/semaphore_test.py::test_semaphore_type_check 552s [gw0] [ 60%] PASSED tests/semaphore_test.py::test_semaphore_type_check 552s tests/socket_test.py::test_recv_type 552s [gw0] [ 60%] PASSED tests/socket_test.py::test_recv_type 552s tests/socket_test.py::test_recv_into_type 552s [gw0] [ 60%] PASSED tests/socket_test.py::test_recv_into_type 552s tests/socket_test.py::test_socket_api_family 552s [gw0] [ 60%] PASSED tests/socket_test.py::test_socket_api_family 552s tests/socket_test.py::test_getaddrinfo_ipv6_scope 552s [gw0] [ 60%] PASSED tests/socket_test.py::test_getaddrinfo_ipv6_scope 553s tests/socket_test.py::test_error_is_timeout 553s [gw0] [ 60%] PASSED tests/socket_test.py::test_error_is_timeout 553s tests/socket_test.py::test_connect_ex_success 553s [gw0] [ 60%] PASSED tests/socket_test.py::test_connect_ex_success 553s tests/ssl_test.py::SSLTest::test_client_check_hostname 553s [gw0] [ 61%] PASSED tests/ssl_test.py::SSLTest::test_client_check_hostname 555s tests/ssl_test.py::SSLTest::test_context_version_setters 555s [gw1] [ 61%] PASSED tests/patcher_test.py::test_threading_join 556s tests/patcher_test.py::test_socketserver_selectors 556s [gw0] [ 61%] PASSED tests/ssl_test.py::SSLTest::test_context_version_setters 556s tests/ssl_test.py::SSLTest::test_context_wrapped_accept 556s [gw0] [ 61%] PASSED tests/ssl_test.py::SSLTest::test_context_wrapped_accept 557s tests/ssl_test.py::SSLTest::test_duplex_response 557s [gw0] [ 61%] PASSED tests/ssl_test.py::SSLTest::test_duplex_response 557s tests/ssl_test.py::SSLTest::test_explicit_keys_accept 557s [gw0] [ 61%] PASSED tests/ssl_test.py::SSLTest::test_explicit_keys_accept 557s tests/ssl_test.py::SSLTest::test_greensslobject 557s [gw0] [ 61%] PASSED tests/ssl_test.py::SSLTest::test_greensslobject 557s tests/ssl_test.py::SSLTest::test_no_handshake_block_accept_loop 557s [gw1] [ 62%] PASSED tests/patcher_test.py::test_socketserver_selectors 558s tests/patcher_test.py::test_blocking_select_methods_are_deleted 558s [gw0] [ 62%] PASSED tests/ssl_test.py::SSLTest::test_no_handshake_block_accept_loop 558s tests/ssl_test.py::SSLTest::test_receiving_doesnt_block_if_there_is_already_decrypted_buffered_data 558s [gw0] [ 62%] PASSED tests/ssl_test.py::SSLTest::test_receiving_doesnt_block_if_there_is_already_decrypted_buffered_data 559s tests/ssl_test.py::SSLTest::test_recv_after_ssl_connect 559s [gw0] [ 62%] PASSED tests/ssl_test.py::SSLTest::test_recv_after_ssl_connect 559s tests/ssl_test.py::SSLTest::test_regression_gh_17 559s [gw0] [ 62%] PASSED tests/ssl_test.py::SSLTest::test_regression_gh_17 560s tests/ssl_test.py::SSLTest::test_sendall_cpu_usage 560s [gw1] [ 62%] PASSED tests/patcher_test.py::test_blocking_select_methods_are_deleted 560s tests/patcher_test.py::test_regular_file_readall 560s [gw0] [ 62%] PASSED tests/ssl_test.py::SSLTest::test_sendall_cpu_usage 560s tests/ssl_test.py::SSLTest::test_ssl_close 560s [gw0] [ 63%] PASSED tests/ssl_test.py::SSLTest::test_ssl_close 560s tests/ssl_test.py::SSLTest::test_ssl_connect 560s [gw0] [ 63%] PASSED tests/ssl_test.py::SSLTest::test_ssl_connect 560s tests/ssl_test.py::SSLTest::test_ssl_context 560s [gw0] [ 63%] PASSED tests/ssl_test.py::SSLTest::test_ssl_context 561s tests/ssl_test.py::SSLTest::test_ssl_unwrap 561s [gw0] [ 63%] PASSED tests/ssl_test.py::SSLTest::test_ssl_unwrap 561s tests/subprocess_test.py::test_subprocess_wait 561s [gw0] [ 63%] FAILED tests/subprocess_test.py::test_subprocess_wait 561s tests/subprocess_test.py::test_close_popen_stdin_with_close_fds 561s [gw0] [ 63%] PASSED tests/subprocess_test.py::test_close_popen_stdin_with_close_fds 561s tests/subprocess_test.py::test_universal_lines 561s [gw0] [ 63%] FAILED tests/subprocess_test.py::test_universal_lines 563s tests/subprocess_test.py::test_patched_communicate_290 563s [gw1] [ 64%] FAILED tests/patcher_test.py::test_regular_file_readall 564s tests/patcher_test.py::test_threading_current 564s [gw0] [ 64%] PASSED tests/subprocess_test.py::test_patched_communicate_290 564s tests/subprocess_test.py::test_check_call_without_timeout_works 564s [gw0] [ 64%] PASSED tests/subprocess_test.py::test_check_call_without_timeout_works 564s tests/subprocess_test.py::test_exception_identity 564s [gw1] [ 64%] PASSED tests/patcher_test.py::test_threading_current 565s tests/patcher_test.py::test_threadpoolexecutor 565s [gw0] [ 64%] PASSED tests/subprocess_test.py::test_exception_identity 565s tests/test__event.py::TestEvent::test_send 565s [gw0] [ 64%] PASSED tests/test__event.py::TestEvent::test_send 565s tests/test__event.py::TestEvent::test_send_exc 565s [gw0] [ 64%] PASSED tests/test__event.py::TestEvent::test_send_exc 566s tests/test__refcount.py::test_clean_exit 566s [gw0] [ 64%] PASSED tests/test__refcount.py::test_clean_exit 567s tests/test__refcount.py::test_timeout_exit 567s [gw1] [ 65%] PASSED tests/patcher_test.py::test_threadpoolexecutor 567s tests/patcher_test.py::test_builtin 567s [gw0] [ 65%] PASSED tests/test__refcount.py::test_timeout_exit 567s tests/test__socket_errors.py::TestSocketErrors::test_connection_refused 567s [gw0] [ 65%] PASSED tests/test__socket_errors.py::TestSocketErrors::test_connection_refused 568s tests/test__socket_errors.py::TestSocketErrors::test_timeout 568s [gw0] [ 65%] PASSED tests/test__socket_errors.py::TestSocketErrors::test_timeout 568s tests/test__socket_errors.py::TestSocketErrors::test_timeout_real_socket 568s [gw1] [ 65%] PASSED tests/patcher_test.py::test_builtin 569s tests/patcher_test.py::test_open_kwargs 569s [gw0] [ 65%] PASSED tests/test__socket_errors.py::TestSocketErrors::test_timeout_real_socket 569s tests/test__socket_errors.py::test_create_connection_refused 569s [gw0] [ 65%] PASSED tests/test__socket_errors.py::test_create_connection_refused 569s tests/test_infrastructure_tests.py::test_run_python_timeout 569s [gw0] [ 66%] PASSED tests/test_infrastructure_tests.py::test_run_python_timeout 569s tests/test_infrastructure_tests.py::test_run_python_pythonpath_extend 569s [gw0] [ 66%] PASSED tests/test_infrastructure_tests.py::test_run_python_pythonpath_extend 569s tests/thread_test.py::Locals::test_assignment 569s [gw0] [ 66%] PASSED tests/thread_test.py::Locals::test_assignment 570s tests/thread_test.py::Locals::test_calling_methods 570s [gw0] [ 66%] PASSED tests/thread_test.py::Locals::test_calling_methods 570s tests/thread_test.py::Locals::test_calls_init 570s [gw0] [ 66%] PASSED tests/thread_test.py::Locals::test_calls_init 570s tests/thread_test.py::Locals::test_no_leaking 570s [gw1] [ 66%] PASSED tests/patcher_test.py::test_open_kwargs 570s tests/patcher_test.py::test_patcher_existing_locks 570s [gw0] [ 66%] PASSED tests/thread_test.py::Locals::test_no_leaking 570s tests/thread_test.py::test_compat_lock_release 570s [gw0] [ 67%] PASSED tests/thread_test.py::test_compat_lock_release 570s tests/thread_test.py::test_reinit 570s [gw0] [ 67%] PASSED tests/thread_test.py::test_reinit 572s tests/thread_test.py::test_can_use_eventlet_in_os_threads 572s [gw0] [ 67%] PASSED tests/thread_test.py::test_can_use_eventlet_in_os_threads 573s tests/timeout_test.py::TestDirectRaise::test_direct_raise_class 573s [gw0] [ 67%] PASSED tests/timeout_test.py::TestDirectRaise::test_direct_raise_class 573s [gw1] [ 67%] PASSED tests/patcher_test.py::test_patcher_existing_locks 573s tests/patcher_test.py::test_patcher_existing_locks_exception 573s tests/timeout_test.py::TestDirectRaise::test_direct_raise_instance 573s [gw0] [ 67%] PASSED tests/timeout_test.py::TestDirectRaise::test_direct_raise_instance 573s tests/timeout_test.py::TestDirectRaise::test_repr 573s [gw0] [ 67%] PASSED tests/timeout_test.py::TestDirectRaise::test_repr 573s tests/timeout_test.py::TestWithTimeout::test_with_outer_timer 573s [gw0] [ 68%] PASSED tests/timeout_test.py::TestWithTimeout::test_with_outer_timer 573s tests/timeout_test.py::TestWithTimeout::test_with_timeout 573s [gw0] [ 68%] PASSED tests/timeout_test.py::TestWithTimeout::test_with_timeout 573s tests/timeout_test.py::test_is_timeout_attribute 573s [gw0] [ 68%] PASSED tests/timeout_test.py::test_is_timeout_attribute 574s tests/timeout_with_statement_test.py::Test::test_cancel_timer_inside_block 574s [gw0] [ 68%] PASSED tests/timeout_with_statement_test.py::Test::test_cancel_timer_inside_block 574s tests/timeout_with_statement_test.py::Test::test_cancellation 574s [gw0] [ 68%] PASSED tests/timeout_with_statement_test.py::Test::test_cancellation 574s tests/timeout_with_statement_test.py::Test::test_dummy_timer 574s [gw0] [ 68%] PASSED tests/timeout_with_statement_test.py::Test::test_dummy_timer 574s tests/timeout_with_statement_test.py::Test::test_nested_timeout 574s [gw0] [ 68%] PASSED tests/timeout_with_statement_test.py::Test::test_nested_timeout 574s [gw1] [ 69%] PASSED tests/patcher_test.py::test_patcher_existing_locks_exception 574s tests/patcher_test.py::test_patcher_threading_subclass_done 574s tests/timeout_with_statement_test.py::Test::test_raising_custom_exception 574s [gw0] [ 69%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_custom_exception 575s tests/timeout_with_statement_test.py::Test::test_raising_exc_tuple 575s [gw0] [ 69%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_exc_tuple 575s tests/timeout_with_statement_test.py::Test::test_raising_exception_class 575s [gw0] [ 69%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_exception_class 575s tests/timeout_with_statement_test.py::Test::test_raising_self 575s [gw0] [ 69%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_self 575s tests/timeout_with_statement_test.py::Test::test_raising_self_true 575s [gw0] [ 69%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_self_true 576s tests/timeout_with_statement_test.py::Test::test_ref 576s [gw0] [ 69%] PASSED tests/timeout_with_statement_test.py::Test::test_ref 576s tests/timeout_with_statement_test.py::Test::test_silent_block 576s [gw1] [ 70%] PASSED tests/patcher_test.py::test_patcher_threading_subclass_done 576s tests/pools_test.py::TestIntPool::test_blocks_on_pool 576s [gw1] [ 70%] PASSED tests/pools_test.py::TestIntPool::test_blocks_on_pool 576s tests/pools_test.py::TestIntPool::test_create_contention 576s [gw1] [ 70%] PASSED tests/pools_test.py::TestIntPool::test_create_contention 576s tests/pools_test.py::TestIntPool::test_exhaustion 576s [gw1] [ 70%] PASSED tests/pools_test.py::TestIntPool::test_exhaustion 576s tests/pools_test.py::TestIntPool::test_free 576s [gw1] [ 70%] PASSED tests/pools_test.py::TestIntPool::test_free 576s tests/pools_test.py::TestIntPool::test_integers 576s [gw1] [ 70%] PASSED tests/pools_test.py::TestIntPool::test_integers 576s tests/pools_test.py::TestIntPool::test_ordering 576s [gw1] [ 70%] PASSED tests/pools_test.py::TestIntPool::test_ordering 576s tests/pools_test.py::TestIntPool::test_put_with_timed_out_getters 576s [gw0] [ 70%] PASSED tests/timeout_with_statement_test.py::Test::test_silent_block 576s [gw1] [ 71%] PASSED tests/pools_test.py::TestIntPool::test_put_with_timed_out_getters 576s tests/timer_test.py::TestTimer::test_copy 576s [gw0] [ 71%] PASSED tests/timer_test.py::TestTimer::test_copy 576s tests/timer_test.py::TestTimer::test_schedule 576s tests/pools_test.py::TestIntPool::test_putting_to_queue 576s [gw0] [ 71%] PASSED tests/timer_test.py::TestTimer::test_schedule 576s tests/tpool_test.py::TestTpool::test_autowrap 576s [gw1] [ 71%] PASSED tests/pools_test.py::TestIntPool::test_putting_to_queue 576s tests/pools_test.py::TestIntPool::test_resize 576s [gw1] [ 71%] PASSED tests/pools_test.py::TestIntPool::test_resize 576s tests/pools_test.py::TestAbstract::test_abstract 576s [gw1] [ 71%] PASSED tests/pools_test.py::TestAbstract::test_abstract 576s tests/pools_test.py::TestIntPool2::test_something 576s [gw1] [ 71%] PASSED tests/pools_test.py::TestIntPool2::test_something 576s tests/pools_test.py::TestOrderAsStack::test_ordering 576s [gw1] [ 72%] PASSED tests/pools_test.py::TestOrderAsStack::test_ordering 576s tests/pools_test.py::TestCreateRaises::test_it 576s [gw1] [ 72%] PASSED tests/pools_test.py::TestCreateRaises::test_it 576s tests/queue_test.py::TestQueue::test_channel_send 576s [gw0] [ 72%] PASSED tests/tpool_test.py::TestTpool::test_autowrap 576s tests/tpool_test.py::TestTpool::test_autowrap_both 576s [gw1] [ 72%] PASSED tests/queue_test.py::TestQueue::test_channel_send 577s tests/queue_test.py::TestQueue::test_channel_sender_timing_out 577s [gw1] [ 72%] PASSED tests/queue_test.py::TestQueue::test_channel_sender_timing_out 577s tests/queue_test.py::TestQueue::test_channel_wait 577s [gw0] [ 72%] PASSED tests/tpool_test.py::TestTpool::test_autowrap_both 577s tests/tpool_test.py::TestTpool::test_autowrap_names 577s [gw1] [ 72%] PASSED tests/queue_test.py::TestQueue::test_channel_wait 577s tests/queue_test.py::TestQueue::test_channel_waiters 577s [gw1] [ 73%] PASSED tests/queue_test.py::TestQueue::test_channel_waiters 577s tests/queue_test.py::TestQueue::test_getting_before_sending 577s [gw0] [ 73%] PASSED tests/tpool_test.py::TestTpool::test_autowrap_names 577s tests/tpool_test.py::TestTpool::test_callable 577s [gw1] [ 73%] PASSED tests/queue_test.py::TestQueue::test_getting_before_sending 577s tests/queue_test.py::TestQueue::test_join_doesnt_block_when_queue_is_already_empty 577s [gw0] [ 73%] PASSED tests/tpool_test.py::TestTpool::test_callable 577s tests/tpool_test.py::TestTpool::test_callable_iterator 577s [gw1] [ 73%] PASSED tests/queue_test.py::TestQueue::test_join_doesnt_block_when_queue_is_already_empty 577s tests/queue_test.py::TestQueue::test_max_size 577s [gw1] [ 73%] PASSED tests/queue_test.py::TestQueue::test_max_size 578s tests/queue_test.py::TestQueue::test_multiple_waiters 578s [gw1] [ 73%] PASSED tests/queue_test.py::TestQueue::test_multiple_waiters 578s tests/queue_test.py::TestQueue::test_resize_down 578s [gw1] [ 74%] PASSED tests/queue_test.py::TestQueue::test_resize_down 578s tests/queue_test.py::TestQueue::test_resize_to_Unlimited 578s [gw0] [ 74%] PASSED tests/tpool_test.py::TestTpool::test_callable_iterator 578s tests/tpool_test.py::TestTpool::test_contention 578s [gw0] [ 74%] PASSED tests/tpool_test.py::TestTpool::test_contention 578s tests/tpool_test.py::TestTpool::test_eventlet_timeout 578s [gw1] [ 74%] PASSED tests/queue_test.py::TestQueue::test_resize_to_Unlimited 578s tests/queue_test.py::TestQueue::test_resize_up 578s [gw0] [ 74%] PASSED tests/tpool_test.py::TestTpool::test_eventlet_timeout 578s tests/tpool_test.py::TestTpool::test_killall 578s [gw1] [ 74%] PASSED tests/queue_test.py::TestQueue::test_resize_up 578s tests/queue_test.py::TestQueue::test_send_first 578s [gw1] [ 74%] PASSED tests/queue_test.py::TestQueue::test_send_first 578s tests/tpool_test.py::TestTpool::test_variable_and_keyword_arguments_with_function_calls 578s [gw0] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_killall 579s tests/tpool_test.py::TestTpool::test_killall_remaining_results 579s [gw1] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_variable_and_keyword_arguments_with_function_calls 579s tests/tpool_test.py::TestTpool::test_wrap_dict 579s [gw1] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_wrap_dict 579s tests/tpool_test.py::TestTpool::test_wrap_eq 579s [gw0] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_killall_remaining_results 579s tests/tpool_test.py::TestTpool::test_multiple_wraps 579s [gw1] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_wrap_eq 579s tests/tpool_test.py::TestTpool::test_wrap_getitem 579s [gw0] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_multiple_wraps 580s tests/tpool_test.py::TestTpool::test_raising_exceptions 580s [gw1] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_wrap_getitem 580s tests/tpool_test.py::TestTpool::test_wrap_hash 580s [gw0] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_raising_exceptions 580s [gw1] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_hash 580s tests/tpool_test.py::TestTpool::test_wrap_ints 580s tests/tpool_test.py::TestTpool::test_timeout 580s [gw1] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_ints 580s tests/tpool_test.py::TestTpool::test_wrap_iterator 580s [gw1] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_iterator 580s tests/tpool_test.py::TestTpool::test_wrap_iterator2 581s [gw0] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_timeout 581s tests/tpool_test.py::TestTpool::test_tpool_set_num_threads 581s [gw0] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_tpool_set_num_threads 581s tests/websocket_new_test.py::TestWebSocket::test_send_recv_13 581s [gw1] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_iterator2 581s tests/tpool_test.py::TestTpool::test_wrap_module_class 581s [gw0] [ 76%] PASSED tests/websocket_new_test.py::TestWebSocket::test_send_recv_13 581s tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_basic_deflate_ext_13 581s [gw0] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_basic_deflate_ext_13 581s tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_deflate_ext_context_takeover_13 581s [gw1] [ 77%] PASSED tests/tpool_test.py::TestTpool::test_wrap_module_class 581s tests/tpool_test.py::TestTpool::test_wrap_nonzero 581s [gw0] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_deflate_ext_context_takeover_13 581s tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_deflate_ext_window_max_bits_13 581s [gw0] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_deflate_ext_window_max_bits_13 581s tests/websocket_new_test.py::TestWebSocketWithCompression::test_client_compress_no_context_takeover_13 581s [gw0] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_client_compress_no_context_takeover_13 581s tests/websocket_new_test.py::TestWebSocketWithCompression::test_client_compress_with_context_takeover_13 581s [gw0] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_client_compress_with_context_takeover_13 581s tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_13 581s [gw0] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_13 581s tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_both_no_context_13 581s [gw1] [ 78%] PASSED tests/tpool_test.py::TestTpool::test_wrap_nonzero 581s tests/tpool_test.py::TestTpool::test_wrap_setitem 581s [gw0] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_both_no_context_13 581s tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_client_no_context_13 581s [gw0] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_client_no_context_13 582s tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_server_no_context_13 582s [gw1] [ 78%] PASSED tests/tpool_test.py::TestTpool::test_wrap_setitem 582s tests/tpool_test.py::TestTpool::test_wrap_string 582s [gw0] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_server_no_context_13 582s tests/websocket_new_test.py::TestWebSocketWithCompression::test_large_frame_size_compressed_13 582s [gw1] [ 78%] PASSED tests/tpool_test.py::TestTpool::test_wrap_string 582s tests/tpool_test.py::TestTpool::test_wrap_tuple 582s [gw0] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_large_frame_size_compressed_13 582s tests/websocket_new_test.py::TestWebSocketWithCompression::test_large_frame_size_uncompressed_13 582s [gw1] [ 79%] PASSED tests/tpool_test.py::TestTpool::test_wrap_tuple 583s tests/tpool_test.py::TestTpool::test_wrap_uniterable 583s [gw1] [ 79%] PASSED tests/tpool_test.py::TestTpool::test_wrap_uniterable 583s tests/tpool_test.py::TpoolLongTests::test_a_buncha_stuff 583s [gw0] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_large_frame_size_uncompressed_13 583s tests/websocket_new_test.py::TestWebSocketWithCompression::test_reject_max_window_bits_out_of_range_13 583s [gw0] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_reject_max_window_bits_out_of_range_13 583s tests/websocket_new_test.py::TestWebSocketWithCompression::test_send_uncompressed_msg_13 583s [gw0] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_send_uncompressed_msg_13 583s tests/websocket_new_test.py::TestWebSocketWithCompression::test_server_compress_no_context_takeover_13 583s [gw0] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_server_compress_no_context_takeover_13 583s tests/websocket_new_test.py::TestWebSocketWithCompression::test_server_compress_with_context_takeover_13 583s [gw0] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_server_compress_with_context_takeover_13 584s tests/websocket_test.py::TestWebSocket::test_app_socket_errors_75 584s [gw0] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_app_socket_errors_75 584s tests/websocket_test.py::TestWebSocket::test_app_socket_errors_76 584s [gw0] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_app_socket_errors_76 584s tests/websocket_test.py::TestWebSocket::test_breaking_the_connection_75 584s [gw0] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_breaking_the_connection_75 584s tests/websocket_test.py::TestWebSocket::test_breaking_the_connection_76 584s [gw0] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_breaking_the_connection_76 584s tests/websocket_test.py::TestWebSocket::test_client_closing_connection_76 584s [gw0] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_client_closing_connection_76 584s tests/websocket_test.py::TestWebSocket::test_client_invalid_packet_76 584s [gw0] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_client_invalid_packet_76 584s tests/websocket_test.py::TestWebSocket::test_close_idle 584s [gw0] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_close_idle 584s tests/websocket_test.py::TestWebSocket::test_correct_upgrade_request_75 584s [gw0] [ 81%] PASSED tests/websocket_test.py::TestWebSocket::test_correct_upgrade_request_75 584s tests/websocket_test.py::TestWebSocket::test_correct_upgrade_request_76 584s [gw0] [ 81%] PASSED tests/websocket_test.py::TestWebSocket::test_correct_upgrade_request_76 584s tests/websocket_test.py::TestWebSocket::test_empty_query_string 584s [gw0] [ 81%] PASSED tests/websocket_test.py::TestWebSocket::test_empty_query_string 585s tests/websocket_test.py::TestWebSocket::test_getting_messages_from_websocket_75 585s [gw0] [ 81%] PASSED tests/websocket_test.py::TestWebSocket::test_getting_messages_from_websocket_75 585s tests/websocket_test.py::TestWebSocket::test_getting_messages_from_websocket_76 585s [gw0] [ 81%] PASSED tests/websocket_test.py::TestWebSocket::test_getting_messages_from_websocket_76 585s tests/websocket_test.py::TestWebSocket::test_incomplete_headers_75 585s [gw0] [ 81%] PASSED tests/websocket_test.py::TestWebSocket::test_incomplete_headers_75 585s tests/websocket_test.py::TestWebSocket::test_incomplete_headers_76 585s [gw0] [ 81%] PASSED tests/websocket_test.py::TestWebSocket::test_incomplete_headers_76 585s tests/websocket_test.py::TestWebSocket::test_incorrect_headers 585s [gw0] [ 82%] PASSED tests/websocket_test.py::TestWebSocket::test_incorrect_headers 585s tests/websocket_test.py::TestWebSocket::test_query_string 585s [gw0] [ 82%] PASSED tests/websocket_test.py::TestWebSocket::test_query_string 586s tests/websocket_test.py::TestWebSocket::test_sending_messages_to_websocket_75 586s [gw1] [ 82%] PASSED tests/tpool_test.py::TpoolLongTests::test_a_buncha_stuff 586s tests/tpool_test.py::TpoolLongTests::test_leakage_from_tracebacks 586s [gw0] [ 82%] PASSED tests/websocket_test.py::TestWebSocket::test_sending_messages_to_websocket_75 586s tests/websocket_test.py::TestWebSocket::test_sending_messages_to_websocket_76 586s [gw0] [ 82%] PASSED tests/websocket_test.py::TestWebSocket::test_sending_messages_to_websocket_76 586s tests/websocket_test.py::TestWebSocket::test_server_closing_connect_76 586s [gw0] [ 82%] PASSED tests/websocket_test.py::TestWebSocket::test_server_closing_connect_76 587s tests/websocket_test.py::TestWebSocket::test_wrapped_wsgi 587s [gw0] [ 82%] PASSED tests/websocket_test.py::TestWebSocket::test_wrapped_wsgi 587s tests/websocket_test.py::TestWebSocketSSL::test_ssl_sending_messages 587s [gw0] [ 82%] PASSED tests/websocket_test.py::TestWebSocketSSL::test_ssl_sending_messages 587s tests/websocket_test.py::TestWebSocketObject::test_close_ws 587s [gw1] [ 83%] PASSED tests/tpool_test.py::TpoolLongTests::test_leakage_from_tracebacks 588s tests/tpool_test.py::test_isolate_from_socket_default_timeout 588s [gw0] [ 83%] PASSED tests/websocket_test.py::TestWebSocketObject::test_close_ws 588s tests/websocket_test.py::TestWebSocketObject::test_recieve 588s [gw0] [ 83%] PASSED tests/websocket_test.py::TestWebSocketObject::test_recieve 588s tests/websocket_test.py::TestWebSocketObject::test_send_to_ws 588s [gw0] [ 83%] PASSED tests/websocket_test.py::TestWebSocketObject::test_send_to_ws 588s tests/wsgi_test.py::TestHttpd::test_001_server 588s [gw0] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_001_server 588s tests/wsgi_test.py::TestHttpd::test_002_keepalive 588s [gw0] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_002_keepalive 588s tests/wsgi_test.py::TestHttpd::test_004_close_keepalive 588s [gw0] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_004_close_keepalive 589s tests/wsgi_test.py::TestHttpd::test_006_reject_long_urls 589s [gw0] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_006_reject_long_urls 589s tests/wsgi_test.py::TestHttpd::test_007_get_arg 589s [gw0] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_007_get_arg 589s tests/wsgi_test.py::TestHttpd::test_008_correctresponse 589s [gw0] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_008_correctresponse 589s tests/wsgi_test.py::TestHttpd::test_009_chunked_response 589s [gw0] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_009_chunked_response 589s tests/wsgi_test.py::TestHttpd::test_010_no_chunked_http_1_0 589s [gw1] [ 84%] PASSED tests/tpool_test.py::test_isolate_from_socket_default_timeout 589s tests/tpool_test.py::test_exception_leak 589s [gw0] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_010_no_chunked_http_1_0 589s tests/wsgi_test.py::TestHttpd::test_011_multiple_chunks 589s [gw0] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_011_multiple_chunks 589s tests/wsgi_test.py::TestHttpd::test_012_ssl_server 589s [gw0] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_012_ssl_server 590s tests/wsgi_test.py::TestHttpd::test_013_empty_return 590s [gw0] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_013_empty_return 590s tests/wsgi_test.py::TestHttpd::test_014_chunked_post 590s [gw0] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_014_chunked_post 590s tests/wsgi_test.py::TestHttpd::test_015_write 590s [gw0] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_015_write 590s tests/wsgi_test.py::TestHttpd::test_016_repeated_content_length 590s [gw0] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_016_repeated_content_length 590s tests/wsgi_test.py::TestHttpd::test_017_ssl_zeroreturnerror 590s [gw0] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_017_ssl_zeroreturnerror 590s tests/wsgi_test.py::TestHttpd::test_018_http_10_keepalive 590s [gw0] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_018_http_10_keepalive 590s tests/wsgi_test.py::TestHttpd::test_018b_http_10_keepalive_framing 590s [gw0] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_018b_http_10_keepalive_framing 590s tests/wsgi_test.py::TestHttpd::test_019_fieldstorage_compat 590s [gw0] [ 86%] SKIPPED tests/wsgi_test.py::TestHttpd::test_019_fieldstorage_compat 590s tests/wsgi_test.py::TestHttpd::test_020_x_forwarded_for 590s [gw0] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_020_x_forwarded_for 591s tests/wsgi_test.py::TestHttpd::test_021_environ_clobbering 591s [gw0] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_021_environ_clobbering 591s tests/wsgi_test.py::TestHttpd::test_022_custom_pool 591s [gw0] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_022_custom_pool 591s tests/wsgi_test.py::TestHttpd::test_023_bad_content_length 591s [gw0] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_023_bad_content_length 591s tests/wsgi_test.py::TestHttpd::test_024_expect_100_continue 591s [gw1] [ 86%] PASSED tests/tpool_test.py::test_exception_leak 591s tests/websocket_new_test.py::TestWebSocket::test_breaking_the_connection_13 591s [gw0] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_024_expect_100_continue 591s tests/wsgi_test.py::TestHttpd::test_024a_expect_100_continue_with_headers 591s [gw0] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_024a_expect_100_continue_with_headers 591s tests/wsgi_test.py::TestHttpd::test_024b_expect_100_continue_with_headers_multiple_chunked 591s [gw0] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_024b_expect_100_continue_with_headers_multiple_chunked 591s tests/wsgi_test.py::TestHttpd::test_024c_expect_100_continue_with_headers_multiple_nonchunked 591s [gw1] [ 87%] PASSED tests/websocket_new_test.py::TestWebSocket::test_breaking_the_connection_13 592s tests/websocket_new_test.py::TestWebSocket::test_client_closing_connection_13 592s [gw0] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_024c_expect_100_continue_with_headers_multiple_nonchunked 592s tests/wsgi_test.py::TestHttpd::test_024d_expect_100_continue_with_eager_app_chunked 592s [gw1] [ 87%] PASSED tests/websocket_new_test.py::TestWebSocket::test_client_closing_connection_13 592s [gw0] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_024d_expect_100_continue_with_eager_app_chunked 592s tests/wsgi_test.py::TestHttpd::test_025_accept_errors 592s tests/websocket_new_test.py::TestWebSocket::test_client_invalid_packet_13 592s [gw1] [ 88%] PASSED tests/websocket_new_test.py::TestWebSocket::test_client_invalid_packet_13 592s tests/websocket_new_test.py::TestWebSocket::test_correct_upgrade_request_13 592s [gw0] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_025_accept_errors 592s [gw1] [ 88%] PASSED tests/websocket_new_test.py::TestWebSocket::test_correct_upgrade_request_13 592s tests/wsgi_test.py::TestHttpd::test_026_http_10_nokeepalive 592s tests/websocket_new_test.py::TestWebSocket::test_incomplete_headers_13 592s [gw1] [ 88%] PASSED tests/websocket_new_test.py::TestWebSocket::test_incomplete_headers_13 592s tests/wsgi_test.py::TestHttpd::test_configurable_url_length_limit 593s [gw0] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_026_http_10_nokeepalive 593s tests/wsgi_test.py::TestHttpd::test_026_log_format 593s [gw1] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_configurable_url_length_limit 593s tests/wsgi_test.py::TestHttpd::test_content_length_and_transfer_encoding_escape_hatch 593s [gw1] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_content_length_and_transfer_encoding_escape_hatch 593s tests/wsgi_test.py::TestHttpd::test_debug 593s [gw0] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_026_log_format 593s tests/wsgi_test.py::TestHttpd::test_026b_http_10_zero_keepalive 593s [gw0] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_026b_http_10_zero_keepalive 593s tests/wsgi_test.py::TestHttpd::test_027_keepalive_chunked 593s [gw0] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_027_keepalive_chunked 593s tests/wsgi_test.py::TestHttpd::test_028_ssl_handshake_errors 593s [gw1] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_debug 593s tests/wsgi_test.py::TestHttpd::test_disable_header_name_capitalization 593s [gw1] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_disable_header_name_capitalization 593s tests/wsgi_test.py::TestHttpd::test_do_not_close_non_idle_connections 593s [gw0] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_028_ssl_handshake_errors 593s tests/wsgi_test.py::TestHttpd::test_029_posthooks 593s [gw0] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_029_posthooks 593s tests/wsgi_test.py::TestHttpd::test_030_reject_long_header_lines 593s [gw0] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_030_reject_long_header_lines 593s tests/wsgi_test.py::TestHttpd::test_031_reject_large_headers 593s [gw0] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_031_reject_large_headers 593s tests/wsgi_test.py::TestHttpd::test_032_wsgi_input_as_iterable 593s [gw0] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_032_wsgi_input_as_iterable 594s tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post 594s [gw0] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post 594s tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post_bad_chunks 594s [gw0] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post_bad_chunks 594s tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post_between_chunks 594s [gw0] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post_between_chunks 594s tests/wsgi_test.py::TestHttpd::test_aborted_post_io_error 594s [gw0] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_aborted_post_io_error 594s tests/wsgi_test.py::TestHttpd::test_chunked_response_when_app_yields_empty_string 594s [gw0] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_chunked_response_when_app_yields_empty_string 594s tests/wsgi_test.py::TestHttpd::test_client_disconnect 594s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_client_disconnect 594s tests/wsgi_test.py::TestHttpd::test_close_chunked_with_1_0_client 594s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_close_chunked_with_1_0_client 594s tests/wsgi_test.py::TestHttpd::test_close_idle_connections 594s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_close_idle_connections 594s tests/wsgi_test.py::TestHttpd::test_close_idle_connections_listen_socket_closed 594s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_close_idle_connections_listen_socket_closed 594s tests/wsgi_test.py::TestHttpd::test_no_content_length_or_transfer_encoding 594s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_no_content_length_or_transfer_encoding 594s tests/wsgi_test.py::TestHttpd::test_no_transfer_encoding_in_empty_response 594s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_no_transfer_encoding_in_empty_response 595s tests/wsgi_test.py::TestHttpd::test_partial_writes_are_handled 595s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_partial_writes_are_handled 595s tests/wsgi_test.py::TestHttpd::test_path_info_decoding 595s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_path_info_decoding 595s tests/wsgi_test.py::TestHttpd::test_path_info_latin1 595s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_path_info_latin1 595s tests/wsgi_test.py::TestHttpd::test_rfc9112_reject_bad_request 595s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_rfc9112_reject_bad_request 595s tests/wsgi_test.py::TestHttpd::test_server_keepalive_as_timeout 595s [gw1] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_do_not_close_non_idle_connections 596s tests/wsgi_test.py::TestHttpd::test_env_header_stripping 596s [gw1] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_env_header_stripping 596s tests/wsgi_test.py::TestHttpd::test_env_headers 596s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_server_keepalive_as_timeout 596s tests/wsgi_test.py::TestHttpd::test_server_keepalive_sent_in_headers 596s [gw1] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_env_headers 596s tests/wsgi_test.py::TestHttpd::test_error_in_chunked_closes_connection 596s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_server_keepalive_sent_in_headers 596s tests/wsgi_test.py::TestHttpd::test_server_socket_timeout 596s [gw1] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_error_in_chunked_closes_connection 596s tests/wsgi_test.py::TestHttpd::test_exceptions_close_connection 596s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_server_socket_timeout 596s tests/wsgi_test.py::TestHttpd::test_socket_remains_open 596s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_socket_remains_open 596s tests/wsgi_test.py::TestHttpd::test_timeouts_in_app_call 596s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_timeouts_in_app_call 596s tests/wsgi_test.py::TestHttpd::test_timeouts_in_app_iter 596s [gw1] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_exceptions_close_connection 596s tests/wsgi_test.py::TestHttpd::test_header_name_capitalization 596s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_timeouts_in_app_iter 596s tests/wsgi_test.py::TestHttpd::test_unicode_with_nonascii_characters_raises_error 596s [gw0] [ 94%] PASSED tests/wsgi_test.py::TestHttpd::test_unicode_with_nonascii_characters_raises_error 596s tests/wsgi_test.py::TestHttpd::test_unicode_with_only_ascii_characters_works 597s [gw1] [ 94%] PASSED tests/wsgi_test.py::TestHttpd::test_header_name_capitalization 597s tests/wsgi_test.py::TestHttpd::test_headers_raw 597s [gw0] [ 94%] PASSED tests/wsgi_test.py::TestHttpd::test_unicode_with_only_ascii_characters_works 597s tests/wsgi_test.py::TestHttpd::test_zero_length_chunked_response 597s [gw0] [ 94%] PASSED tests/wsgi_test.py::TestHttpd::test_zero_length_chunked_response 597s [gw1] [ 94%] PASSED tests/wsgi_test.py::TestHttpd::test_headers_raw 597s tests/wsgi_test.py::TestHttpd::test_ipv6 597s tests/wsgi_test.py::IterableAlreadyHandledTest::test_iterable_app_keeps_socket_open_unless_connection_close_sent 597s [gw1] [ 94%] SKIPPED tests/wsgi_test.py::TestHttpd::test_ipv6 597s tests/wsgi_test.py::TestHttpd::test_log_disable 597s [gw0] [ 94%] PASSED tests/wsgi_test.py::IterableAlreadyHandledTest::test_iterable_app_keeps_socket_open_unless_connection_close_sent 597s tests/wsgi_test.py::ProxiedIterableAlreadyHandledTest::test_iterable_app_keeps_socket_open_unless_connection_close_sent 597s [gw1] [ 94%] PASSED tests/wsgi_test.py::TestHttpd::test_log_disable 597s tests/wsgi_test.py::TestHttpd::test_log_unix_address 597s [gw1] [ 95%] PASSED tests/wsgi_test.py::TestHttpd::test_log_unix_address 597s tests/wsgi_test.py::TestHttpd::test_minimum_chunk_size_parameter_leaves_httpprotocol_class_member_intact 597s [gw1] [ 95%] PASSED tests/wsgi_test.py::TestHttpd::test_minimum_chunk_size_parameter_leaves_httpprotocol_class_member_intact 597s tests/wsgi_test.py::TestChunkedInput::test_dirt 597s [gw0] [ 95%] PASSED tests/wsgi_test.py::ProxiedIterableAlreadyHandledTest::test_iterable_app_keeps_socket_open_unless_connection_close_sent 597s tests/wsgi_test.py::TestChunkedInput::test_chunked_readline 597s [gw1] [ 95%] PASSED tests/wsgi_test.py::TestChunkedInput::test_dirt 598s tests/wsgi_test.py::TestChunkedInput::test_short_read 598s [gw0] [ 95%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readline 598s tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_from_input 598s [gw1] [ 95%] PASSED tests/wsgi_test.py::TestChunkedInput::test_short_read 598s tests/wsgi_test.py::TestChunkedInput::test_short_read_with_content_length 598s [gw0] [ 95%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_from_input 598s tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_wsgi_not_override_minimum_chunk_size 598s [gw1] [ 96%] PASSED tests/wsgi_test.py::TestChunkedInput::test_short_read_with_content_length 598s tests/wsgi_test.py::TestChunkedInput::test_short_read_with_zero_content_length 598s [gw0] [ 96%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_wsgi_not_override_minimum_chunk_size 598s tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_wsgi_override_minimum_chunk_size 598s [gw1] [ 96%] PASSED tests/wsgi_test.py::TestChunkedInput::test_short_read_with_zero_content_length 598s tests/zmq_test.py::TestUpstreamDownStream::test_change_subscription 598s [gw0] [ 96%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_wsgi_override_minimum_chunk_size 598s tests/wsgi_test.py::TestChunkedInput::test_chunked_readlines_from_input 598s [gw0] [ 96%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readlines_from_input 599s tests/wsgi_test.py::TestChunkedInput::test_close_before_finished 599s [gw0] [ 96%] PASSED tests/wsgi_test.py::TestChunkedInput::test_close_before_finished 599s tests/zmq_test.py::TestUpstreamDownStream::test_close_xsocket_raises_enotsup 599s [gw1] [ 96%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_change_subscription 599s tests/zmq_test.py::TestUpstreamDownStream::test_close_during_recv 599s [gw0] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_close_xsocket_raises_enotsup 599s tests/zmq_test.py::TestUpstreamDownStream::test_cpu_usage_after_bind 599s [gw1] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_close_during_recv 599s tests/zmq_test.py::TestUpstreamDownStream::test_close_linger 599s [gw1] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_close_linger 599s tests/zmq_test.py::TestUpstreamDownStream::test_close_socket_raises_enotsup 599s [gw0] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_cpu_usage_after_bind 599s [gw1] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_close_socket_raises_enotsup 599s tests/zmq_test.py::TestUpstreamDownStream::test_getsockopt_events 600s tests/zmq_test.py::TestUpstreamDownStream::test_cpu_usage_after_pub_send_or_dealer_recv 600s [gw1] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_getsockopt_events 600s tests/zmq_test.py::TestUpstreamDownStream::test_recv_during_send 600s [gw1] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_recv_during_send 600s tests/zmq_test.py::TestUpstreamDownStream::test_recv_multipart_bug68 600s [gw0] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_cpu_usage_after_pub_send_or_dealer_recv 600s tests/zmq_test.py::TestUpstreamDownStream::test_recv_noblock_bug76 600s [gw0] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_recv_noblock_bug76 600s tests/zmq_test.py::TestUpstreamDownStream::test_recv_spawned_before_send_is_non_blocking 600s [gw1] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_recv_multipart_bug68 600s tests/zmq_test.py::TestUpstreamDownStream::test_send_1k_push_pull 600s [gw0] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_recv_spawned_before_send_is_non_blocking 600s tests/zmq_test.py::TestUpstreamDownStream::test_send_1k_req_rep 600s [gw1] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_send_1k_push_pull 601s tests/zmq_test.py::TestUpstreamDownStream::test_send_during_recv 601s [gw0] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_send_1k_req_rep 601s tests/zmq_test.py::TestUpstreamDownStream::test_send_during_recv_multipart 601s [gw1] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_send_during_recv 601s tests/zmq_test.py::TestQueueLock::test_count 601s [gw1] [ 99%] PASSED tests/zmq_test.py::TestQueueLock::test_count 601s tests/zmq_test.py::TestQueueLock::test_nested_acquire 602s [gw0] [ 99%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_send_during_recv_multipart 602s tests/zmq_test.py::TestQueueLock::test_errors 602s [gw1] [ 99%] PASSED tests/zmq_test.py::TestQueueLock::test_nested_acquire 602s tests/zmq_test.py::TestQueueLock::test_queue_lock_order 602s [gw1] [ 99%] PASSED tests/zmq_test.py::TestQueueLock::test_queue_lock_order 602s tests/zmq_test.py::test_recv_json_no_args 602s [gw1] [ 99%] PASSED tests/zmq_test.py::test_recv_json_no_args 602s tests/zmq_test.py::test_recv_timeout 602s [gw1] [ 99%] PASSED tests/zmq_test.py::test_recv_timeout 602s [gw0] [ 99%] PASSED tests/zmq_test.py::TestQueueLock::test_errors 602s tests/zmq_test.py::TestBlockedThread::test_block 603s [gw0] [100%] PASSED tests/zmq_test.py::TestBlockedThread::test_block 603s 603s ==================================== ERRORS ==================================== 603s __________________ ERROR collecting tests/test__greenness.py ___________________ 603s tests/test__greenness.py:8: in 603s from eventlet.green.urllib.request import urlopen 603s eventlet/green/urllib/request.py:40: in 603s URLopener.open_ftp = patcher.patch_function(URLopener.open_ftp, *to_patch_in_functions) 603s ^^^^^^^^^ 603s E NameError: name 'URLopener' is not defined 603s __________________ ERROR collecting tests/test__greenness.py ___________________ 603s tests/test__greenness.py:8: in 603s from eventlet.green.urllib.request import urlopen 603s eventlet/green/urllib/request.py:40: in 603s URLopener.open_ftp = patcher.patch_function(URLopener.open_ftp, *to_patch_in_functions) 603s ^^^^^^^^^ 603s E NameError: name 'URLopener' is not defined 603s __________ ERROR at teardown of TestGreenIoLong.test_multiple_readers __________ 603s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 603s tests/__init__.py:194: in tearDown 603s verify_hub_empty() 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s 603s def verify_hub_empty(): 603s 603s def format_listener(listener): 603s return 'Listener %r for greenlet %r with run callback %r' % ( 603s listener, listener.greenlet, getattr(listener.greenlet, 'run', None)) 603s 603s from eventlet import hubs 603s hub = hubs.get_hub() 603s readers = hub.get_readers() 603s writers = hub.get_writers() 603s num_readers = len(readers) 603s num_writers = len(writers) 603s num_timers = hub.get_timers_count() 603s > assert num_readers == 0 and num_writers == 0, \ 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s "Readers: %s (%d) Writers: %s (%d)" % ( 603s ', '.join(map(format_listener, readers)), num_readers, 603s ', '.join(map(format_listener, writers)), num_writers, 603s ) 603s E AssertionError: Readers: Listener FdListener('read', 27, , ) for greenlet with run callback None (1) Writers: (0) 603s 603s tests/__init__.py:245: AssertionError 603s =================================== FAILURES =================================== 603s ____________________ TestGreenPipe.test_pip_read_until_end _____________________ 603s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 603s 603s self = 603s 603s def test_pip_read_until_end(self): 603s # similar to test_pip_read above but reading until eof 603s r, w = os.pipe() 603s 603s > r = greenio.GreenPipe(r, 'rb') 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s 603s tests/greenio_test.py:757: 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s eventlet/greenio/py3.py:216: in GreenPipe 603s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s 603s file = 15, mode = 'rb', buffering = -1, encoding = None, errors = None 603s newline = None, closefd = True, opener = None 603s 603s @staticmethod 603s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 603s newline=None, closefd=True, opener=None): 603s 603s r"""Open file and return a stream. Raise OSError upon failure. 603s 603s file is either a text or byte string giving the name (and the path 603s if the file isn't in the current working directory) of the file to 603s be opened or an integer file descriptor of the file to be 603s wrapped. (If a file descriptor is given, it is closed when the 603s returned I/O object is closed, unless closefd is set to False.) 603s 603s mode is an optional string that specifies the mode in which the file is 603s opened. It defaults to 'r' which means open for reading in text mode. Other 603s common values are 'w' for writing (truncating the file if it already 603s exists), 'x' for exclusive creation of a new file, and 'a' for appending 603s (which on some Unix systems, means that all writes append to the end of the 603s file regardless of the current seek position). In text mode, if encoding is 603s not specified the encoding used is platform dependent. (For reading and 603s writing raw bytes use binary mode and leave encoding unspecified.) The 603s available modes are: 603s 603s ========= =============================================================== 603s Character Meaning 603s --------- --------------------------------------------------------------- 603s 'r' open for reading (default) 603s 'w' open for writing, truncating the file first 603s 'x' create a new file and open it for writing 603s 'a' open for writing, appending to the end of the file if it exists 603s 'b' binary mode 603s 't' text mode (default) 603s '+' open a disk file for updating (reading and writing) 603s ========= =============================================================== 603s 603s The default mode is 'rt' (open for reading text). For binary random 603s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 603s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 603s raises an `FileExistsError` if the file already exists. 603s 603s Python distinguishes between files opened in binary and text modes, 603s even when the underlying operating system doesn't. Files opened in 603s binary mode (appending 'b' to the mode argument) return contents as 603s bytes objects without any decoding. In text mode (the default, or when 603s 't' is appended to the mode argument), the contents of the file are 603s returned as strings, the bytes having been first decoded using a 603s platform-dependent encoding or using the specified encoding if given. 603s 603s buffering is an optional integer used to set the buffering policy. 603s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 603s line buffering (only usable in text mode), and an integer > 1 to indicate 603s the size of a fixed-size chunk buffer. When no buffering argument is 603s given, the default buffering policy works as follows: 603s 603s * Binary files are buffered in fixed-size chunks; the size of the buffer 603s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 603s when the device block size is available. 603s On most systems, the buffer will typically be 128 kilobytes long. 603s 603s * "Interactive" text files (files for which isatty() returns True) 603s use line buffering. Other text files use the policy described above 603s for binary files. 603s 603s encoding is the str name of the encoding used to decode or encode the 603s file. This should only be used in text mode. The default encoding is 603s platform dependent, but any encoding supported by Python can be 603s passed. See the codecs module for the list of supported encodings. 603s 603s errors is an optional string that specifies how encoding errors are to 603s be handled---this argument should not be used in binary mode. Pass 603s 'strict' to raise a ValueError exception if there is an encoding error 603s (the default of None has the same effect), or pass 'ignore' to ignore 603s errors. (Note that ignoring encoding errors can lead to data loss.) 603s See the documentation for codecs.register for a list of the permitted 603s encoding error strings. 603s 603s newline is a string controlling how universal newlines works (it only 603s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 603s as follows: 603s 603s * On input, if newline is None, universal newlines mode is 603s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 603s these are translated into '\n' before being returned to the 603s caller. If it is '', universal newline mode is enabled, but line 603s endings are returned to the caller untranslated. If it has any of 603s the other legal values, input lines are only terminated by the given 603s string, and the line ending is returned to the caller untranslated. 603s 603s * On output, if newline is None, any '\n' characters written are 603s translated to the system default line separator, os.linesep. If 603s newline is '', no translation takes place. If newline is any of the 603s other legal values, any '\n' characters written are translated to 603s the given string. 603s 603s closedfd is a bool. If closefd is False, the underlying file descriptor will 603s be kept open when the file is closed. This does not work when a file name is 603s given and must be True in that case. 603s 603s The newly created file is non-inheritable. 603s 603s A custom opener can be used by passing a callable as *opener*. The 603s underlying file descriptor for the file object is then obtained by calling 603s *opener* with (*file*, *flags*). *opener* must return an open file 603s descriptor (passing os.open as *opener* results in functionality similar to 603s passing None). 603s 603s open() returns a file object whose type depends on the mode, and 603s through which the standard file operations such as reading and writing 603s are performed. When open() is used to open a file in a text mode ('w', 603s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 603s a file in a binary mode, the returned class varies: in read binary 603s mode, it returns a BufferedReader; in write binary and append binary 603s modes, it returns a BufferedWriter, and in read/write mode, it returns 603s a BufferedRandom. 603s 603s It is also possible to use a string or bytearray as a file for both 603s reading and writing. For strings StringIO can be used like a file 603s opened in a text mode, and for bytes a BytesIO can be used like a file 603s opened in a binary mode. 603s """ 603s if not isinstance(file, int): 603s file = os.fspath(file) 603s if not isinstance(file, (str, bytes, int)): 603s raise TypeError("invalid file: %r" % file) 603s if not isinstance(mode, str): 603s raise TypeError("invalid mode: %r" % mode) 603s if not isinstance(buffering, int): 603s raise TypeError("invalid buffering: %r" % buffering) 603s if encoding is not None and not isinstance(encoding, str): 603s raise TypeError("invalid encoding: %r" % encoding) 603s if errors is not None and not isinstance(errors, str): 603s raise TypeError("invalid errors: %r" % errors) 603s modes = set(mode) 603s if modes - set("axrwb+t") or len(mode) > len(modes): 603s raise ValueError("invalid mode: %r" % mode) 603s creating = "x" in modes 603s reading = "r" in modes 603s writing = "w" in modes 603s appending = "a" in modes 603s updating = "+" in modes 603s text = "t" in modes 603s binary = "b" in modes 603s if text and binary: 603s raise ValueError("can't have text and binary mode at once") 603s if creating + reading + writing + appending > 1: 603s raise ValueError("can't have read/write/append mode at once") 603s if not (creating or reading or writing or appending): 603s raise ValueError("must have exactly one of read/write/append mode") 603s if binary and encoding is not None: 603s raise ValueError("binary mode doesn't take an encoding argument") 603s if binary and errors is not None: 603s raise ValueError("binary mode doesn't take an errors argument") 603s if binary and newline is not None: 603s raise ValueError("binary mode doesn't take a newline argument") 603s if binary and buffering == 1: 603s import warnings 603s warnings.warn("line buffering (buffering=1) isn't supported in binary " 603s "mode, the default buffer size will be used", 603s RuntimeWarning, 2) 603s raw = FileIO(file, 603s (creating and "x" or "") + 603s (reading and "r" or "") + 603s (writing and "w" or "") + 603s (appending and "a" or "") + 603s (updating and "+" or ""), 603s closefd, opener=opener) 603s result = raw 603s try: 603s line_buffering = False 603s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 603s ^^^^^^^^^^^^^^^^^^^^^ 603s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 603s 603s /usr/lib/python3.14/_pyio.py:242: AttributeError 603s ___________________________ TestGreenPipe.test_pipe ____________________________ 603s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 603s 603s self = 603s 603s def test_pipe(self): 603s r, w = os.pipe() 603s > rf = greenio.GreenPipe(r, 'rb') 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s 603s tests/greenio_test.py:706: 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s eventlet/greenio/py3.py:216: in GreenPipe 603s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s 603s file = 15, mode = 'rb', buffering = -1, encoding = None, errors = None 603s newline = None, closefd = True, opener = None 603s 603s @staticmethod 603s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 603s newline=None, closefd=True, opener=None): 603s 603s r"""Open file and return a stream. Raise OSError upon failure. 603s 603s file is either a text or byte string giving the name (and the path 603s if the file isn't in the current working directory) of the file to 603s be opened or an integer file descriptor of the file to be 603s wrapped. (If a file descriptor is given, it is closed when the 603s returned I/O object is closed, unless closefd is set to False.) 603s 603s mode is an optional string that specifies the mode in which the file is 603s opened. It defaults to 'r' which means open for reading in text mode. Other 603s common values are 'w' for writing (truncating the file if it already 603s exists), 'x' for exclusive creation of a new file, and 'a' for appending 603s (which on some Unix systems, means that all writes append to the end of the 603s file regardless of the current seek position). In text mode, if encoding is 603s not specified the encoding used is platform dependent. (For reading and 603s writing raw bytes use binary mode and leave encoding unspecified.) The 603s available modes are: 603s 603s ========= =============================================================== 603s Character Meaning 603s --------- --------------------------------------------------------------- 603s 'r' open for reading (default) 603s 'w' open for writing, truncating the file first 603s 'x' create a new file and open it for writing 603s 'a' open for writing, appending to the end of the file if it exists 603s 'b' binary mode 603s 't' text mode (default) 603s '+' open a disk file for updating (reading and writing) 603s ========= =============================================================== 603s 603s The default mode is 'rt' (open for reading text). For binary random 603s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 603s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 603s raises an `FileExistsError` if the file already exists. 603s 603s Python distinguishes between files opened in binary and text modes, 603s even when the underlying operating system doesn't. Files opened in 603s binary mode (appending 'b' to the mode argument) return contents as 603s bytes objects without any decoding. In text mode (the default, or when 603s 't' is appended to the mode argument), the contents of the file are 603s returned as strings, the bytes having been first decoded using a 603s platform-dependent encoding or using the specified encoding if given. 603s 603s buffering is an optional integer used to set the buffering policy. 603s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 603s line buffering (only usable in text mode), and an integer > 1 to indicate 603s the size of a fixed-size chunk buffer. When no buffering argument is 603s given, the default buffering policy works as follows: 603s 603s * Binary files are buffered in fixed-size chunks; the size of the buffer 603s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 603s when the device block size is available. 603s On most systems, the buffer will typically be 128 kilobytes long. 603s 603s * "Interactive" text files (files for which isatty() returns True) 603s use line buffering. Other text files use the policy described above 603s for binary files. 603s 603s encoding is the str name of the encoding used to decode or encode the 603s file. This should only be used in text mode. The default encoding is 603s platform dependent, but any encoding supported by Python can be 603s passed. See the codecs module for the list of supported encodings. 603s 603s errors is an optional string that specifies how encoding errors are to 603s be handled---this argument should not be used in binary mode. Pass 603s 'strict' to raise a ValueError exception if there is an encoding error 603s (the default of None has the same effect), or pass 'ignore' to ignore 603s errors. (Note that ignoring encoding errors can lead to data loss.) 603s See the documentation for codecs.register for a list of the permitted 603s encoding error strings. 603s 603s newline is a string controlling how universal newlines works (it only 603s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 603s as follows: 603s 603s * On input, if newline is None, universal newlines mode is 603s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 603s these are translated into '\n' before being returned to the 603s caller. If it is '', universal newline mode is enabled, but line 603s endings are returned to the caller untranslated. If it has any of 603s the other legal values, input lines are only terminated by the given 603s string, and the line ending is returned to the caller untranslated. 603s 603s * On output, if newline is None, any '\n' characters written are 603s translated to the system default line separator, os.linesep. If 603s newline is '', no translation takes place. If newline is any of the 603s other legal values, any '\n' characters written are translated to 603s the given string. 603s 603s closedfd is a bool. If closefd is False, the underlying file descriptor will 603s be kept open when the file is closed. This does not work when a file name is 603s given and must be True in that case. 603s 603s The newly created file is non-inheritable. 603s 603s A custom opener can be used by passing a callable as *opener*. The 603s underlying file descriptor for the file object is then obtained by calling 603s *opener* with (*file*, *flags*). *opener* must return an open file 603s descriptor (passing os.open as *opener* results in functionality similar to 603s passing None). 603s 603s open() returns a file object whose type depends on the mode, and 603s through which the standard file operations such as reading and writing 603s are performed. When open() is used to open a file in a text mode ('w', 603s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 603s a file in a binary mode, the returned class varies: in read binary 603s mode, it returns a BufferedReader; in write binary and append binary 603s modes, it returns a BufferedWriter, and in read/write mode, it returns 603s a BufferedRandom. 603s 603s It is also possible to use a string or bytearray as a file for both 603s reading and writing. For strings StringIO can be used like a file 603s opened in a text mode, and for bytes a BytesIO can be used like a file 603s opened in a binary mode. 603s """ 603s if not isinstance(file, int): 603s file = os.fspath(file) 603s if not isinstance(file, (str, bytes, int)): 603s raise TypeError("invalid file: %r" % file) 603s if not isinstance(mode, str): 603s raise TypeError("invalid mode: %r" % mode) 603s if not isinstance(buffering, int): 603s raise TypeError("invalid buffering: %r" % buffering) 603s if encoding is not None and not isinstance(encoding, str): 603s raise TypeError("invalid encoding: %r" % encoding) 603s if errors is not None and not isinstance(errors, str): 603s raise TypeError("invalid errors: %r" % errors) 603s modes = set(mode) 603s if modes - set("axrwb+t") or len(mode) > len(modes): 603s raise ValueError("invalid mode: %r" % mode) 603s creating = "x" in modes 603s reading = "r" in modes 603s writing = "w" in modes 603s appending = "a" in modes 603s updating = "+" in modes 603s text = "t" in modes 603s binary = "b" in modes 603s if text and binary: 603s raise ValueError("can't have text and binary mode at once") 603s if creating + reading + writing + appending > 1: 603s raise ValueError("can't have read/write/append mode at once") 603s if not (creating or reading or writing or appending): 603s raise ValueError("must have exactly one of read/write/append mode") 603s if binary and encoding is not None: 603s raise ValueError("binary mode doesn't take an encoding argument") 603s if binary and errors is not None: 603s raise ValueError("binary mode doesn't take an errors argument") 603s if binary and newline is not None: 603s raise ValueError("binary mode doesn't take a newline argument") 603s if binary and buffering == 1: 603s import warnings 603s warnings.warn("line buffering (buffering=1) isn't supported in binary " 603s "mode, the default buffer size will be used", 603s RuntimeWarning, 2) 603s raw = FileIO(file, 603s (creating and "x" or "") + 603s (reading and "r" or "") + 603s (writing and "w" or "") + 603s (appending and "a" or "") + 603s (updating and "+" or ""), 603s closefd, opener=opener) 603s result = raw 603s try: 603s line_buffering = False 603s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 603s ^^^^^^^^^^^^^^^^^^^^^ 603s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 603s 603s /usr/lib/python3.14/_pyio.py:242: AttributeError 603s _________________________ TestGreenPipe.test_pipe_read _________________________ 603s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 603s 603s self = 603s 603s def test_pipe_read(self): 603s # ensure that 'readline' works properly on GreenPipes when data is not 603s # immediately available (fd is nonblocking, was raising EAGAIN) 603s # also ensures that readline() terminates on '\n' and '\r\n' 603s r, w = os.pipe() 603s 603s > r = greenio.GreenPipe(r, 'rb') 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s 603s tests/greenio_test.py:729: 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s eventlet/greenio/py3.py:216: in GreenPipe 603s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s 603s file = 15, mode = 'rb', buffering = -1, encoding = None, errors = None 603s newline = None, closefd = True, opener = None 603s 603s @staticmethod 603s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 603s newline=None, closefd=True, opener=None): 603s 603s r"""Open file and return a stream. Raise OSError upon failure. 603s 603s file is either a text or byte string giving the name (and the path 603s if the file isn't in the current working directory) of the file to 603s be opened or an integer file descriptor of the file to be 603s wrapped. (If a file descriptor is given, it is closed when the 603s returned I/O object is closed, unless closefd is set to False.) 603s 603s mode is an optional string that specifies the mode in which the file is 603s opened. It defaults to 'r' which means open for reading in text mode. Other 603s common values are 'w' for writing (truncating the file if it already 603s exists), 'x' for exclusive creation of a new file, and 'a' for appending 603s (which on some Unix systems, means that all writes append to the end of the 603s file regardless of the current seek position). In text mode, if encoding is 603s not specified the encoding used is platform dependent. (For reading and 603s writing raw bytes use binary mode and leave encoding unspecified.) The 603s available modes are: 603s 603s ========= =============================================================== 603s Character Meaning 603s --------- --------------------------------------------------------------- 603s 'r' open for reading (default) 603s 'w' open for writing, truncating the file first 603s 'x' create a new file and open it for writing 603s 'a' open for writing, appending to the end of the file if it exists 603s 'b' binary mode 603s 't' text mode (default) 603s '+' open a disk file for updating (reading and writing) 603s ========= =============================================================== 603s 603s The default mode is 'rt' (open for reading text). For binary random 603s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 603s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 603s raises an `FileExistsError` if the file already exists. 603s 603s Python distinguishes between files opened in binary and text modes, 603s even when the underlying operating system doesn't. Files opened in 603s binary mode (appending 'b' to the mode argument) return contents as 603s bytes objects without any decoding. In text mode (the default, or when 603s 't' is appended to the mode argument), the contents of the file are 603s returned as strings, the bytes having been first decoded using a 603s platform-dependent encoding or using the specified encoding if given. 603s 603s buffering is an optional integer used to set the buffering policy. 603s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 603s line buffering (only usable in text mode), and an integer > 1 to indicate 603s the size of a fixed-size chunk buffer. When no buffering argument is 603s given, the default buffering policy works as follows: 603s 603s * Binary files are buffered in fixed-size chunks; the size of the buffer 603s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 603s when the device block size is available. 603s On most systems, the buffer will typically be 128 kilobytes long. 603s 603s * "Interactive" text files (files for which isatty() returns True) 603s use line buffering. Other text files use the policy described above 603s for binary files. 603s 603s encoding is the str name of the encoding used to decode or encode the 603s file. This should only be used in text mode. The default encoding is 603s platform dependent, but any encoding supported by Python can be 603s passed. See the codecs module for the list of supported encodings. 603s 603s errors is an optional string that specifies how encoding errors are to 603s be handled---this argument should not be used in binary mode. Pass 603s 'strict' to raise a ValueError exception if there is an encoding error 603s (the default of None has the same effect), or pass 'ignore' to ignore 603s errors. (Note that ignoring encoding errors can lead to data loss.) 603s See the documentation for codecs.register for a list of the permitted 603s encoding error strings. 603s 603s newline is a string controlling how universal newlines works (it only 603s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 603s as follows: 603s 603s * On input, if newline is None, universal newlines mode is 603s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 603s these are translated into '\n' before being returned to the 603s caller. If it is '', universal newline mode is enabled, but line 603s endings are returned to the caller untranslated. If it has any of 603s the other legal values, input lines are only terminated by the given 603s string, and the line ending is returned to the caller untranslated. 603s 603s * On output, if newline is None, any '\n' characters written are 603s translated to the system default line separator, os.linesep. If 603s newline is '', no translation takes place. If newline is any of the 603s other legal values, any '\n' characters written are translated to 603s the given string. 603s 603s closedfd is a bool. If closefd is False, the underlying file descriptor will 603s be kept open when the file is closed. This does not work when a file name is 603s given and must be True in that case. 603s 603s The newly created file is non-inheritable. 603s 603s A custom opener can be used by passing a callable as *opener*. The 603s underlying file descriptor for the file object is then obtained by calling 603s *opener* with (*file*, *flags*). *opener* must return an open file 603s descriptor (passing os.open as *opener* results in functionality similar to 603s passing None). 603s 603s open() returns a file object whose type depends on the mode, and 603s through which the standard file operations such as reading and writing 603s are performed. When open() is used to open a file in a text mode ('w', 603s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 603s a file in a binary mode, the returned class varies: in read binary 603s mode, it returns a BufferedReader; in write binary and append binary 603s modes, it returns a BufferedWriter, and in read/write mode, it returns 603s a BufferedRandom. 603s 603s It is also possible to use a string or bytearray as a file for both 603s reading and writing. For strings StringIO can be used like a file 603s opened in a text mode, and for bytes a BytesIO can be used like a file 603s opened in a binary mode. 603s """ 603s if not isinstance(file, int): 603s file = os.fspath(file) 603s if not isinstance(file, (str, bytes, int)): 603s raise TypeError("invalid file: %r" % file) 603s if not isinstance(mode, str): 603s raise TypeError("invalid mode: %r" % mode) 603s if not isinstance(buffering, int): 603s raise TypeError("invalid buffering: %r" % buffering) 603s if encoding is not None and not isinstance(encoding, str): 603s raise TypeError("invalid encoding: %r" % encoding) 603s if errors is not None and not isinstance(errors, str): 603s raise TypeError("invalid errors: %r" % errors) 603s modes = set(mode) 603s if modes - set("axrwb+t") or len(mode) > len(modes): 603s raise ValueError("invalid mode: %r" % mode) 603s creating = "x" in modes 603s reading = "r" in modes 603s writing = "w" in modes 603s appending = "a" in modes 603s updating = "+" in modes 603s text = "t" in modes 603s binary = "b" in modes 603s if text and binary: 603s raise ValueError("can't have text and binary mode at once") 603s if creating + reading + writing + appending > 1: 603s raise ValueError("can't have read/write/append mode at once") 603s if not (creating or reading or writing or appending): 603s raise ValueError("must have exactly one of read/write/append mode") 603s if binary and encoding is not None: 603s raise ValueError("binary mode doesn't take an encoding argument") 603s if binary and errors is not None: 603s raise ValueError("binary mode doesn't take an errors argument") 603s if binary and newline is not None: 603s raise ValueError("binary mode doesn't take a newline argument") 603s if binary and buffering == 1: 603s import warnings 603s warnings.warn("line buffering (buffering=1) isn't supported in binary " 603s "mode, the default buffer size will be used", 603s RuntimeWarning, 2) 603s raw = FileIO(file, 603s (creating and "x" or "") + 603s (reading and "r" or "") + 603s (writing and "w" or "") + 603s (appending and "a" or "") + 603s (updating and "+" or ""), 603s closefd, opener=opener) 603s result = raw 603s try: 603s line_buffering = False 603s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 603s ^^^^^^^^^^^^^^^^^^^^^ 603s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 603s 603s /usr/lib/python3.14/_pyio.py:242: AttributeError 603s ________________ TestGreenPipe.test_pipe_writes_large_messages _________________ 603s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 603s 603s self = 603s 603s def test_pipe_writes_large_messages(self): 603s r, w = os.pipe() 603s 603s > r = greenio.GreenPipe(r, 'rb') 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s 603s tests/greenio_test.py:786: 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s eventlet/greenio/py3.py:216: in GreenPipe 603s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s 603s file = 15, mode = 'rb', buffering = -1, encoding = None, errors = None 603s newline = None, closefd = True, opener = None 603s 603s @staticmethod 603s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 603s newline=None, closefd=True, opener=None): 603s 603s r"""Open file and return a stream. Raise OSError upon failure. 603s 603s file is either a text or byte string giving the name (and the path 603s if the file isn't in the current working directory) of the file to 603s be opened or an integer file descriptor of the file to be 603s wrapped. (If a file descriptor is given, it is closed when the 603s returned I/O object is closed, unless closefd is set to False.) 603s 603s mode is an optional string that specifies the mode in which the file is 603s opened. It defaults to 'r' which means open for reading in text mode. Other 603s common values are 'w' for writing (truncating the file if it already 603s exists), 'x' for exclusive creation of a new file, and 'a' for appending 603s (which on some Unix systems, means that all writes append to the end of the 603s file regardless of the current seek position). In text mode, if encoding is 603s not specified the encoding used is platform dependent. (For reading and 603s writing raw bytes use binary mode and leave encoding unspecified.) The 603s available modes are: 603s 603s ========= =============================================================== 603s Character Meaning 603s --------- --------------------------------------------------------------- 603s 'r' open for reading (default) 603s 'w' open for writing, truncating the file first 603s 'x' create a new file and open it for writing 603s 'a' open for writing, appending to the end of the file if it exists 603s 'b' binary mode 603s 't' text mode (default) 603s '+' open a disk file for updating (reading and writing) 603s ========= =============================================================== 603s 603s The default mode is 'rt' (open for reading text). For binary random 603s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 603s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 603s raises an `FileExistsError` if the file already exists. 603s 603s Python distinguishes between files opened in binary and text modes, 603s even when the underlying operating system doesn't. Files opened in 603s binary mode (appending 'b' to the mode argument) return contents as 603s bytes objects without any decoding. In text mode (the default, or when 603s 't' is appended to the mode argument), the contents of the file are 603s returned as strings, the bytes having been first decoded using a 603s platform-dependent encoding or using the specified encoding if given. 603s 603s buffering is an optional integer used to set the buffering policy. 603s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 603s line buffering (only usable in text mode), and an integer > 1 to indicate 603s the size of a fixed-size chunk buffer. When no buffering argument is 603s given, the default buffering policy works as follows: 603s 603s * Binary files are buffered in fixed-size chunks; the size of the buffer 603s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 603s when the device block size is available. 603s On most systems, the buffer will typically be 128 kilobytes long. 603s 603s * "Interactive" text files (files for which isatty() returns True) 603s use line buffering. Other text files use the policy described above 603s for binary files. 603s 603s encoding is the str name of the encoding used to decode or encode the 603s file. This should only be used in text mode. The default encoding is 603s platform dependent, but any encoding supported by Python can be 603s passed. See the codecs module for the list of supported encodings. 603s 603s errors is an optional string that specifies how encoding errors are to 603s be handled---this argument should not be used in binary mode. Pass 603s 'strict' to raise a ValueError exception if there is an encoding error 603s (the default of None has the same effect), or pass 'ignore' to ignore 603s errors. (Note that ignoring encoding errors can lead to data loss.) 603s See the documentation for codecs.register for a list of the permitted 603s encoding error strings. 603s 603s newline is a string controlling how universal newlines works (it only 603s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 603s as follows: 603s 603s * On input, if newline is None, universal newlines mode is 603s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 603s these are translated into '\n' before being returned to the 603s caller. If it is '', universal newline mode is enabled, but line 603s endings are returned to the caller untranslated. If it has any of 603s the other legal values, input lines are only terminated by the given 603s string, and the line ending is returned to the caller untranslated. 603s 603s * On output, if newline is None, any '\n' characters written are 603s translated to the system default line separator, os.linesep. If 603s newline is '', no translation takes place. If newline is any of the 603s other legal values, any '\n' characters written are translated to 603s the given string. 603s 603s closedfd is a bool. If closefd is False, the underlying file descriptor will 603s be kept open when the file is closed. This does not work when a file name is 603s given and must be True in that case. 603s 603s The newly created file is non-inheritable. 603s 603s A custom opener can be used by passing a callable as *opener*. The 603s underlying file descriptor for the file object is then obtained by calling 603s *opener* with (*file*, *flags*). *opener* must return an open file 603s descriptor (passing os.open as *opener* results in functionality similar to 603s passing None). 603s 603s open() returns a file object whose type depends on the mode, and 603s through which the standard file operations such as reading and writing 603s are performed. When open() is used to open a file in a text mode ('w', 603s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 603s a file in a binary mode, the returned class varies: in read binary 603s mode, it returns a BufferedReader; in write binary and append binary 603s modes, it returns a BufferedWriter, and in read/write mode, it returns 603s a BufferedRandom. 603s 603s It is also possible to use a string or bytearray as a file for both 603s reading and writing. For strings StringIO can be used like a file 603s opened in a text mode, and for bytes a BytesIO can be used like a file 603s opened in a binary mode. 603s """ 603s if not isinstance(file, int): 603s file = os.fspath(file) 603s if not isinstance(file, (str, bytes, int)): 603s raise TypeError("invalid file: %r" % file) 603s if not isinstance(mode, str): 603s raise TypeError("invalid mode: %r" % mode) 603s if not isinstance(buffering, int): 603s raise TypeError("invalid buffering: %r" % buffering) 603s if encoding is not None and not isinstance(encoding, str): 603s raise TypeError("invalid encoding: %r" % encoding) 603s if errors is not None and not isinstance(errors, str): 603s raise TypeError("invalid errors: %r" % errors) 603s modes = set(mode) 603s if modes - set("axrwb+t") or len(mode) > len(modes): 603s raise ValueError("invalid mode: %r" % mode) 603s creating = "x" in modes 603s reading = "r" in modes 603s writing = "w" in modes 603s appending = "a" in modes 603s updating = "+" in modes 603s text = "t" in modes 603s binary = "b" in modes 603s if text and binary: 603s raise ValueError("can't have text and binary mode at once") 603s if creating + reading + writing + appending > 1: 603s raise ValueError("can't have read/write/append mode at once") 603s if not (creating or reading or writing or appending): 603s raise ValueError("must have exactly one of read/write/append mode") 603s if binary and encoding is not None: 603s raise ValueError("binary mode doesn't take an encoding argument") 603s if binary and errors is not None: 603s raise ValueError("binary mode doesn't take an errors argument") 603s if binary and newline is not None: 603s raise ValueError("binary mode doesn't take a newline argument") 603s if binary and buffering == 1: 603s import warnings 603s warnings.warn("line buffering (buffering=1) isn't supported in binary " 603s "mode, the default buffer size will be used", 603s RuntimeWarning, 2) 603s raw = FileIO(file, 603s (creating and "x" or "") + 603s (reading and "r" or "") + 603s (writing and "w" or "") + 603s (appending and "a" or "") + 603s (updating and "+" or ""), 603s closefd, opener=opener) 603s result = raw 603s try: 603s line_buffering = False 603s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 603s ^^^^^^^^^^^^^^^^^^^^^ 603s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 603s 603s /usr/lib/python3.14/_pyio.py:242: AttributeError 603s ____________________ TestGreenIoLong.test_multiple_readers _____________________ 603s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 603s 603s self = 603s 603s def test_multiple_readers(self): 603s from eventlet.hubs.asyncio import Hub 603s if isinstance(get_hub(), Hub): 603s with pytest.raises(RuntimeError): 603s debug.hub_prevent_multiple_readers(False) 603s return 603s 603s debug.hub_prevent_multiple_readers(False) 603s recvsize = 2 * min_buf_size() 603s sendsize = 10 * recvsize 603s 603s # test that we can have multiple coroutines reading 603s # from the same fd. We make no guarantees about which one gets which 603s # bytes, but they should both get at least some 603s def reader(sock, results): 603s while True: 603s data = sock.recv(recvsize) 603s if not data: 603s break 603s results.append(data) 603s 603s results1 = [] 603s results2 = [] 603s listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 603s listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 603s listener.bind(('127.0.0.1', 0)) 603s listener.listen(50) 603s 603s def server(): 603s (sock, addr) = listener.accept() 603s sock = bufsized(sock) 603s try: 603s c1 = eventlet.spawn(reader, sock, results1) 603s c2 = eventlet.spawn(reader, sock, results2) 603s try: 603s c1.wait() 603s c2.wait() 603s finally: 603s c1.kill() 603s c2.kill() 603s finally: 603s sock.close() 603s 603s server_coro = eventlet.spawn(server) 603s client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 603s client.connect(('127.0.0.1', listener.getsockname()[1])) 603s bufsized(client, size=sendsize) 603s 603s # Split into multiple chunks so that we can wait a little 603s # every iteration which allows both readers to queue and 603s # recv some data when we actually send it. 603s for i in range(20): 603s eventlet.sleep(0.001) 603s client.sendall(b'*' * (sendsize // 20)) 603s 603s client.close() 603s > server_coro.wait() 603s 603s tests/greenio_test.py:896: 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s eventlet/greenthread.py:232: in wait 603s return self._exit_event.wait() 603s ^^^^^^^^^^^^^^^^^^^^^^^ 603s eventlet/event.py:124: in wait 603s result = hub.switch() 603s ^^^^^^^^^^^^ 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s 603s self = 603s 603s def switch(self): 603s cur = greenlet.getcurrent() 603s assert cur is not self.greenlet, 'Cannot switch to MAINLOOP from MAINLOOP' 603s switch_out = getattr(cur, 'switch_out', None) 603s if switch_out is not None: 603s try: 603s switch_out() 603s except: 603s self.squelch_generic_exception(sys.exc_info()) 603s self.ensure_greenlet() 603s try: 603s if self.greenlet.parent is not cur: 603s cur.parent = self.greenlet 603s except ValueError: 603s pass # gets raised if there is a greenlet parent cycle 603s > return self.greenlet.switch() 603s ^^^^^^^^^^^^^^^^^^^^^^ 603s E tests.TestIsTakingTooLong: 10 603s 603s eventlet/hubs/hub.py:310: TestIsTakingTooLong 603s ______________________________ test_pipe_context _______________________________ 603s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 603s 603s def test_pipe_context(): 603s # ensure using a pipe as a context actually closes it. 603s r, w = os.pipe() 603s > r = greenio.GreenPipe(r) 603s ^^^^^^^^^^^^^^^^^^^^ 603s 603s tests/greenio_test.py:997: 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s eventlet/greenio/py3.py:216: in GreenPipe 603s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s 603s file = 30, mode = 'r', buffering = -1, encoding = None, errors = None 603s newline = None, closefd = True, opener = None 603s 603s @staticmethod 603s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 603s newline=None, closefd=True, opener=None): 603s 603s r"""Open file and return a stream. Raise OSError upon failure. 603s 603s file is either a text or byte string giving the name (and the path 603s if the file isn't in the current working directory) of the file to 603s be opened or an integer file descriptor of the file to be 603s wrapped. (If a file descriptor is given, it is closed when the 603s returned I/O object is closed, unless closefd is set to False.) 603s 603s mode is an optional string that specifies the mode in which the file is 603s opened. It defaults to 'r' which means open for reading in text mode. Other 603s common values are 'w' for writing (truncating the file if it already 603s exists), 'x' for exclusive creation of a new file, and 'a' for appending 603s (which on some Unix systems, means that all writes append to the end of the 603s file regardless of the current seek position). In text mode, if encoding is 603s not specified the encoding used is platform dependent. (For reading and 603s writing raw bytes use binary mode and leave encoding unspecified.) The 603s available modes are: 603s 603s ========= =============================================================== 603s Character Meaning 603s --------- --------------------------------------------------------------- 603s 'r' open for reading (default) 603s 'w' open for writing, truncating the file first 603s 'x' create a new file and open it for writing 603s 'a' open for writing, appending to the end of the file if it exists 603s 'b' binary mode 603s 't' text mode (default) 603s '+' open a disk file for updating (reading and writing) 603s ========= =============================================================== 603s 603s The default mode is 'rt' (open for reading text). For binary random 603s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 603s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 603s raises an `FileExistsError` if the file already exists. 603s 603s Python distinguishes between files opened in binary and text modes, 603s even when the underlying operating system doesn't. Files opened in 603s binary mode (appending 'b' to the mode argument) return contents as 603s bytes objects without any decoding. In text mode (the default, or when 603s 't' is appended to the mode argument), the contents of the file are 603s returned as strings, the bytes having been first decoded using a 603s platform-dependent encoding or using the specified encoding if given. 603s 603s buffering is an optional integer used to set the buffering policy. 603s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 603s line buffering (only usable in text mode), and an integer > 1 to indicate 603s the size of a fixed-size chunk buffer. When no buffering argument is 603s given, the default buffering policy works as follows: 603s 603s * Binary files are buffered in fixed-size chunks; the size of the buffer 603s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 603s when the device block size is available. 603s On most systems, the buffer will typically be 128 kilobytes long. 603s 603s * "Interactive" text files (files for which isatty() returns True) 603s use line buffering. Other text files use the policy described above 603s for binary files. 603s 603s encoding is the str name of the encoding used to decode or encode the 603s file. This should only be used in text mode. The default encoding is 603s platform dependent, but any encoding supported by Python can be 603s passed. See the codecs module for the list of supported encodings. 603s 603s errors is an optional string that specifies how encoding errors are to 603s be handled---this argument should not be used in binary mode. Pass 603s 'strict' to raise a ValueError exception if there is an encoding error 603s (the default of None has the same effect), or pass 'ignore' to ignore 603s errors. (Note that ignoring encoding errors can lead to data loss.) 603s See the documentation for codecs.register for a list of the permitted 603s encoding error strings. 603s 603s newline is a string controlling how universal newlines works (it only 603s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 603s as follows: 603s 603s * On input, if newline is None, universal newlines mode is 603s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 603s these are translated into '\n' before being returned to the 603s caller. If it is '', universal newline mode is enabled, but line 603s endings are returned to the caller untranslated. If it has any of 603s the other legal values, input lines are only terminated by the given 603s string, and the line ending is returned to the caller untranslated. 603s 603s * On output, if newline is None, any '\n' characters written are 603s translated to the system default line separator, os.linesep. If 603s newline is '', no translation takes place. If newline is any of the 603s other legal values, any '\n' characters written are translated to 603s the given string. 603s 603s closedfd is a bool. If closefd is False, the underlying file descriptor will 603s be kept open when the file is closed. This does not work when a file name is 603s given and must be True in that case. 603s 603s The newly created file is non-inheritable. 603s 603s A custom opener can be used by passing a callable as *opener*. The 603s underlying file descriptor for the file object is then obtained by calling 603s *opener* with (*file*, *flags*). *opener* must return an open file 603s descriptor (passing os.open as *opener* results in functionality similar to 603s passing None). 603s 603s open() returns a file object whose type depends on the mode, and 603s through which the standard file operations such as reading and writing 603s are performed. When open() is used to open a file in a text mode ('w', 603s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 603s a file in a binary mode, the returned class varies: in read binary 603s mode, it returns a BufferedReader; in write binary and append binary 603s modes, it returns a BufferedWriter, and in read/write mode, it returns 603s a BufferedRandom. 603s 603s It is also possible to use a string or bytearray as a file for both 603s reading and writing. For strings StringIO can be used like a file 603s opened in a text mode, and for bytes a BytesIO can be used like a file 603s opened in a binary mode. 603s """ 603s if not isinstance(file, int): 603s file = os.fspath(file) 603s if not isinstance(file, (str, bytes, int)): 603s raise TypeError("invalid file: %r" % file) 603s if not isinstance(mode, str): 603s raise TypeError("invalid mode: %r" % mode) 603s if not isinstance(buffering, int): 603s raise TypeError("invalid buffering: %r" % buffering) 603s if encoding is not None and not isinstance(encoding, str): 603s raise TypeError("invalid encoding: %r" % encoding) 603s if errors is not None and not isinstance(errors, str): 603s raise TypeError("invalid errors: %r" % errors) 603s modes = set(mode) 603s if modes - set("axrwb+t") or len(mode) > len(modes): 603s raise ValueError("invalid mode: %r" % mode) 603s creating = "x" in modes 603s reading = "r" in modes 603s writing = "w" in modes 603s appending = "a" in modes 603s updating = "+" in modes 603s text = "t" in modes 603s binary = "b" in modes 603s if text and binary: 603s raise ValueError("can't have text and binary mode at once") 603s if creating + reading + writing + appending > 1: 603s raise ValueError("can't have read/write/append mode at once") 603s if not (creating or reading or writing or appending): 603s raise ValueError("must have exactly one of read/write/append mode") 603s if binary and encoding is not None: 603s raise ValueError("binary mode doesn't take an encoding argument") 603s if binary and errors is not None: 603s raise ValueError("binary mode doesn't take an errors argument") 603s if binary and newline is not None: 603s raise ValueError("binary mode doesn't take a newline argument") 603s if binary and buffering == 1: 603s import warnings 603s warnings.warn("line buffering (buffering=1) isn't supported in binary " 603s "mode, the default buffer size will be used", 603s RuntimeWarning, 2) 603s raw = FileIO(file, 603s (creating and "x" or "") + 603s (reading and "r" or "") + 603s (writing and "w" or "") + 603s (appending and "a" or "") + 603s (updating and "+" or ""), 603s closefd, opener=opener) 603s result = raw 603s try: 603s line_buffering = False 603s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 603s ^^^^^^^^^^^^^^^^^^^^^ 603s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 603s 603s /usr/lib/python3.14/_pyio.py:242: AttributeError 603s _____________________________ test_greenpipe_write _____________________________ 603s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 603s 603s def test_greenpipe_write(): 603s expected = b"initial" 603s with tempfile.NamedTemporaryFile() as f: 603s > with greenio.GreenPipe(f.name, "wb") as writer: 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s 603s tests/greenio_test.py:1012: 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s eventlet/greenio/py3.py:216: in GreenPipe 603s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 603s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 603s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 603s 603s file = '/tmp/tmp_8sc_ef9', mode = 'wb', buffering = -1, encoding = None 603s errors = None, newline = None, closefd = True, opener = None 603s 603s @staticmethod 603s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 603s newline=None, closefd=True, opener=None): 603s 603s r"""Open file and return a stream. Raise OSError upon failure. 603s 603s file is either a text or byte string giving the name (and the path 603s if the file isn't in the current working directory) of the file to 603s be opened or an integer file descriptor of the file to be 603s wrapped. (If a file descriptor is given, it is closed when the 603s returned I/O object is closed, unless closefd is set to False.) 603s 603s mode is an optional string that specifies the mode in which the file is 603s opened. It defaults to 'r' which means open for reading in text mode. Other 603s common values are 'w' for writing (truncating the file if it already 603s exists), 'x' for exclusive creation of a new file, and 'a' for appending 603s (which on some Unix systems, means that all writes append to the end of the 603s file regardless of the current seek position). In text mode, if encoding is 603s not specified the encoding used is platform dependent. (For reading and 603s writing raw bytes use binary mode and leave encoding unspecified.) The 603s available modes are: 603s 603s ========= =============================================================== 603s Character Meaning 603s --------- --------------------------------------------------------------- 603s 'r' open for reading (default) 603s 'w' open for writing, truncating the file first 603s 'x' create a new file and open it for writing 603s 'a' open for writing, appending to the end of the file if it exists 603s 'b' binary mode 603s 't' text mode (default) 603s '+' open a disk file for updating (reading and writing) 603s ========= =============================================================== 603s 603s The default mode is 'rt' (open for reading text). For binary random 603s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 603s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 603s raises an `FileExistsError` if the file already exists. 603s 603s Python distinguishes between files opened in binary and text modes, 603s even when the underlying operating system doesn't. Files opened in 603s binary mode (appending 'b' to the mode argument) return contents as 603s bytes objects without any decoding. In text mode (the default, or when 603s 't' is appended to the mode argument), the contents of the file are 603s returned as strings, the bytes having been first decoded using a 603s platform-dependent encoding or using the specified encoding if given. 603s 603s buffering is an optional integer used to set the buffering policy. 603s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 603s line buffering (only usable in text mode), and an integer > 1 to indicate 603s the size of a fixed-size chunk buffer. When no buffering argument is 603s given, the default buffering policy works as follows: 603s 603s * Binary files are buffered in fixed-size chunks; the size of the buffer 603s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 603s when the device block size is available. 603s On most systems, the buffer will typically be 128 kilobytes long. 603s 603s * "Interactive" text files (files for which isatty() returns True) 603s use line buffering. Other text files use the policy described above 603s for binary files. 603s 603s encoding is the str name of the encoding used to decode or encode the 603s file. This should only be used in text mode. The default encoding is 603s platform dependent, but any encoding supported by Python can be 603s passed. See the codecs module for the list of supported encodings. 603s 603s errors is an optional string that specifies how encoding errors are to 603s be handled---this argument should not be used in binary mode. Pass 603s 'strict' to raise a ValueError exception if there is an encoding error 603s (the default of None has the same effect), or pass 'ignore' to ignore 603s errors. (Note that ignoring encoding errors can lead to data loss.) 603s See the documentation for codecs.register for a list of the permitted 603s encoding error strings. 603s 603s newline is a string controlling how universal newlines works (it only 603s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 603s as follows: 603s 603s * On input, if newline is None, universal newlines mode is 603s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 603s these are translated into '\n' before being returned to the 603s caller. If it is '', universal newline mode is enabled, but line 603s endings are returned to the caller untranslated. If it has any of 603s the other legal values, input lines are only terminated by the given 603s string, and the line ending is returned to the caller untranslated. 603s 603s * On output, if newline is None, any '\n' characters written are 603s translated to the system default line separator, os.linesep. If 603s newline is '', no translation takes place. If newline is any of the 603s other legal values, any '\n' characters written are translated to 603s the given string. 603s 603s closedfd is a bool. If closefd is False, the underlying file descriptor will 603s be kept open when the file is closed. This does not work when a file name is 603s given and must be True in that case. 603s 603s The newly created file is non-inheritable. 603s 603s A custom opener can be used by passing a callable as *opener*. The 603s underlying file descriptor for the file object is then obtained by calling 603s *opener* with (*file*, *flags*). *opener* must return an open file 603s descriptor (passing os.open as *opener* results in functionality similar to 603s passing None). 603s 604s open() returns a file object whose type depends on the mode, and 604s through which the standard file operations such as reading and writing 604s are performed. When open() is used to open a file in a text mode ('w', 604s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 604s a file in a binary mode, the returned class varies: in read binary 604s mode, it returns a BufferedReader; in write binary and append binary 604s modes, it returns a BufferedWriter, and in read/write mode, it returns 604s a BufferedRandom. 604s 604s It is also possible to use a string or bytearray as a file for both 604s reading and writing. For strings StringIO can be used like a file 604s opened in a text mode, and for bytes a BytesIO can be used like a file 604s opened in a binary mode. 604s """ 604s if not isinstance(file, int): 604s file = os.fspath(file) 604s if not isinstance(file, (str, bytes, int)): 604s raise TypeError("invalid file: %r" % file) 604s if not isinstance(mode, str): 604s raise TypeError("invalid mode: %r" % mode) 604s if not isinstance(buffering, int): 604s raise TypeError("invalid buffering: %r" % buffering) 604s if encoding is not None and not isinstance(encoding, str): 604s raise TypeError("invalid encoding: %r" % encoding) 604s if errors is not None and not isinstance(errors, str): 604s raise TypeError("invalid errors: %r" % errors) 604s modes = set(mode) 604s if modes - set("axrwb+t") or len(mode) > len(modes): 604s raise ValueError("invalid mode: %r" % mode) 604s creating = "x" in modes 604s reading = "r" in modes 604s writing = "w" in modes 604s appending = "a" in modes 604s updating = "+" in modes 604s text = "t" in modes 604s binary = "b" in modes 604s if text and binary: 604s raise ValueError("can't have text and binary mode at once") 604s if creating + reading + writing + appending > 1: 604s raise ValueError("can't have read/write/append mode at once") 604s if not (creating or reading or writing or appending): 604s raise ValueError("must have exactly one of read/write/append mode") 604s if binary and encoding is not None: 604s raise ValueError("binary mode doesn't take an encoding argument") 604s if binary and errors is not None: 604s raise ValueError("binary mode doesn't take an errors argument") 604s if binary and newline is not None: 604s raise ValueError("binary mode doesn't take a newline argument") 604s if binary and buffering == 1: 604s import warnings 604s warnings.warn("line buffering (buffering=1) isn't supported in binary " 604s "mode, the default buffer size will be used", 604s RuntimeWarning, 2) 604s raw = FileIO(file, 604s (creating and "x" or "") + 604s (reading and "r" or "") + 604s (writing and "w" or "") + 604s (appending and "a" or "") + 604s (updating and "+" or ""), 604s closefd, opener=opener) 604s result = raw 604s try: 604s line_buffering = False 604s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 604s ^^^^^^^^^^^^^^^^^^^^^ 604s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 604s 604s /usr/lib/python3.14/_pyio.py:242: AttributeError 604s ____________________________ test_greenpipe_append _____________________________ 604s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 604s 604s def test_greenpipe_append(): 604s old_data = b"existing data..." 604s new_data = b"append with mode=a" 604s expected = old_data + new_data 604s with tempfile.NamedTemporaryFile() as f: 604s with open(f.name, "wb") as fw: 604s fw.write(old_data) 604s 604s > with greenio.GreenPipe(f.name, "ab") as writer: 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s 604s tests/greenio_test.py:1027: 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s eventlet/greenio/py3.py:216: in GreenPipe 604s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s 604s file = '/tmp/tmpg44tobtj', mode = 'ab', buffering = -1, encoding = None 604s errors = None, newline = None, closefd = True, opener = None 604s 604s @staticmethod 604s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 604s newline=None, closefd=True, opener=None): 604s 604s r"""Open file and return a stream. Raise OSError upon failure. 604s 604s file is either a text or byte string giving the name (and the path 604s if the file isn't in the current working directory) of the file to 604s be opened or an integer file descriptor of the file to be 604s wrapped. (If a file descriptor is given, it is closed when the 604s returned I/O object is closed, unless closefd is set to False.) 604s 604s mode is an optional string that specifies the mode in which the file is 604s opened. It defaults to 'r' which means open for reading in text mode. Other 604s common values are 'w' for writing (truncating the file if it already 604s exists), 'x' for exclusive creation of a new file, and 'a' for appending 604s (which on some Unix systems, means that all writes append to the end of the 604s file regardless of the current seek position). In text mode, if encoding is 604s not specified the encoding used is platform dependent. (For reading and 604s writing raw bytes use binary mode and leave encoding unspecified.) The 604s available modes are: 604s 604s ========= =============================================================== 604s Character Meaning 604s --------- --------------------------------------------------------------- 604s 'r' open for reading (default) 604s 'w' open for writing, truncating the file first 604s 'x' create a new file and open it for writing 604s 'a' open for writing, appending to the end of the file if it exists 604s 'b' binary mode 604s 't' text mode (default) 604s '+' open a disk file for updating (reading and writing) 604s ========= =============================================================== 604s 604s The default mode is 'rt' (open for reading text). For binary random 604s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 604s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 604s raises an `FileExistsError` if the file already exists. 604s 604s Python distinguishes between files opened in binary and text modes, 604s even when the underlying operating system doesn't. Files opened in 604s binary mode (appending 'b' to the mode argument) return contents as 604s bytes objects without any decoding. In text mode (the default, or when 604s 't' is appended to the mode argument), the contents of the file are 604s returned as strings, the bytes having been first decoded using a 604s platform-dependent encoding or using the specified encoding if given. 604s 604s buffering is an optional integer used to set the buffering policy. 604s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 604s line buffering (only usable in text mode), and an integer > 1 to indicate 604s the size of a fixed-size chunk buffer. When no buffering argument is 604s given, the default buffering policy works as follows: 604s 604s * Binary files are buffered in fixed-size chunks; the size of the buffer 604s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 604s when the device block size is available. 604s On most systems, the buffer will typically be 128 kilobytes long. 604s 604s * "Interactive" text files (files for which isatty() returns True) 604s use line buffering. Other text files use the policy described above 604s for binary files. 604s 604s encoding is the str name of the encoding used to decode or encode the 604s file. This should only be used in text mode. The default encoding is 604s platform dependent, but any encoding supported by Python can be 604s passed. See the codecs module for the list of supported encodings. 604s 604s errors is an optional string that specifies how encoding errors are to 604s be handled---this argument should not be used in binary mode. Pass 604s 'strict' to raise a ValueError exception if there is an encoding error 604s (the default of None has the same effect), or pass 'ignore' to ignore 604s errors. (Note that ignoring encoding errors can lead to data loss.) 604s See the documentation for codecs.register for a list of the permitted 604s encoding error strings. 604s 604s newline is a string controlling how universal newlines works (it only 604s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 604s as follows: 604s 604s * On input, if newline is None, universal newlines mode is 604s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 604s these are translated into '\n' before being returned to the 604s caller. If it is '', universal newline mode is enabled, but line 604s endings are returned to the caller untranslated. If it has any of 604s the other legal values, input lines are only terminated by the given 604s string, and the line ending is returned to the caller untranslated. 604s 604s * On output, if newline is None, any '\n' characters written are 604s translated to the system default line separator, os.linesep. If 604s newline is '', no translation takes place. If newline is any of the 604s other legal values, any '\n' characters written are translated to 604s the given string. 604s 604s closedfd is a bool. If closefd is False, the underlying file descriptor will 604s be kept open when the file is closed. This does not work when a file name is 604s given and must be True in that case. 604s 604s The newly created file is non-inheritable. 604s 604s A custom opener can be used by passing a callable as *opener*. The 604s underlying file descriptor for the file object is then obtained by calling 604s *opener* with (*file*, *flags*). *opener* must return an open file 604s descriptor (passing os.open as *opener* results in functionality similar to 604s passing None). 604s 604s open() returns a file object whose type depends on the mode, and 604s through which the standard file operations such as reading and writing 604s are performed. When open() is used to open a file in a text mode ('w', 604s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 604s a file in a binary mode, the returned class varies: in read binary 604s mode, it returns a BufferedReader; in write binary and append binary 604s modes, it returns a BufferedWriter, and in read/write mode, it returns 604s a BufferedRandom. 604s 604s It is also possible to use a string or bytearray as a file for both 604s reading and writing. For strings StringIO can be used like a file 604s opened in a text mode, and for bytes a BytesIO can be used like a file 604s opened in a binary mode. 604s """ 604s if not isinstance(file, int): 604s file = os.fspath(file) 604s if not isinstance(file, (str, bytes, int)): 604s raise TypeError("invalid file: %r" % file) 604s if not isinstance(mode, str): 604s raise TypeError("invalid mode: %r" % mode) 604s if not isinstance(buffering, int): 604s raise TypeError("invalid buffering: %r" % buffering) 604s if encoding is not None and not isinstance(encoding, str): 604s raise TypeError("invalid encoding: %r" % encoding) 604s if errors is not None and not isinstance(errors, str): 604s raise TypeError("invalid errors: %r" % errors) 604s modes = set(mode) 604s if modes - set("axrwb+t") or len(mode) > len(modes): 604s raise ValueError("invalid mode: %r" % mode) 604s creating = "x" in modes 604s reading = "r" in modes 604s writing = "w" in modes 604s appending = "a" in modes 604s updating = "+" in modes 604s text = "t" in modes 604s binary = "b" in modes 604s if text and binary: 604s raise ValueError("can't have text and binary mode at once") 604s if creating + reading + writing + appending > 1: 604s raise ValueError("can't have read/write/append mode at once") 604s if not (creating or reading or writing or appending): 604s raise ValueError("must have exactly one of read/write/append mode") 604s if binary and encoding is not None: 604s raise ValueError("binary mode doesn't take an encoding argument") 604s if binary and errors is not None: 604s raise ValueError("binary mode doesn't take an errors argument") 604s if binary and newline is not None: 604s raise ValueError("binary mode doesn't take a newline argument") 604s if binary and buffering == 1: 604s import warnings 604s warnings.warn("line buffering (buffering=1) isn't supported in binary " 604s "mode, the default buffer size will be used", 604s RuntimeWarning, 2) 604s raw = FileIO(file, 604s (creating and "x" or "") + 604s (reading and "r" or "") + 604s (writing and "w" or "") + 604s (appending and "a" or "") + 604s (updating and "+" or ""), 604s closefd, opener=opener) 604s result = raw 604s try: 604s line_buffering = False 604s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 604s ^^^^^^^^^^^^^^^^^^^^^ 604s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 604s 604s /usr/lib/python3.14/_pyio.py:242: AttributeError 604s ________________________ test_greenpipe_read_overwrite _________________________ 604s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 604s 604s def test_greenpipe_read_overwrite(): 604s old_data = b"existing data..." 604s new_data = b"overwrite with mode=r+" 604s with tempfile.NamedTemporaryFile() as f: 604s > with greenio.GreenPipe(f.name, "wb") as writer: 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s 604s tests/greenio_test.py:1038: 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s eventlet/greenio/py3.py:216: in GreenPipe 604s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s 604s file = '/tmp/tmpsvafmww0', mode = 'wb', buffering = -1, encoding = None 604s errors = None, newline = None, closefd = True, opener = None 604s 604s @staticmethod 604s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 604s newline=None, closefd=True, opener=None): 604s 604s r"""Open file and return a stream. Raise OSError upon failure. 604s 604s file is either a text or byte string giving the name (and the path 604s if the file isn't in the current working directory) of the file to 604s be opened or an integer file descriptor of the file to be 604s wrapped. (If a file descriptor is given, it is closed when the 604s returned I/O object is closed, unless closefd is set to False.) 604s 604s mode is an optional string that specifies the mode in which the file is 604s opened. It defaults to 'r' which means open for reading in text mode. Other 604s common values are 'w' for writing (truncating the file if it already 604s exists), 'x' for exclusive creation of a new file, and 'a' for appending 604s (which on some Unix systems, means that all writes append to the end of the 604s file regardless of the current seek position). In text mode, if encoding is 604s not specified the encoding used is platform dependent. (For reading and 604s writing raw bytes use binary mode and leave encoding unspecified.) The 604s available modes are: 604s 604s ========= =============================================================== 604s Character Meaning 604s --------- --------------------------------------------------------------- 604s 'r' open for reading (default) 604s 'w' open for writing, truncating the file first 604s 'x' create a new file and open it for writing 604s 'a' open for writing, appending to the end of the file if it exists 604s 'b' binary mode 604s 't' text mode (default) 604s '+' open a disk file for updating (reading and writing) 604s ========= =============================================================== 604s 604s The default mode is 'rt' (open for reading text). For binary random 604s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 604s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 604s raises an `FileExistsError` if the file already exists. 604s 604s Python distinguishes between files opened in binary and text modes, 604s even when the underlying operating system doesn't. Files opened in 604s binary mode (appending 'b' to the mode argument) return contents as 604s bytes objects without any decoding. In text mode (the default, or when 604s 't' is appended to the mode argument), the contents of the file are 604s returned as strings, the bytes having been first decoded using a 604s platform-dependent encoding or using the specified encoding if given. 604s 604s buffering is an optional integer used to set the buffering policy. 604s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 604s line buffering (only usable in text mode), and an integer > 1 to indicate 604s the size of a fixed-size chunk buffer. When no buffering argument is 604s given, the default buffering policy works as follows: 604s 604s * Binary files are buffered in fixed-size chunks; the size of the buffer 604s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 604s when the device block size is available. 604s On most systems, the buffer will typically be 128 kilobytes long. 604s 604s * "Interactive" text files (files for which isatty() returns True) 604s use line buffering. Other text files use the policy described above 604s for binary files. 604s 604s encoding is the str name of the encoding used to decode or encode the 604s file. This should only be used in text mode. The default encoding is 604s platform dependent, but any encoding supported by Python can be 604s passed. See the codecs module for the list of supported encodings. 604s 604s errors is an optional string that specifies how encoding errors are to 604s be handled---this argument should not be used in binary mode. Pass 604s 'strict' to raise a ValueError exception if there is an encoding error 604s (the default of None has the same effect), or pass 'ignore' to ignore 604s errors. (Note that ignoring encoding errors can lead to data loss.) 604s See the documentation for codecs.register for a list of the permitted 604s encoding error strings. 604s 604s newline is a string controlling how universal newlines works (it only 604s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 604s as follows: 604s 604s * On input, if newline is None, universal newlines mode is 604s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 604s these are translated into '\n' before being returned to the 604s caller. If it is '', universal newline mode is enabled, but line 604s endings are returned to the caller untranslated. If it has any of 604s the other legal values, input lines are only terminated by the given 604s string, and the line ending is returned to the caller untranslated. 604s 604s * On output, if newline is None, any '\n' characters written are 604s translated to the system default line separator, os.linesep. If 604s newline is '', no translation takes place. If newline is any of the 604s other legal values, any '\n' characters written are translated to 604s the given string. 604s 604s closedfd is a bool. If closefd is False, the underlying file descriptor will 604s be kept open when the file is closed. This does not work when a file name is 604s given and must be True in that case. 604s 604s The newly created file is non-inheritable. 604s 604s A custom opener can be used by passing a callable as *opener*. The 604s underlying file descriptor for the file object is then obtained by calling 604s *opener* with (*file*, *flags*). *opener* must return an open file 604s descriptor (passing os.open as *opener* results in functionality similar to 604s passing None). 604s 604s open() returns a file object whose type depends on the mode, and 604s through which the standard file operations such as reading and writing 604s are performed. When open() is used to open a file in a text mode ('w', 604s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 604s a file in a binary mode, the returned class varies: in read binary 604s mode, it returns a BufferedReader; in write binary and append binary 604s modes, it returns a BufferedWriter, and in read/write mode, it returns 604s a BufferedRandom. 604s 604s It is also possible to use a string or bytearray as a file for both 604s reading and writing. For strings StringIO can be used like a file 604s opened in a text mode, and for bytes a BytesIO can be used like a file 604s opened in a binary mode. 604s """ 604s if not isinstance(file, int): 604s file = os.fspath(file) 604s if not isinstance(file, (str, bytes, int)): 604s raise TypeError("invalid file: %r" % file) 604s if not isinstance(mode, str): 604s raise TypeError("invalid mode: %r" % mode) 604s if not isinstance(buffering, int): 604s raise TypeError("invalid buffering: %r" % buffering) 604s if encoding is not None and not isinstance(encoding, str): 604s raise TypeError("invalid encoding: %r" % encoding) 604s if errors is not None and not isinstance(errors, str): 604s raise TypeError("invalid errors: %r" % errors) 604s modes = set(mode) 604s if modes - set("axrwb+t") or len(mode) > len(modes): 604s raise ValueError("invalid mode: %r" % mode) 604s creating = "x" in modes 604s reading = "r" in modes 604s writing = "w" in modes 604s appending = "a" in modes 604s updating = "+" in modes 604s text = "t" in modes 604s binary = "b" in modes 604s if text and binary: 604s raise ValueError("can't have text and binary mode at once") 604s if creating + reading + writing + appending > 1: 604s raise ValueError("can't have read/write/append mode at once") 604s if not (creating or reading or writing or appending): 604s raise ValueError("must have exactly one of read/write/append mode") 604s if binary and encoding is not None: 604s raise ValueError("binary mode doesn't take an encoding argument") 604s if binary and errors is not None: 604s raise ValueError("binary mode doesn't take an errors argument") 604s if binary and newline is not None: 604s raise ValueError("binary mode doesn't take a newline argument") 604s if binary and buffering == 1: 604s import warnings 604s warnings.warn("line buffering (buffering=1) isn't supported in binary " 604s "mode, the default buffer size will be used", 604s RuntimeWarning, 2) 604s raw = FileIO(file, 604s (creating and "x" or "") + 604s (reading and "r" or "") + 604s (writing and "w" or "") + 604s (appending and "a" or "") + 604s (updating and "+" or ""), 604s closefd, opener=opener) 604s result = raw 604s try: 604s line_buffering = False 604s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 604s ^^^^^^^^^^^^^^^^^^^^^ 604s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 604s 604s /usr/lib/python3.14/_pyio.py:242: AttributeError 604s __________________________ test_greenpipe_write_plus ___________________________ 604s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 604s 604s def test_greenpipe_write_plus(): 604s expected = "write with mode=w+" 604s with tempfile.NamedTemporaryFile() as f: 604s > with greenio.GreenPipe(f.name, "w+") as writer: 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s 604s tests/greenio_test.py:1051: 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s eventlet/greenio/py3.py:216: in GreenPipe 604s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s 604s file = '/tmp/tmpghyn0bu7', mode = 'w+', buffering = -1, encoding = None 604s errors = None, newline = None, closefd = True, opener = None 604s 604s @staticmethod 604s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 604s newline=None, closefd=True, opener=None): 604s 604s r"""Open file and return a stream. Raise OSError upon failure. 604s 604s file is either a text or byte string giving the name (and the path 604s if the file isn't in the current working directory) of the file to 604s be opened or an integer file descriptor of the file to be 604s wrapped. (If a file descriptor is given, it is closed when the 604s returned I/O object is closed, unless closefd is set to False.) 604s 604s mode is an optional string that specifies the mode in which the file is 604s opened. It defaults to 'r' which means open for reading in text mode. Other 604s common values are 'w' for writing (truncating the file if it already 604s exists), 'x' for exclusive creation of a new file, and 'a' for appending 604s (which on some Unix systems, means that all writes append to the end of the 604s file regardless of the current seek position). In text mode, if encoding is 604s not specified the encoding used is platform dependent. (For reading and 604s writing raw bytes use binary mode and leave encoding unspecified.) The 604s available modes are: 604s 604s ========= =============================================================== 604s Character Meaning 604s --------- --------------------------------------------------------------- 604s 'r' open for reading (default) 604s 'w' open for writing, truncating the file first 604s 'x' create a new file and open it for writing 604s 'a' open for writing, appending to the end of the file if it exists 604s 'b' binary mode 604s 't' text mode (default) 604s '+' open a disk file for updating (reading and writing) 604s ========= =============================================================== 604s 604s The default mode is 'rt' (open for reading text). For binary random 604s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 604s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 604s raises an `FileExistsError` if the file already exists. 604s 604s Python distinguishes between files opened in binary and text modes, 604s even when the underlying operating system doesn't. Files opened in 604s binary mode (appending 'b' to the mode argument) return contents as 604s bytes objects without any decoding. In text mode (the default, or when 604s 't' is appended to the mode argument), the contents of the file are 604s returned as strings, the bytes having been first decoded using a 604s platform-dependent encoding or using the specified encoding if given. 604s 604s buffering is an optional integer used to set the buffering policy. 604s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 604s line buffering (only usable in text mode), and an integer > 1 to indicate 604s the size of a fixed-size chunk buffer. When no buffering argument is 604s given, the default buffering policy works as follows: 604s 604s * Binary files are buffered in fixed-size chunks; the size of the buffer 604s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 604s when the device block size is available. 604s On most systems, the buffer will typically be 128 kilobytes long. 604s 604s * "Interactive" text files (files for which isatty() returns True) 604s use line buffering. Other text files use the policy described above 604s for binary files. 604s 604s encoding is the str name of the encoding used to decode or encode the 604s file. This should only be used in text mode. The default encoding is 604s platform dependent, but any encoding supported by Python can be 604s passed. See the codecs module for the list of supported encodings. 604s 604s errors is an optional string that specifies how encoding errors are to 604s be handled---this argument should not be used in binary mode. Pass 604s 'strict' to raise a ValueError exception if there is an encoding error 604s (the default of None has the same effect), or pass 'ignore' to ignore 604s errors. (Note that ignoring encoding errors can lead to data loss.) 604s See the documentation for codecs.register for a list of the permitted 604s encoding error strings. 604s 604s newline is a string controlling how universal newlines works (it only 604s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 604s as follows: 604s 604s * On input, if newline is None, universal newlines mode is 604s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 604s these are translated into '\n' before being returned to the 604s caller. If it is '', universal newline mode is enabled, but line 604s endings are returned to the caller untranslated. If it has any of 604s the other legal values, input lines are only terminated by the given 604s string, and the line ending is returned to the caller untranslated. 604s 604s * On output, if newline is None, any '\n' characters written are 604s translated to the system default line separator, os.linesep. If 604s newline is '', no translation takes place. If newline is any of the 604s other legal values, any '\n' characters written are translated to 604s the given string. 604s 604s closedfd is a bool. If closefd is False, the underlying file descriptor will 604s be kept open when the file is closed. This does not work when a file name is 604s given and must be True in that case. 604s 604s The newly created file is non-inheritable. 604s 604s A custom opener can be used by passing a callable as *opener*. The 604s underlying file descriptor for the file object is then obtained by calling 604s *opener* with (*file*, *flags*). *opener* must return an open file 604s descriptor (passing os.open as *opener* results in functionality similar to 604s passing None). 604s 604s open() returns a file object whose type depends on the mode, and 604s through which the standard file operations such as reading and writing 604s are performed. When open() is used to open a file in a text mode ('w', 604s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 604s a file in a binary mode, the returned class varies: in read binary 604s mode, it returns a BufferedReader; in write binary and append binary 604s modes, it returns a BufferedWriter, and in read/write mode, it returns 604s a BufferedRandom. 604s 604s It is also possible to use a string or bytearray as a file for both 604s reading and writing. For strings StringIO can be used like a file 604s opened in a text mode, and for bytes a BytesIO can be used like a file 604s opened in a binary mode. 604s """ 604s if not isinstance(file, int): 604s file = os.fspath(file) 604s if not isinstance(file, (str, bytes, int)): 604s raise TypeError("invalid file: %r" % file) 604s if not isinstance(mode, str): 604s raise TypeError("invalid mode: %r" % mode) 604s if not isinstance(buffering, int): 604s raise TypeError("invalid buffering: %r" % buffering) 604s if encoding is not None and not isinstance(encoding, str): 604s raise TypeError("invalid encoding: %r" % encoding) 604s if errors is not None and not isinstance(errors, str): 604s raise TypeError("invalid errors: %r" % errors) 604s modes = set(mode) 604s if modes - set("axrwb+t") or len(mode) > len(modes): 604s raise ValueError("invalid mode: %r" % mode) 604s creating = "x" in modes 604s reading = "r" in modes 604s writing = "w" in modes 604s appending = "a" in modes 604s updating = "+" in modes 604s text = "t" in modes 604s binary = "b" in modes 604s if text and binary: 604s raise ValueError("can't have text and binary mode at once") 604s if creating + reading + writing + appending > 1: 604s raise ValueError("can't have read/write/append mode at once") 604s if not (creating or reading or writing or appending): 604s raise ValueError("must have exactly one of read/write/append mode") 604s if binary and encoding is not None: 604s raise ValueError("binary mode doesn't take an encoding argument") 604s if binary and errors is not None: 604s raise ValueError("binary mode doesn't take an errors argument") 604s if binary and newline is not None: 604s raise ValueError("binary mode doesn't take a newline argument") 604s if binary and buffering == 1: 604s import warnings 604s warnings.warn("line buffering (buffering=1) isn't supported in binary " 604s "mode, the default buffer size will be used", 604s RuntimeWarning, 2) 604s raw = FileIO(file, 604s (creating and "x" or "") + 604s (reading and "r" or "") + 604s (writing and "w" or "") + 604s (appending and "a" or "") + 604s (updating and "+" or ""), 604s closefd, opener=opener) 604s result = raw 604s try: 604s line_buffering = False 604s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 604s ^^^^^^^^^^^^^^^^^^^^^ 604s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 604s 604s /usr/lib/python3.14/_pyio.py:242: AttributeError 604s __________________________ test_greenpipe_append_plus __________________________ 604s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 604s 604s def test_greenpipe_append_plus(): 604s expected = "append with mode=a+" 604s with tempfile.NamedTemporaryFile() as f: 604s > with greenio.GreenPipe(f.name, "a+") as writer: 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s 604s tests/greenio_test.py:1061: 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s eventlet/greenio/py3.py:216: in GreenPipe 604s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s 604s file = '/tmp/tmp_wcjhavn', mode = 'a+', buffering = -1, encoding = None 604s errors = None, newline = None, closefd = True, opener = None 604s 604s @staticmethod 604s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 604s newline=None, closefd=True, opener=None): 604s 604s r"""Open file and return a stream. Raise OSError upon failure. 604s 604s file is either a text or byte string giving the name (and the path 604s if the file isn't in the current working directory) of the file to 604s be opened or an integer file descriptor of the file to be 604s wrapped. (If a file descriptor is given, it is closed when the 604s returned I/O object is closed, unless closefd is set to False.) 604s 604s mode is an optional string that specifies the mode in which the file is 604s opened. It defaults to 'r' which means open for reading in text mode. Other 604s common values are 'w' for writing (truncating the file if it already 604s exists), 'x' for exclusive creation of a new file, and 'a' for appending 604s (which on some Unix systems, means that all writes append to the end of the 604s file regardless of the current seek position). In text mode, if encoding is 604s not specified the encoding used is platform dependent. (For reading and 604s writing raw bytes use binary mode and leave encoding unspecified.) The 604s available modes are: 604s 604s ========= =============================================================== 604s Character Meaning 604s --------- --------------------------------------------------------------- 604s 'r' open for reading (default) 604s 'w' open for writing, truncating the file first 604s 'x' create a new file and open it for writing 604s 'a' open for writing, appending to the end of the file if it exists 604s 'b' binary mode 604s 't' text mode (default) 604s '+' open a disk file for updating (reading and writing) 604s ========= =============================================================== 604s 604s The default mode is 'rt' (open for reading text). For binary random 604s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 604s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 604s raises an `FileExistsError` if the file already exists. 604s 604s Python distinguishes between files opened in binary and text modes, 604s even when the underlying operating system doesn't. Files opened in 604s binary mode (appending 'b' to the mode argument) return contents as 604s bytes objects without any decoding. In text mode (the default, or when 604s 't' is appended to the mode argument), the contents of the file are 604s returned as strings, the bytes having been first decoded using a 604s platform-dependent encoding or using the specified encoding if given. 604s 604s buffering is an optional integer used to set the buffering policy. 604s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 604s line buffering (only usable in text mode), and an integer > 1 to indicate 604s the size of a fixed-size chunk buffer. When no buffering argument is 604s given, the default buffering policy works as follows: 604s 604s * Binary files are buffered in fixed-size chunks; the size of the buffer 604s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 604s when the device block size is available. 604s On most systems, the buffer will typically be 128 kilobytes long. 604s 604s * "Interactive" text files (files for which isatty() returns True) 604s use line buffering. Other text files use the policy described above 604s for binary files. 604s 604s encoding is the str name of the encoding used to decode or encode the 604s file. This should only be used in text mode. The default encoding is 604s platform dependent, but any encoding supported by Python can be 604s passed. See the codecs module for the list of supported encodings. 604s 604s errors is an optional string that specifies how encoding errors are to 604s be handled---this argument should not be used in binary mode. Pass 604s 'strict' to raise a ValueError exception if there is an encoding error 604s (the default of None has the same effect), or pass 'ignore' to ignore 604s errors. (Note that ignoring encoding errors can lead to data loss.) 604s See the documentation for codecs.register for a list of the permitted 604s encoding error strings. 604s 604s newline is a string controlling how universal newlines works (it only 604s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 604s as follows: 604s 604s * On input, if newline is None, universal newlines mode is 604s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 604s these are translated into '\n' before being returned to the 604s caller. If it is '', universal newline mode is enabled, but line 604s endings are returned to the caller untranslated. If it has any of 604s the other legal values, input lines are only terminated by the given 604s string, and the line ending is returned to the caller untranslated. 604s 604s * On output, if newline is None, any '\n' characters written are 604s translated to the system default line separator, os.linesep. If 604s newline is '', no translation takes place. If newline is any of the 604s other legal values, any '\n' characters written are translated to 604s the given string. 604s 604s closedfd is a bool. If closefd is False, the underlying file descriptor will 604s be kept open when the file is closed. This does not work when a file name is 604s given and must be True in that case. 604s 604s The newly created file is non-inheritable. 604s 604s A custom opener can be used by passing a callable as *opener*. The 604s underlying file descriptor for the file object is then obtained by calling 604s *opener* with (*file*, *flags*). *opener* must return an open file 604s descriptor (passing os.open as *opener* results in functionality similar to 604s passing None). 604s 604s open() returns a file object whose type depends on the mode, and 604s through which the standard file operations such as reading and writing 604s are performed. When open() is used to open a file in a text mode ('w', 604s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 604s a file in a binary mode, the returned class varies: in read binary 604s mode, it returns a BufferedReader; in write binary and append binary 604s modes, it returns a BufferedWriter, and in read/write mode, it returns 604s a BufferedRandom. 604s 604s It is also possible to use a string or bytearray as a file for both 604s reading and writing. For strings StringIO can be used like a file 604s opened in a text mode, and for bytes a BytesIO can be used like a file 604s opened in a binary mode. 604s """ 604s if not isinstance(file, int): 604s file = os.fspath(file) 604s if not isinstance(file, (str, bytes, int)): 604s raise TypeError("invalid file: %r" % file) 604s if not isinstance(mode, str): 604s raise TypeError("invalid mode: %r" % mode) 604s if not isinstance(buffering, int): 604s raise TypeError("invalid buffering: %r" % buffering) 604s if encoding is not None and not isinstance(encoding, str): 604s raise TypeError("invalid encoding: %r" % encoding) 604s if errors is not None and not isinstance(errors, str): 604s raise TypeError("invalid errors: %r" % errors) 604s modes = set(mode) 604s if modes - set("axrwb+t") or len(mode) > len(modes): 604s raise ValueError("invalid mode: %r" % mode) 604s creating = "x" in modes 604s reading = "r" in modes 604s writing = "w" in modes 604s appending = "a" in modes 604s updating = "+" in modes 604s text = "t" in modes 604s binary = "b" in modes 604s if text and binary: 604s raise ValueError("can't have text and binary mode at once") 604s if creating + reading + writing + appending > 1: 604s raise ValueError("can't have read/write/append mode at once") 604s if not (creating or reading or writing or appending): 604s raise ValueError("must have exactly one of read/write/append mode") 604s if binary and encoding is not None: 604s raise ValueError("binary mode doesn't take an encoding argument") 604s if binary and errors is not None: 604s raise ValueError("binary mode doesn't take an errors argument") 604s if binary and newline is not None: 604s raise ValueError("binary mode doesn't take a newline argument") 604s if binary and buffering == 1: 604s import warnings 604s warnings.warn("line buffering (buffering=1) isn't supported in binary " 604s "mode, the default buffer size will be used", 604s RuntimeWarning, 2) 604s raw = FileIO(file, 604s (creating and "x" or "") + 604s (reading and "r" or "") + 604s (writing and "w" or "") + 604s (appending and "a" or "") + 604s (updating and "+" or ""), 604s closefd, opener=opener) 604s result = raw 604s try: 604s line_buffering = False 604s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 604s ^^^^^^^^^^^^^^^^^^^^^ 604s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 604s 604s /usr/lib/python3.14/_pyio.py:242: AttributeError 604s _____________________________ test_subprocess_wait _____________________________ 604s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 604s 604s def test_subprocess_wait(): 604s # https://bitbucket.org/eventlet/eventlet/issue/89 604s # In Python 3.3 subprocess.Popen.wait() method acquired `timeout` 604s # argument. 604s # RHEL backported it to their Python 2.6 package. 604s cmd = [sys.executable, "-c", "import time; time.sleep(0.5)"] 604s p = subprocess.Popen(cmd) 604s ok = False 604s t1 = time.time() 604s try: 604s p.wait(timeout=0.1) 604s except subprocess.TimeoutExpired as e: 604s str(e) # make sure it doesn't throw 604s assert e.cmd == cmd 604s assert e.timeout == 0.1 604s ok = True 604s tdiff = time.time() - t1 604s assert ok, 'did not raise subprocess.TimeoutExpired' 604s > assert 0.1 <= tdiff <= 0.2, 'did not stop within allowed time' 604s E AssertionError: did not stop within allowed time 604s E assert 0.23408079147338867 <= 0.2 604s 604s tests/subprocess_test.py:29: AssertionError 604s _____________________________ test_universal_lines _____________________________ 604s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 604s 604s def test_universal_lines(): 604s > p = subprocess.Popen( 604s [sys.executable, '--version'], 604s shell=False, 604s stdout=subprocess.PIPE, 604s universal_newlines=True) 604s 604s tests/subprocess_test.py:52: 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s eventlet/green/subprocess.py:73: in __init__ 604s wrapped_pipe = greenio.GreenPipe(pipe, mode, bufsize) 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s eventlet/greenio/py3.py:216: in GreenPipe 604s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 604s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s 604s file = 28, mode = 'r', buffering = -1, encoding = None, errors = None 604s newline = None, closefd = True, opener = None 604s 604s @staticmethod 604s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 604s newline=None, closefd=True, opener=None): 604s 604s r"""Open file and return a stream. Raise OSError upon failure. 604s 604s file is either a text or byte string giving the name (and the path 604s if the file isn't in the current working directory) of the file to 604s be opened or an integer file descriptor of the file to be 604s wrapped. (If a file descriptor is given, it is closed when the 604s returned I/O object is closed, unless closefd is set to False.) 604s 604s mode is an optional string that specifies the mode in which the file is 604s opened. It defaults to 'r' which means open for reading in text mode. Other 604s common values are 'w' for writing (truncating the file if it already 604s exists), 'x' for exclusive creation of a new file, and 'a' for appending 604s (which on some Unix systems, means that all writes append to the end of the 604s file regardless of the current seek position). In text mode, if encoding is 604s not specified the encoding used is platform dependent. (For reading and 604s writing raw bytes use binary mode and leave encoding unspecified.) The 604s available modes are: 604s 604s ========= =============================================================== 604s Character Meaning 604s --------- --------------------------------------------------------------- 604s 'r' open for reading (default) 604s 'w' open for writing, truncating the file first 604s 'x' create a new file and open it for writing 604s 'a' open for writing, appending to the end of the file if it exists 604s 'b' binary mode 604s 't' text mode (default) 604s '+' open a disk file for updating (reading and writing) 604s ========= =============================================================== 604s 604s The default mode is 'rt' (open for reading text). For binary random 604s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 604s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 604s raises an `FileExistsError` if the file already exists. 604s 604s Python distinguishes between files opened in binary and text modes, 604s even when the underlying operating system doesn't. Files opened in 604s binary mode (appending 'b' to the mode argument) return contents as 604s bytes objects without any decoding. In text mode (the default, or when 604s 't' is appended to the mode argument), the contents of the file are 604s returned as strings, the bytes having been first decoded using a 604s platform-dependent encoding or using the specified encoding if given. 604s 604s buffering is an optional integer used to set the buffering policy. 604s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 604s line buffering (only usable in text mode), and an integer > 1 to indicate 604s the size of a fixed-size chunk buffer. When no buffering argument is 604s given, the default buffering policy works as follows: 604s 604s * Binary files are buffered in fixed-size chunks; the size of the buffer 604s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 604s when the device block size is available. 604s On most systems, the buffer will typically be 128 kilobytes long. 604s 604s * "Interactive" text files (files for which isatty() returns True) 604s use line buffering. Other text files use the policy described above 604s for binary files. 604s 604s encoding is the str name of the encoding used to decode or encode the 604s file. This should only be used in text mode. The default encoding is 604s platform dependent, but any encoding supported by Python can be 604s passed. See the codecs module for the list of supported encodings. 604s 604s errors is an optional string that specifies how encoding errors are to 604s be handled---this argument should not be used in binary mode. Pass 604s 'strict' to raise a ValueError exception if there is an encoding error 604s (the default of None has the same effect), or pass 'ignore' to ignore 604s errors. (Note that ignoring encoding errors can lead to data loss.) 604s See the documentation for codecs.register for a list of the permitted 604s encoding error strings. 604s 604s newline is a string controlling how universal newlines works (it only 604s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 604s as follows: 604s 604s * On input, if newline is None, universal newlines mode is 604s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 604s these are translated into '\n' before being returned to the 604s caller. If it is '', universal newline mode is enabled, but line 604s endings are returned to the caller untranslated. If it has any of 604s the other legal values, input lines are only terminated by the given 604s string, and the line ending is returned to the caller untranslated. 604s 604s * On output, if newline is None, any '\n' characters written are 604s translated to the system default line separator, os.linesep. If 604s newline is '', no translation takes place. If newline is any of the 604s other legal values, any '\n' characters written are translated to 604s the given string. 604s 604s closedfd is a bool. If closefd is False, the underlying file descriptor will 604s be kept open when the file is closed. This does not work when a file name is 604s given and must be True in that case. 604s 604s The newly created file is non-inheritable. 604s 604s A custom opener can be used by passing a callable as *opener*. The 604s underlying file descriptor for the file object is then obtained by calling 604s *opener* with (*file*, *flags*). *opener* must return an open file 604s descriptor (passing os.open as *opener* results in functionality similar to 604s passing None). 604s 604s open() returns a file object whose type depends on the mode, and 604s through which the standard file operations such as reading and writing 604s are performed. When open() is used to open a file in a text mode ('w', 604s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 604s a file in a binary mode, the returned class varies: in read binary 604s mode, it returns a BufferedReader; in write binary and append binary 604s modes, it returns a BufferedWriter, and in read/write mode, it returns 604s a BufferedRandom. 604s 604s It is also possible to use a string or bytearray as a file for both 604s reading and writing. For strings StringIO can be used like a file 604s opened in a text mode, and for bytes a BytesIO can be used like a file 604s opened in a binary mode. 604s """ 604s if not isinstance(file, int): 604s file = os.fspath(file) 604s if not isinstance(file, (str, bytes, int)): 604s raise TypeError("invalid file: %r" % file) 604s if not isinstance(mode, str): 604s raise TypeError("invalid mode: %r" % mode) 604s if not isinstance(buffering, int): 604s raise TypeError("invalid buffering: %r" % buffering) 604s if encoding is not None and not isinstance(encoding, str): 604s raise TypeError("invalid encoding: %r" % encoding) 604s if errors is not None and not isinstance(errors, str): 604s raise TypeError("invalid errors: %r" % errors) 604s modes = set(mode) 604s if modes - set("axrwb+t") or len(mode) > len(modes): 604s raise ValueError("invalid mode: %r" % mode) 604s creating = "x" in modes 604s reading = "r" in modes 604s writing = "w" in modes 604s appending = "a" in modes 604s updating = "+" in modes 604s text = "t" in modes 604s binary = "b" in modes 604s if text and binary: 604s raise ValueError("can't have text and binary mode at once") 604s if creating + reading + writing + appending > 1: 604s raise ValueError("can't have read/write/append mode at once") 604s if not (creating or reading or writing or appending): 604s raise ValueError("must have exactly one of read/write/append mode") 604s if binary and encoding is not None: 604s raise ValueError("binary mode doesn't take an encoding argument") 604s if binary and errors is not None: 604s raise ValueError("binary mode doesn't take an errors argument") 604s if binary and newline is not None: 604s raise ValueError("binary mode doesn't take a newline argument") 604s if binary and buffering == 1: 604s import warnings 604s warnings.warn("line buffering (buffering=1) isn't supported in binary " 604s "mode, the default buffer size will be used", 604s RuntimeWarning, 2) 604s raw = FileIO(file, 604s (creating and "x" or "") + 604s (reading and "r" or "") + 604s (writing and "w" or "") + 604s (appending and "a" or "") + 604s (updating and "+" or ""), 604s closefd, opener=opener) 604s result = raw 604s try: 604s line_buffering = False 604s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 604s ^^^^^^^^^^^^^^^^^^^^^ 604s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 604s 604s /usr/lib/python3.14/_pyio.py:242: AttributeError 604s __________________________ test_regular_file_readall ___________________________ 604s [gw1] linux -- Python 3.14.2 /usr/bin/python3.14 604s 604s def test_regular_file_readall(): 604s > tests.run_isolated('regular_file_readall.py') 604s 604s tests/patcher_test.py:499: 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s tests/__init__.py:365: in run_isolated 604s run_python(prefix + path, **kwargs) 604s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 604s 604s path = '/tmp/autopkgtest.tr1sSo/build.emR/src/tests/isolated/regular_file_readall.py' 604s env = None, args = None, timeout = 10, pythonpath_extend = None 604s expect_pass = True 604s 604s def run_python(path, env=None, args=None, timeout=None, pythonpath_extend=None, expect_pass=False): 604s new_argv = [sys.executable] 604s new_env = os.environ.copy() 604s new_env.setdefault('eventlet_test_in_progress', 'yes') 604s src_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 604s if path: 604s path = os.path.abspath(path) 604s new_argv.append(path) 604s new_env['PYTHONPATH'] = os.pathsep.join(sys.path + [src_dir]) 604s if env: 604s new_env.update(env) 604s if pythonpath_extend: 604s new_path = [p for p in new_env.get('PYTHONPATH', '').split(os.pathsep) if p] 604s new_path.extend( 604s p if os.path.isabs(p) else os.path.join(src_dir, p) for p in pythonpath_extend 604s ) 604s new_env['PYTHONPATH'] = os.pathsep.join(new_path) 604s if args: 604s new_argv.extend(args) 604s p = subprocess.Popen( 604s new_argv, 604s env=new_env, 604s stderr=subprocess.STDOUT, 604s stdin=subprocess.PIPE, 604s stdout=subprocess.PIPE, 604s ) 604s if timeout is None: 604s timeout = 10 604s try: 604s output, _ = p.communicate(timeout=timeout) 604s except subprocess.TimeoutExpired: 604s p.kill() 604s output, _ = p.communicate(timeout=timeout) 604s if expect_pass: 604s sys.stderr.write('Program {} output:\n---\n{}\n---\n'.format(path, output.decode())) 604s assert False, 'timed out' 604s return '{}\nFAIL - timed out'.format(output).encode() 604s 604s if expect_pass: 604s if output.startswith(b'skip'): 604s parts = output.rstrip().split(b':', 1) 604s skip_args = [] 604s if len(parts) > 1: 604s skip_args.append(parts[1]) 604s raise SkipTest(*skip_args) 604s lines = output.splitlines() 604s ok = lines[-1].rstrip() == b'pass' 604s if not ok or len(lines) > 1: 604s sys.stderr.write('Program {} output:\n---\n{}\n---\n'.format(path, output.decode(errors="backslashreplace"))) 604s > assert ok, 'Expected single line "pass" in stdout' 604s ^^ 604s E AssertionError: Expected single line "pass" in stdout 604s 604s tests/__init__.py:358: AssertionError 604s ----------------------------- Captured stderr call ----------------------------- 604s Program /tmp/autopkgtest.tr1sSo/build.emR/src/tests/isolated/regular_file_readall.py output: 604s --- 604s Traceback (most recent call last): 604s File "/tmp/autopkgtest.tr1sSo/build.emR/src/tests/isolated/regular_file_readall.py", line 17, in 604s fp = os.fdopen(fd, "rb") 604s File "/tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/green/os.py", line 29, in fdopen 604s return greenio.GreenPipe(fd, *args, **kw) 604s ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ 604s File "/tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/greenio/py3.py", line 216, in GreenPipe 604s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 604s File "/usr/lib/python3.14/_pyio.py", line 242, in open 604s if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 604s ^^^^^^^^^^^^^^^^^^^^^ 604s AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 604s 604s --- 604s =============================== warnings summary =============================== 604s eventlet/greenpool.py:95 604s eventlet/greenpool.py:95 604s /tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/greenpool.py:95: SyntaxWarning: 'return' in a 'finally' block 604s return 604s 604s tests/api_test.py: 2 warnings 604s tests/convenience_test.py: 2 warnings 604s tests/greenio_test.py: 1 warning 604s tests/ssl_test.py: 26 warnings 604s tests/websocket_test.py: 2 warnings 604s tests/wsgi_test.py: 9 warnings 604s /tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/green/ssl.py:97: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated 604s context = _original_sslcontext(protocol=ssl_version) 604s 604s tests/backdoor_test.py::BackdoorTest::test_quick_client_disconnect 604s tests/backdoor_test.py::BackdoorTest::test_server 604s tests/backdoor_test.py::BackdoorTest::test_server_on_unix_socket 604s /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored while finalizing file <_io.TextIOWrapper mode='rw' encoding='UTF-8'>: None 604s 604s Traceback (most recent call last): 604s File "/usr/lib/python3.14/socket.py", line 743, in write 604s return self._sock.send(b) 604s ~~~~~~~~~~~~~~~^^^ 604s File "/tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/greenio/base.py", line 383, in send 604s return self._send_loop(self.fd.send, data, flags) 604s ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s File "/tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/greenio/base.py", line 370, in _send_loop 604s return send_method(data, *args) 604s BrokenPipeError: [Errno 32] Broken pipe 604s 604s During handling of the above exception, another exception occurred: 604s 604s Traceback (most recent call last): 604s File "/usr/lib/python3.14/socket.py", line 743, in write 604s return self._sock.send(b) 604s ~~~~~~~~~~~~~~~^^^ 604s File "/tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/greenio/base.py", line 383, in send 604s return self._send_loop(self.fd.send, data, flags) 604s ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ 604s File "/tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/greenio/base.py", line 370, in _send_loop 604s return send_method(data, *args) 604s BrokenPipeError: [Errno 32] Broken pipe 604s 604s 604s warnings.warn(pytest.PytestUnraisableExceptionWarning(msg)) 604s 604s tests/not_asyncio_test.py::test_spawn_from_coroutine_errors 604s /tmp/autopkgtest.tr1sSo/build.emR/src/tests/not_asyncio_test.py:22: RuntimeWarning: coroutine 'test_spawn_from_coroutine_errors..go' was never awaited 604s with pytest.raises(RuntimeError): 604s Enable tracemalloc to get traceback where the object was allocated. 604s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 604s 604s tests/openssl_test.py::test_import 604s tests/openssl_test.py::test_import 604s /tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/green/OpenSSL/crypto.py:1: DeprecationWarning: CSR support in pyOpenSSL is deprecated. You should use the APIs in cryptography. 604s from OpenSSL.crypto import * 604s 604s tests/ssl_test.py::SSLTest::test_context_wrapped_accept 604s /tmp/autopkgtest.tr1sSo/build.emR/src/tests/ssl_test.py:333: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated 604s context = ssl.SSLContext(ssl.PROTOCOL_TLS) 604s 604s tests/wsgi_test.py::TestHttpd::test_017_ssl_zeroreturnerror 604s /tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/green/ssl.py:97: DeprecationWarning: ssl.PROTOCOL_TLSv1_2 is deprecated 604s context = _original_sslcontext(protocol=ssl_version) 604s 604s tests/wsgi_test.py::TestHttpd::test_disable_header_name_capitalization 604s /tmp/autopkgtest.tr1sSo/build.emR/src/eventlet/greenthread.py:272: DeprecationWarning: capitalize_response_headers is disabled. 604s Please, make sure you know what you are doing. 604s HTTP headers names are case-insensitive per RFC standard. 604s Most likely, you need to fix HTTP parsing in your client software. 604s result = function(*args, **kwargs) 604s 604s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 604s =========================== short test summary info ============================ 604s FAILED tests/greenio_test.py::TestGreenPipe::test_pip_read_until_end - Attrib... 604s FAILED tests/greenio_test.py::TestGreenPipe::test_pipe - AttributeError: 'Gre... 604s FAILED tests/greenio_test.py::TestGreenPipe::test_pipe_read - AttributeError:... 604s FAILED tests/greenio_test.py::TestGreenPipe::test_pipe_writes_large_messages 604s FAILED tests/greenio_test.py::TestGreenIoLong::test_multiple_readers - tests.... 604s FAILED tests/greenio_test.py::test_pipe_context - AttributeError: 'GreenFileI... 604s FAILED tests/greenio_test.py::test_greenpipe_write - AttributeError: 'GreenFi... 604s FAILED tests/greenio_test.py::test_greenpipe_append - AttributeError: 'GreenF... 604s FAILED tests/greenio_test.py::test_greenpipe_read_overwrite - AttributeError:... 604s FAILED tests/greenio_test.py::test_greenpipe_write_plus - AttributeError: 'Gr... 604s FAILED tests/greenio_test.py::test_greenpipe_append_plus - AttributeError: 'G... 604s FAILED tests/subprocess_test.py::test_subprocess_wait - AssertionError: did n... 604s FAILED tests/subprocess_test.py::test_universal_lines - AttributeError: 'Gree... 604s FAILED tests/patcher_test.py::test_regular_file_readall - AssertionError: Exp... 604s ERROR tests/test__greenness.py - NameError: name 'URLopener' is not defined 604s ERROR tests/test__greenness.py - NameError: name 'URLopener' is not defined 604s ERROR tests/greenio_test.py::TestGreenIoLong::test_multiple_readers - Asserti... 604s = 14 failed, 615 passed, 89 skipped, 53 warnings, 3 errors in 165.15s (0:02:45) = 605s autopkgtest [12:26:06]: test unittests: -----------------------] 606s unittests FAIL non-zero exit status 1 606s autopkgtest [12:26:07]: test unittests: - - - - - - - - - - results - - - - - - - - - - 607s autopkgtest [12:26:08]: @@@@@@@@@@@@@@@@@@@@ summary 607s listen3 PASS 607s unittests FAIL non-zero exit status 1