0s autopkgtest [01:53:27]: starting date and time: 2026-02-06 01:53:27+0000 0s autopkgtest [01:53:27]: git checkout: 4b346b80 nova: make wait_reboot return success even when a no-op 0s autopkgtest [01:53:27]: host juju-7f2275-prod-proposed-migration-environment-20; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.mz3ue8x4/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-arm64 --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-20@sto01-arm64-29.secgroup --name adt-resolute-arm64-python-eventlet-20260206-015326-juju-7f2275-prod-proposed-migration-environment-20-7314af2e-c0d2-4705-a487-68b579284487 --image adt/ubuntu-resolute-arm64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-20 --net-id=net_prod-autopkgtest-workers-arm64 -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 6s Creating nova instance adt-resolute-arm64-python-eventlet-20260206-015326-juju-7f2275-prod-proposed-migration-environment-20-7314af2e-c0d2-4705-a487-68b579284487 from image adt/ubuntu-resolute-arm64-server-20260205.img (UUID 88169191-3954-4b52-b471-25031b32a3a0)... 70s autopkgtest [01:54:37]: testbed dpkg architecture: arm64 70s autopkgtest [01:54:37]: testbed apt version: 3.1.14 71s autopkgtest [01:54:38]: @@@@@@@@@@@@@@@@@@@@ test bed setup 71s autopkgtest [01:54:38]: testbed release detected to be: None 72s autopkgtest [01:54:39]: updating testbed package index (apt update) 72s Get:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease [124 kB] 72s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 72s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 72s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 72s Get:5 http://ftpmaster.internal/ubuntu resolute-proposed/main Sources [221 kB] 72s Get:6 http://ftpmaster.internal/ubuntu resolute-proposed/restricted Sources [5260 B] 73s Get:7 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse Sources [31.4 kB] 73s Get:8 http://ftpmaster.internal/ubuntu resolute-proposed/universe Sources [1631 kB] 73s Get:9 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 Packages [269 kB] 74s Get:10 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 c-n-f Metadata [7344 B] 74s Get:11 http://ftpmaster.internal/ubuntu resolute-proposed/restricted arm64 Packages [52.9 kB] 74s Get:12 http://ftpmaster.internal/ubuntu resolute-proposed/restricted arm64 c-n-f Metadata [328 B] 74s Get:13 http://ftpmaster.internal/ubuntu resolute-proposed/universe arm64 Packages [1462 kB] 75s Get:14 http://ftpmaster.internal/ubuntu resolute-proposed/universe arm64 c-n-f Metadata [42.1 kB] 75s Get:15 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse arm64 Packages [23.6 kB] 75s Get:16 http://ftpmaster.internal/ubuntu resolute-proposed/multiverse arm64 c-n-f Metadata [776 B] 79s Fetched 3872 kB in 3s (1354 kB/s) 80s Reading package lists... 80s Hit:1 http://ftpmaster.internal/ubuntu resolute-proposed InRelease 80s Hit:2 http://ftpmaster.internal/ubuntu resolute InRelease 80s Hit:3 http://ftpmaster.internal/ubuntu resolute-updates InRelease 80s Hit:4 http://ftpmaster.internal/ubuntu resolute-security InRelease 81s Reading package lists... 81s Reading package lists... 82s Building dependency tree... 82s Reading state information... 82s Calculating upgrade... 82s The following packages will be upgraded: 82s libdrm-amdgpu1 libdrm-common libdrm2 mawk netbase 82s 5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 82s Need to get 216 kB of archives. 82s After this operation, 0 B of additional disk space will be used. 82s Get:1 http://ftpmaster.internal/ubuntu resolute/main arm64 mawk arm64 1.3.4.20260129-1 [128 kB] 83s Get:2 http://ftpmaster.internal/ubuntu resolute-proposed/main arm64 netbase all 6.5build1 [13.0 kB] 83s Get:3 http://ftpmaster.internal/ubuntu resolute/main arm64 libdrm-common all 2.4.131-1 [9774 B] 83s Get:4 http://ftpmaster.internal/ubuntu resolute/main arm64 libdrm2 arm64 2.4.131-1 [42.6 kB] 83s Get:5 http://ftpmaster.internal/ubuntu resolute/main arm64 libdrm-amdgpu1 arm64 2.4.131-1 [22.6 kB] 83s dpkg-preconfigure: unable to re-open stdin: No such file or directory 83s Fetched 216 kB in 0s (2204 kB/s) 83s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 89360 files and directories currently installed.) 83s Preparing to unpack .../mawk_1.3.4.20260129-1_arm64.deb ... 83s Unpacking mawk (1.3.4.20260129-1) over (1.3.4.20250131-2) ... 83s Preparing to unpack .../netbase_6.5build1_all.deb ... 83s Unpacking netbase (6.5build1) over (6.5) ... 83s Preparing to unpack .../libdrm-common_2.4.131-1_all.deb ... 83s Unpacking libdrm-common (2.4.131-1) over (2.4.129-1) ... 84s Preparing to unpack .../libdrm2_2.4.131-1_arm64.deb ... 84s Unpacking libdrm2:arm64 (2.4.131-1) over (2.4.129-1) ... 84s Preparing to unpack .../libdrm-amdgpu1_2.4.131-1_arm64.deb ... 84s Unpacking libdrm-amdgpu1:arm64 (2.4.131-1) over (2.4.129-1) ... 84s Setting up netbase (6.5build1) ... 84s Setting up mawk (1.3.4.20260129-1) ... 84s Setting up libdrm-common (2.4.131-1) ... 84s Setting up libdrm2:arm64 (2.4.131-1) ... 84s Setting up libdrm-amdgpu1:arm64 (2.4.131-1) ... 84s Processing triggers for man-db (2.13.1-1) ... 85s Processing triggers for libc-bin (2.42-2ubuntu4) ... 85s autopkgtest [01:54:52]: upgrading testbed (apt dist-upgrade and autopurge) 85s Reading package lists... 85s Building dependency tree... 85s Reading state information... 86s Calculating upgrade... 86s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 86s Reading package lists... 87s Building dependency tree... 87s Reading state information... 87s Solving dependencies... 87s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 90s autopkgtest [01:54:57]: testbed running kernel: Linux 6.18.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Jan 12 16:41:39 UTC 2026 90s autopkgtest [01:54:57]: @@@@@@@@@@@@@@@@@@@@ apt-source python-eventlet 92s Get:1 http://ftpmaster.internal/ubuntu resolute/main python-eventlet 0.39.0-0ubuntu2 (dsc) [2605 B] 92s Get:2 http://ftpmaster.internal/ubuntu resolute/main python-eventlet 0.39.0-0ubuntu2 (tar) [562 kB] 92s Get:3 http://ftpmaster.internal/ubuntu resolute/main python-eventlet 0.39.0-0ubuntu2 (diff) [24.3 kB] 92s gpgv: Signature made Mon Sep 15 17:48:29 2025 UTC 92s gpgv: using RSA key 50C4A0DDCF31E452CEB19B516569D855A744BE93 92s gpgv: Can't check signature: No public key 92s dpkg-source: warning: cannot verify inline signature for ./python-eventlet_0.39.0-0ubuntu2.dsc: no acceptable signature found 93s autopkgtest [01:55:00]: testing package python-eventlet version 0.39.0-0ubuntu2 93s autopkgtest [01:55:00]: build not needed 93s autopkgtest [01:55:00]: test listen3: preparing testbed 93s Reading package lists... 94s Building dependency tree... 94s Reading state information... 94s Solving dependencies... 94s The following NEW packages will be installed: 94s python3-dnspython python3-eventlet python3-greenlet 94s 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. 94s Need to get 622 kB of archives. 94s After this operation, 3263 kB of additional disk space will be used. 94s Get:1 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-dnspython all 2.7.0-1ubuntu2 [167 kB] 95s Get:2 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-greenlet arm64 3.2.4-3 [178 kB] 95s Get:3 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-eventlet all 0.39.0-0ubuntu2 [277 kB] 95s Fetched 622 kB in 0s (2676 kB/s) 95s Selecting previously unselected package python3-dnspython. 95s (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 ... 89360 files and directories currently installed.) 95s Preparing to unpack .../python3-dnspython_2.7.0-1ubuntu2_all.deb ... 95s Unpacking python3-dnspython (2.7.0-1ubuntu2) ... 95s Selecting previously unselected package python3-greenlet. 95s Preparing to unpack .../python3-greenlet_3.2.4-3_arm64.deb ... 95s Unpacking python3-greenlet (3.2.4-3) ... 95s Selecting previously unselected package python3-eventlet. 95s Preparing to unpack .../python3-eventlet_0.39.0-0ubuntu2_all.deb ... 95s Unpacking python3-eventlet (0.39.0-0ubuntu2) ... 95s Setting up python3-greenlet (3.2.4-3) ... 95s Setting up python3-dnspython (2.7.0-1ubuntu2) ... 96s Setting up python3-eventlet (0.39.0-0ubuntu2) ... 97s autopkgtest [01:55:04]: test listen3: [----------------------- 98s autopkgtest [01:55:05]: test listen3: -----------------------] 98s listen3 PASS 98s autopkgtest [01:55:05]: test listen3: - - - - - - - - - - results - - - - - - - - - - 98s autopkgtest [01:55:05]: test unittests: preparing testbed 99s Reading package lists... 99s Building dependency tree... 99s Reading state information... 99s Solving dependencies... 99s The following NEW packages will be installed: 99s autoconf automake autopoint autotools-dev build-essential cpp cpp-15 99s cpp-15-aarch64-linux-gnu cpp-aarch64-linux-gnu debhelper debugedit 99s dh-autoreconf dh-python dh-strip-nondeterminism docutils-common dwz g++ 99s g++-15 g++-15-aarch64-linux-gnu g++-aarch64-linux-gnu gcc gcc-15 99s gcc-15-aarch64-linux-gnu gcc-aarch64-linux-gnu gettext intltool-debian 99s libarchive-zip-perl libasan8 libc-dev-bin libc6-dev libcc1-0 libcrypt-dev 99s libdebhelper-perl libfile-stripnondeterminism-perl libgcc-15-dev libgomp1 99s libhwasan0 libisl23 libitm1 libjson-perl liblsan0 libmpc3 libnorm1t64 99s libpgm-5.3-0t64 libpython3.14-minimal libpython3.14-stdlib libsodium23 99s libstdc++-15-dev libtool libtsan2 libubsan1 libzmq5 linux-libc-dev m4 99s openstack-pkg-tools po-debconf pybuild-plugin-pyproject python-eventlet-doc 99s python3-alabaster python3-all python3-build python3-defusedxml 99s python3-docutils python3-execnet python3-hatchling python3-imagesize 99s python3-iniconfig python3-installer python3-monotonic python3-pathspec 99s python3-pbr python3-pip python3-pluggy python3-pyproject-hooks 99s python3-pytest python3-pytest-xdist python3-roman-numerals 99s python3-setuptools-scm python3-snowballstemmer python3-sphinx 99s python3-sphinxcontrib.apidoc python3-trove-classifiers python3-wheel 99s python3-zmq python3.14 python3.14-minimal rpcsvc-proto sgml-base 99s sphinx-common xml-core 100s 0 upgraded, 90 newly installed, 0 to remove and 0 not upgraded. 100s Need to get 85.0 MB of archives. 100s After this operation, 316 MB of additional disk space will be used. 100s Get:1 http://ftpmaster.internal/ubuntu resolute/main arm64 libpython3.14-minimal arm64 3.14.2-1 [917 kB] 100s Get:2 http://ftpmaster.internal/ubuntu resolute/main arm64 python3.14-minimal arm64 3.14.2-1 [2548 kB] 101s Get:3 http://ftpmaster.internal/ubuntu resolute/main arm64 m4 arm64 1.4.20-2 [213 kB] 101s Get:4 http://ftpmaster.internal/ubuntu resolute/main arm64 autoconf all 2.72-3.1ubuntu1 [384 kB] 101s Get:5 http://ftpmaster.internal/ubuntu resolute/main arm64 autotools-dev all 20240727.1 [43.4 kB] 101s Get:6 http://ftpmaster.internal/ubuntu resolute/main arm64 automake all 1:1.18.1-3build1 [582 kB] 101s Get:7 http://ftpmaster.internal/ubuntu resolute/main arm64 autopoint all 0.23.2-1 [620 kB] 101s Get:8 http://ftpmaster.internal/ubuntu resolute/main arm64 libc-dev-bin arm64 2.42-2ubuntu4 [22.5 kB] 101s Get:9 http://ftpmaster.internal/ubuntu resolute/main arm64 linux-libc-dev arm64 6.18.0-9.9 [1834 kB] 101s Get:10 http://ftpmaster.internal/ubuntu resolute/main arm64 libcrypt-dev arm64 1:4.5.1-1 [123 kB] 101s Get:11 http://ftpmaster.internal/ubuntu resolute/main arm64 rpcsvc-proto arm64 1.4.3-1build1 [65.6 kB] 101s Get:12 http://ftpmaster.internal/ubuntu resolute/main arm64 libc6-dev arm64 2.42-2ubuntu4 [1765 kB] 102s Get:13 http://ftpmaster.internal/ubuntu resolute/main arm64 libisl23 arm64 0.27-1build1 [676 kB] 102s Get:14 http://ftpmaster.internal/ubuntu resolute/main arm64 libmpc3 arm64 1.3.1-2 [55.6 kB] 102s Get:15 http://ftpmaster.internal/ubuntu resolute/main arm64 cpp-15-aarch64-linux-gnu arm64 15.2.0-12ubuntu1 [11.7 MB] 103s Get:16 http://ftpmaster.internal/ubuntu resolute/main arm64 cpp-15 arm64 15.2.0-12ubuntu1 [1030 B] 103s Get:17 http://ftpmaster.internal/ubuntu resolute/main arm64 cpp-aarch64-linux-gnu arm64 4:15.2.0-4ubuntu1 [5736 B] 103s Get:18 http://ftpmaster.internal/ubuntu resolute/main arm64 cpp arm64 4:15.2.0-4ubuntu1 [22.4 kB] 103s Get:19 http://ftpmaster.internal/ubuntu resolute/main arm64 libcc1-0 arm64 15.2.0-12ubuntu1 [49.0 kB] 103s Get:20 http://ftpmaster.internal/ubuntu resolute/main arm64 libgomp1 arm64 15.2.0-12ubuntu1 [147 kB] 103s Get:21 http://ftpmaster.internal/ubuntu resolute/main arm64 libitm1 arm64 15.2.0-12ubuntu1 [27.8 kB] 103s Get:22 http://ftpmaster.internal/ubuntu resolute/main arm64 libasan8 arm64 15.2.0-12ubuntu1 [2920 kB] 103s Get:23 http://ftpmaster.internal/ubuntu resolute/main arm64 liblsan0 arm64 15.2.0-12ubuntu1 [1316 kB] 103s Get:24 http://ftpmaster.internal/ubuntu resolute/main arm64 libtsan2 arm64 15.2.0-12ubuntu1 [2688 kB] 103s Get:25 http://ftpmaster.internal/ubuntu resolute/main arm64 libubsan1 arm64 15.2.0-12ubuntu1 [1175 kB] 104s Get:26 http://ftpmaster.internal/ubuntu resolute/main arm64 libhwasan0 arm64 15.2.0-12ubuntu1 [1638 kB] 104s Get:27 http://ftpmaster.internal/ubuntu resolute/main arm64 libgcc-15-dev arm64 15.2.0-12ubuntu1 [2600 kB] 104s Get:28 http://ftpmaster.internal/ubuntu resolute/main arm64 gcc-15-aarch64-linux-gnu arm64 15.2.0-12ubuntu1 [23.1 MB] 112s Get:29 http://ftpmaster.internal/ubuntu resolute/main arm64 gcc-15 arm64 15.2.0-12ubuntu1 [519 kB] 113s Get:30 http://ftpmaster.internal/ubuntu resolute/main arm64 gcc-aarch64-linux-gnu arm64 4:15.2.0-4ubuntu1 [1206 B] 113s Get:31 http://ftpmaster.internal/ubuntu resolute/main arm64 gcc arm64 4:15.2.0-4ubuntu1 [5016 B] 113s Get:32 http://ftpmaster.internal/ubuntu resolute/main arm64 libstdc++-15-dev arm64 15.2.0-12ubuntu1 [2549 kB] 113s Get:33 http://ftpmaster.internal/ubuntu resolute/main arm64 g++-15-aarch64-linux-gnu arm64 15.2.0-12ubuntu1 [13.2 MB] 113s Get:34 http://ftpmaster.internal/ubuntu resolute/main arm64 g++-15 arm64 15.2.0-12ubuntu1 [25.3 kB] 113s Get:35 http://ftpmaster.internal/ubuntu resolute/main arm64 g++-aarch64-linux-gnu arm64 4:15.2.0-4ubuntu1 [956 B] 113s Get:36 http://ftpmaster.internal/ubuntu resolute/main arm64 g++ arm64 4:15.2.0-4ubuntu1 [1080 B] 113s Get:37 http://ftpmaster.internal/ubuntu resolute/main arm64 build-essential arm64 12.12ubuntu2 [5254 B] 113s Get:38 http://ftpmaster.internal/ubuntu resolute/main arm64 libdebhelper-perl all 13.28ubuntu1 [97.4 kB] 113s Get:39 http://ftpmaster.internal/ubuntu resolute/main arm64 libtool all 2.5.4-9 [169 kB] 113s Get:40 http://ftpmaster.internal/ubuntu resolute/main arm64 dh-autoreconf all 21 [12.5 kB] 113s Get:41 http://ftpmaster.internal/ubuntu resolute/main arm64 libarchive-zip-perl all 1.68-1 [90.2 kB] 113s Get:42 http://ftpmaster.internal/ubuntu resolute/main arm64 libfile-stripnondeterminism-perl all 1.15.0-1build1 [20.6 kB] 113s Get:43 http://ftpmaster.internal/ubuntu resolute/main arm64 dh-strip-nondeterminism all 1.15.0-1build1 [5110 B] 113s Get:44 http://ftpmaster.internal/ubuntu resolute/main arm64 debugedit arm64 1:5.2-3build1 [47.9 kB] 113s Get:45 http://ftpmaster.internal/ubuntu resolute/main arm64 dwz arm64 0.16-2 [113 kB] 113s Get:46 http://ftpmaster.internal/ubuntu resolute/main arm64 gettext arm64 0.23.2-1 [998 kB] 113s Get:47 http://ftpmaster.internal/ubuntu resolute/main arm64 intltool-debian all 0.35.0+20060710.6build1 [24.1 kB] 113s Get:48 http://ftpmaster.internal/ubuntu resolute/main arm64 po-debconf all 1.0.22 [215 kB] 113s Get:49 http://ftpmaster.internal/ubuntu resolute/main arm64 debhelper all 13.28ubuntu1 [916 kB] 113s Get:50 http://ftpmaster.internal/ubuntu resolute/universe arm64 dh-python all 7.20260125 [122 kB] 113s Get:51 http://ftpmaster.internal/ubuntu resolute/main arm64 sgml-base all 1.31+nmu1 [11.0 kB] 113s Get:52 http://ftpmaster.internal/ubuntu resolute/main arm64 xml-core all 0.19build1 [20.3 kB] 113s Get:53 http://ftpmaster.internal/ubuntu resolute/main arm64 docutils-common all 0.22.4+dfsg-1 [130 kB] 113s Get:54 http://ftpmaster.internal/ubuntu resolute/main arm64 libjson-perl all 4.10000-1 [81.9 kB] 113s Get:55 http://ftpmaster.internal/ubuntu resolute/universe arm64 libnorm1t64 arm64 1.5.9+dfsg-4 [152 kB] 113s Get:56 http://ftpmaster.internal/ubuntu resolute/universe arm64 libpgm-5.3-0t64 arm64 5.3.128~dfsg-2.1build2 [161 kB] 113s Get:57 http://ftpmaster.internal/ubuntu resolute/main arm64 libpython3.14-stdlib arm64 3.14.2-1 [2351 kB] 113s Get:58 http://ftpmaster.internal/ubuntu resolute/main arm64 libsodium23 arm64 1.0.18-2 [120 kB] 113s Get:59 http://ftpmaster.internal/ubuntu resolute/universe arm64 libzmq5 arm64 4.3.5-1build3 [244 kB] 113s Get:60 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 113s Get:61 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-wheel all 0.46.1-2 [22.1 kB] 113s Get:62 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-build all 1.2.2-5 [30.9 kB] 113s Get:63 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 113s Get:64 http://ftpmaster.internal/ubuntu resolute/universe arm64 pybuild-plugin-pyproject all 7.20260125 [1712 B] 113s Get:65 http://ftpmaster.internal/ubuntu resolute/main arm64 python-eventlet-doc all 0.39.0-0ubuntu2 [353 kB] 113s Get:66 http://ftpmaster.internal/ubuntu resolute/main arm64 python3.14 arm64 3.14.2-1 [816 kB] 114s Get:67 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-all arm64 3.13.9-3 [890 B] 114s Get:68 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-defusedxml all 0.7.1-3build1 [42.4 kB] 114s Get:69 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-roman-numerals all 4.1.0-1 [8660 B] 114s Get:70 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-docutils all 0.22.4+dfsg-1 [439 kB] 114s Get:71 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-execnet all 2.1.1-1build1 [33.5 kB] 114s Get:72 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pathspec all 0.12.1-1build1 [24.6 kB] 114s Get:73 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pluggy all 1.6.0-2 [21.1 kB] 114s Get:74 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-trove-classifiers all 2025.11.14.15-1 [11.1 kB] 114s Get:75 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-hatchling all 1.28.0-1 [47.3 kB] 114s Get:76 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-imagesize all 1.4.1-1build1 [6900 B] 114s Get:77 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-iniconfig all 2.1.0-2 [6962 B] 114s Get:78 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-monotonic all 1.6-3build1 [5518 B] 114s Get:79 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-pbr all 6.1.1-0ubuntu2 [58.3 kB] 114s Get:80 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pip all 25.1.1+dfsg-1ubuntu2 [1416 kB] 114s Get:81 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pytest all 9.0.2-2 [277 kB] 114s Get:82 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-pytest-xdist all 3.8.0-4 [34.7 kB] 114s Get:83 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-setuptools-scm all 8.2.1-4 [32.8 kB] 114s Get:84 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-snowballstemmer all 3.0.1-1 [65.9 kB] 114s Get:85 http://ftpmaster.internal/ubuntu resolute/main arm64 sphinx-common all 8.2.3-12 [657 kB] 114s Get:86 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-alabaster all 0.7.16-0.1build1 [18.6 kB] 114s Get:87 http://ftpmaster.internal/ubuntu resolute/main arm64 python3-sphinx all 8.2.3-12 [483 kB] 114s Get:88 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-sphinxcontrib.apidoc all 0.3.0-2ubuntu1 [8032 B] 114s Get:89 http://ftpmaster.internal/ubuntu resolute/universe arm64 python3-zmq arm64 27.1.0-1 [231 kB] 114s Get:90 http://ftpmaster.internal/ubuntu resolute/universe arm64 openstack-pkg-tools all 140 [103 kB] 114s Fetched 85.0 MB in 15s (5844 kB/s) 114s Selecting previously unselected package libpython3.14-minimal:arm64. 114s (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 ... 89764 files and directories currently installed.) 114s Preparing to unpack .../00-libpython3.14-minimal_3.14.2-1_arm64.deb ... 114s Unpacking libpython3.14-minimal:arm64 (3.14.2-1) ... 115s Selecting previously unselected package python3.14-minimal. 115s Preparing to unpack .../01-python3.14-minimal_3.14.2-1_arm64.deb ... 115s Unpacking python3.14-minimal (3.14.2-1) ... 115s Selecting previously unselected package m4. 115s Preparing to unpack .../02-m4_1.4.20-2_arm64.deb ... 115s Unpacking m4 (1.4.20-2) ... 115s Selecting previously unselected package autoconf. 115s Preparing to unpack .../03-autoconf_2.72-3.1ubuntu1_all.deb ... 115s Unpacking autoconf (2.72-3.1ubuntu1) ... 115s Selecting previously unselected package autotools-dev. 115s Preparing to unpack .../04-autotools-dev_20240727.1_all.deb ... 115s Unpacking autotools-dev (20240727.1) ... 115s Selecting previously unselected package automake. 115s Preparing to unpack .../05-automake_1%3a1.18.1-3build1_all.deb ... 115s Unpacking automake (1:1.18.1-3build1) ... 115s Selecting previously unselected package autopoint. 115s Preparing to unpack .../06-autopoint_0.23.2-1_all.deb ... 115s Unpacking autopoint (0.23.2-1) ... 115s Selecting previously unselected package libc-dev-bin. 115s Preparing to unpack .../07-libc-dev-bin_2.42-2ubuntu4_arm64.deb ... 115s Unpacking libc-dev-bin (2.42-2ubuntu4) ... 115s Selecting previously unselected package linux-libc-dev:arm64. 115s Preparing to unpack .../08-linux-libc-dev_6.18.0-9.9_arm64.deb ... 115s Unpacking linux-libc-dev:arm64 (6.18.0-9.9) ... 115s Selecting previously unselected package libcrypt-dev:arm64. 115s Preparing to unpack .../09-libcrypt-dev_1%3a4.5.1-1_arm64.deb ... 115s Unpacking libcrypt-dev:arm64 (1:4.5.1-1) ... 115s Selecting previously unselected package rpcsvc-proto. 115s Preparing to unpack .../10-rpcsvc-proto_1.4.3-1build1_arm64.deb ... 115s Unpacking rpcsvc-proto (1.4.3-1build1) ... 115s Selecting previously unselected package libc6-dev:arm64. 115s Preparing to unpack .../11-libc6-dev_2.42-2ubuntu4_arm64.deb ... 115s Unpacking libc6-dev:arm64 (2.42-2ubuntu4) ... 115s Selecting previously unselected package libisl23:arm64. 115s Preparing to unpack .../12-libisl23_0.27-1build1_arm64.deb ... 115s Unpacking libisl23:arm64 (0.27-1build1) ... 115s Selecting previously unselected package libmpc3:arm64. 115s Preparing to unpack .../13-libmpc3_1.3.1-2_arm64.deb ... 115s Unpacking libmpc3:arm64 (1.3.1-2) ... 115s Selecting previously unselected package cpp-15-aarch64-linux-gnu. 115s Preparing to unpack .../14-cpp-15-aarch64-linux-gnu_15.2.0-12ubuntu1_arm64.deb ... 115s Unpacking cpp-15-aarch64-linux-gnu (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package cpp-15. 116s Preparing to unpack .../15-cpp-15_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking cpp-15 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package cpp-aarch64-linux-gnu. 116s Preparing to unpack .../16-cpp-aarch64-linux-gnu_4%3a15.2.0-4ubuntu1_arm64.deb ... 116s Unpacking cpp-aarch64-linux-gnu (4:15.2.0-4ubuntu1) ... 116s Selecting previously unselected package cpp. 116s Preparing to unpack .../17-cpp_4%3a15.2.0-4ubuntu1_arm64.deb ... 116s Unpacking cpp (4:15.2.0-4ubuntu1) ... 116s Selecting previously unselected package libcc1-0:arm64. 116s Preparing to unpack .../18-libcc1-0_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking libcc1-0:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package libgomp1:arm64. 116s Preparing to unpack .../19-libgomp1_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking libgomp1:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package libitm1:arm64. 116s Preparing to unpack .../20-libitm1_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking libitm1:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package libasan8:arm64. 116s Preparing to unpack .../21-libasan8_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking libasan8:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package liblsan0:arm64. 116s Preparing to unpack .../22-liblsan0_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking liblsan0:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package libtsan2:arm64. 116s Preparing to unpack .../23-libtsan2_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking libtsan2:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package libubsan1:arm64. 116s Preparing to unpack .../24-libubsan1_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking libubsan1:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package libhwasan0:arm64. 116s Preparing to unpack .../25-libhwasan0_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking libhwasan0:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package libgcc-15-dev:arm64. 116s Preparing to unpack .../26-libgcc-15-dev_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking libgcc-15-dev:arm64 (15.2.0-12ubuntu1) ... 116s Selecting previously unselected package gcc-15-aarch64-linux-gnu. 116s Preparing to unpack .../27-gcc-15-aarch64-linux-gnu_15.2.0-12ubuntu1_arm64.deb ... 116s Unpacking gcc-15-aarch64-linux-gnu (15.2.0-12ubuntu1) ... 117s Selecting previously unselected package gcc-15. 117s Preparing to unpack .../28-gcc-15_15.2.0-12ubuntu1_arm64.deb ... 117s Unpacking gcc-15 (15.2.0-12ubuntu1) ... 117s Selecting previously unselected package gcc-aarch64-linux-gnu. 117s Preparing to unpack .../29-gcc-aarch64-linux-gnu_4%3a15.2.0-4ubuntu1_arm64.deb ... 117s Unpacking gcc-aarch64-linux-gnu (4:15.2.0-4ubuntu1) ... 117s Selecting previously unselected package gcc. 117s Preparing to unpack .../30-gcc_4%3a15.2.0-4ubuntu1_arm64.deb ... 117s Unpacking gcc (4:15.2.0-4ubuntu1) ... 117s Selecting previously unselected package libstdc++-15-dev:arm64. 117s Preparing to unpack .../31-libstdc++-15-dev_15.2.0-12ubuntu1_arm64.deb ... 117s Unpacking libstdc++-15-dev:arm64 (15.2.0-12ubuntu1) ... 117s Selecting previously unselected package g++-15-aarch64-linux-gnu. 117s Preparing to unpack .../32-g++-15-aarch64-linux-gnu_15.2.0-12ubuntu1_arm64.deb ... 117s Unpacking g++-15-aarch64-linux-gnu (15.2.0-12ubuntu1) ... 117s Selecting previously unselected package g++-15. 117s Preparing to unpack .../33-g++-15_15.2.0-12ubuntu1_arm64.deb ... 117s Unpacking g++-15 (15.2.0-12ubuntu1) ... 117s Selecting previously unselected package g++-aarch64-linux-gnu. 117s Preparing to unpack .../34-g++-aarch64-linux-gnu_4%3a15.2.0-4ubuntu1_arm64.deb ... 117s Unpacking g++-aarch64-linux-gnu (4:15.2.0-4ubuntu1) ... 117s Selecting previously unselected package g++. 117s Preparing to unpack .../35-g++_4%3a15.2.0-4ubuntu1_arm64.deb ... 117s Unpacking g++ (4:15.2.0-4ubuntu1) ... 117s Selecting previously unselected package build-essential. 117s Preparing to unpack .../36-build-essential_12.12ubuntu2_arm64.deb ... 117s Unpacking build-essential (12.12ubuntu2) ... 117s Selecting previously unselected package libdebhelper-perl. 117s Preparing to unpack .../37-libdebhelper-perl_13.28ubuntu1_all.deb ... 117s Unpacking libdebhelper-perl (13.28ubuntu1) ... 117s Selecting previously unselected package libtool. 117s Preparing to unpack .../38-libtool_2.5.4-9_all.deb ... 117s Unpacking libtool (2.5.4-9) ... 117s Selecting previously unselected package dh-autoreconf. 117s Preparing to unpack .../39-dh-autoreconf_21_all.deb ... 117s Unpacking dh-autoreconf (21) ... 118s Selecting previously unselected package libarchive-zip-perl. 118s Preparing to unpack .../40-libarchive-zip-perl_1.68-1_all.deb ... 118s Unpacking libarchive-zip-perl (1.68-1) ... 118s Selecting previously unselected package libfile-stripnondeterminism-perl. 118s Preparing to unpack .../41-libfile-stripnondeterminism-perl_1.15.0-1build1_all.deb ... 118s Unpacking libfile-stripnondeterminism-perl (1.15.0-1build1) ... 118s Selecting previously unselected package dh-strip-nondeterminism. 118s Preparing to unpack .../42-dh-strip-nondeterminism_1.15.0-1build1_all.deb ... 118s Unpacking dh-strip-nondeterminism (1.15.0-1build1) ... 118s Selecting previously unselected package debugedit. 118s Preparing to unpack .../43-debugedit_1%3a5.2-3build1_arm64.deb ... 118s Unpacking debugedit (1:5.2-3build1) ... 118s Selecting previously unselected package dwz. 118s Preparing to unpack .../44-dwz_0.16-2_arm64.deb ... 118s Unpacking dwz (0.16-2) ... 118s Selecting previously unselected package gettext. 118s Preparing to unpack .../45-gettext_0.23.2-1_arm64.deb ... 118s Unpacking gettext (0.23.2-1) ... 118s Selecting previously unselected package intltool-debian. 118s Preparing to unpack .../46-intltool-debian_0.35.0+20060710.6build1_all.deb ... 118s Unpacking intltool-debian (0.35.0+20060710.6build1) ... 118s Selecting previously unselected package po-debconf. 118s Preparing to unpack .../47-po-debconf_1.0.22_all.deb ... 118s Unpacking po-debconf (1.0.22) ... 118s Selecting previously unselected package debhelper. 118s Preparing to unpack .../48-debhelper_13.28ubuntu1_all.deb ... 118s Unpacking debhelper (13.28ubuntu1) ... 118s Selecting previously unselected package dh-python. 118s Preparing to unpack .../49-dh-python_7.20260125_all.deb ... 118s Unpacking dh-python (7.20260125) ... 118s Selecting previously unselected package sgml-base. 118s Preparing to unpack .../50-sgml-base_1.31+nmu1_all.deb ... 118s Unpacking sgml-base (1.31+nmu1) ... 118s Selecting previously unselected package xml-core. 118s Preparing to unpack .../51-xml-core_0.19build1_all.deb ... 118s Unpacking xml-core (0.19build1) ... 118s Selecting previously unselected package docutils-common. 118s Preparing to unpack .../52-docutils-common_0.22.4+dfsg-1_all.deb ... 118s Unpacking docutils-common (0.22.4+dfsg-1) ... 118s Selecting previously unselected package libjson-perl. 118s Preparing to unpack .../53-libjson-perl_4.10000-1_all.deb ... 118s Unpacking libjson-perl (4.10000-1) ... 118s Selecting previously unselected package libnorm1t64:arm64. 118s Preparing to unpack .../54-libnorm1t64_1.5.9+dfsg-4_arm64.deb ... 118s Unpacking libnorm1t64:arm64 (1.5.9+dfsg-4) ... 118s Selecting previously unselected package libpgm-5.3-0t64:arm64. 118s Preparing to unpack .../55-libpgm-5.3-0t64_5.3.128~dfsg-2.1build2_arm64.deb ... 118s Unpacking libpgm-5.3-0t64:arm64 (5.3.128~dfsg-2.1build2) ... 118s Selecting previously unselected package libpython3.14-stdlib:arm64. 118s Preparing to unpack .../56-libpython3.14-stdlib_3.14.2-1_arm64.deb ... 118s Unpacking libpython3.14-stdlib:arm64 (3.14.2-1) ... 118s Selecting previously unselected package libsodium23:arm64. 118s Preparing to unpack .../57-libsodium23_1.0.18-2_arm64.deb ... 118s Unpacking libsodium23:arm64 (1.0.18-2) ... 118s Selecting previously unselected package libzmq5:arm64. 118s Preparing to unpack .../58-libzmq5_4.3.5-1build3_arm64.deb ... 118s Unpacking libzmq5:arm64 (4.3.5-1build3) ... 118s Selecting previously unselected package python3-pyproject-hooks. 118s Preparing to unpack .../59-python3-pyproject-hooks_1.2.0-1_all.deb ... 118s Unpacking python3-pyproject-hooks (1.2.0-1) ... 118s Selecting previously unselected package python3-wheel. 118s Preparing to unpack .../60-python3-wheel_0.46.1-2_all.deb ... 118s Unpacking python3-wheel (0.46.1-2) ... 118s Selecting previously unselected package python3-build. 118s Preparing to unpack .../61-python3-build_1.2.2-5_all.deb ... 118s Unpacking python3-build (1.2.2-5) ... 119s Selecting previously unselected package python3-installer. 119s Preparing to unpack .../62-python3-installer_0.7.0+dfsg1-3_all.deb ... 119s Unpacking python3-installer (0.7.0+dfsg1-3) ... 119s Selecting previously unselected package pybuild-plugin-pyproject. 119s Preparing to unpack .../63-pybuild-plugin-pyproject_7.20260125_all.deb ... 119s Unpacking pybuild-plugin-pyproject (7.20260125) ... 119s Selecting previously unselected package python-eventlet-doc. 119s Preparing to unpack .../64-python-eventlet-doc_0.39.0-0ubuntu2_all.deb ... 119s Unpacking python-eventlet-doc (0.39.0-0ubuntu2) ... 119s Selecting previously unselected package python3.14. 119s Preparing to unpack .../65-python3.14_3.14.2-1_arm64.deb ... 119s Unpacking python3.14 (3.14.2-1) ... 119s Selecting previously unselected package python3-all. 119s Preparing to unpack .../66-python3-all_3.13.9-3_arm64.deb ... 119s Unpacking python3-all (3.13.9-3) ... 119s Selecting previously unselected package python3-defusedxml. 119s Preparing to unpack .../67-python3-defusedxml_0.7.1-3build1_all.deb ... 119s Unpacking python3-defusedxml (0.7.1-3build1) ... 119s Selecting previously unselected package python3-roman-numerals. 119s Preparing to unpack .../68-python3-roman-numerals_4.1.0-1_all.deb ... 119s Unpacking python3-roman-numerals (4.1.0-1) ... 119s Selecting previously unselected package python3-docutils. 119s Preparing to unpack .../69-python3-docutils_0.22.4+dfsg-1_all.deb ... 119s Unpacking python3-docutils (0.22.4+dfsg-1) ... 119s Selecting previously unselected package python3-execnet. 119s Preparing to unpack .../70-python3-execnet_2.1.1-1build1_all.deb ... 119s Unpacking python3-execnet (2.1.1-1build1) ... 119s Selecting previously unselected package python3-pathspec. 119s Preparing to unpack .../71-python3-pathspec_0.12.1-1build1_all.deb ... 119s Unpacking python3-pathspec (0.12.1-1build1) ... 119s Selecting previously unselected package python3-pluggy. 119s Preparing to unpack .../72-python3-pluggy_1.6.0-2_all.deb ... 119s Unpacking python3-pluggy (1.6.0-2) ... 119s Selecting previously unselected package python3-trove-classifiers. 119s Preparing to unpack .../73-python3-trove-classifiers_2025.11.14.15-1_all.deb ... 119s Unpacking python3-trove-classifiers (2025.11.14.15-1) ... 119s Selecting previously unselected package python3-hatchling. 119s Preparing to unpack .../74-python3-hatchling_1.28.0-1_all.deb ... 119s Unpacking python3-hatchling (1.28.0-1) ... 119s Selecting previously unselected package python3-imagesize. 119s Preparing to unpack .../75-python3-imagesize_1.4.1-1build1_all.deb ... 119s Unpacking python3-imagesize (1.4.1-1build1) ... 119s Selecting previously unselected package python3-iniconfig. 119s Preparing to unpack .../76-python3-iniconfig_2.1.0-2_all.deb ... 119s Unpacking python3-iniconfig (2.1.0-2) ... 119s Selecting previously unselected package python3-monotonic. 119s Preparing to unpack .../77-python3-monotonic_1.6-3build1_all.deb ... 119s Unpacking python3-monotonic (1.6-3build1) ... 119s Selecting previously unselected package python3-pbr. 119s Preparing to unpack .../78-python3-pbr_6.1.1-0ubuntu2_all.deb ... 119s Unpacking python3-pbr (6.1.1-0ubuntu2) ... 119s Selecting previously unselected package python3-pip. 119s Preparing to unpack .../79-python3-pip_25.1.1+dfsg-1ubuntu2_all.deb ... 119s Unpacking python3-pip (25.1.1+dfsg-1ubuntu2) ... 119s Selecting previously unselected package python3-pytest. 119s Preparing to unpack .../80-python3-pytest_9.0.2-2_all.deb ... 119s Unpacking python3-pytest (9.0.2-2) ... 119s Selecting previously unselected package python3-pytest-xdist. 119s Preparing to unpack .../81-python3-pytest-xdist_3.8.0-4_all.deb ... 119s Unpacking python3-pytest-xdist (3.8.0-4) ... 119s Selecting previously unselected package python3-setuptools-scm. 120s Preparing to unpack .../82-python3-setuptools-scm_8.2.1-4_all.deb ... 120s Unpacking python3-setuptools-scm (8.2.1-4) ... 120s Selecting previously unselected package python3-snowballstemmer. 120s Preparing to unpack .../83-python3-snowballstemmer_3.0.1-1_all.deb ... 120s Unpacking python3-snowballstemmer (3.0.1-1) ... 120s Selecting previously unselected package sphinx-common. 120s Preparing to unpack .../84-sphinx-common_8.2.3-12_all.deb ... 120s Unpacking sphinx-common (8.2.3-12) ... 120s Selecting previously unselected package python3-alabaster. 120s Preparing to unpack .../85-python3-alabaster_0.7.16-0.1build1_all.deb ... 120s Unpacking python3-alabaster (0.7.16-0.1build1) ... 120s Selecting previously unselected package python3-sphinx. 120s Preparing to unpack .../86-python3-sphinx_8.2.3-12_all.deb ... 120s Unpacking python3-sphinx (8.2.3-12) ... 120s Selecting previously unselected package python3-sphinxcontrib.apidoc. 120s Preparing to unpack .../87-python3-sphinxcontrib.apidoc_0.3.0-2ubuntu1_all.deb ... 120s Unpacking python3-sphinxcontrib.apidoc (0.3.0-2ubuntu1) ... 120s Selecting previously unselected package python3-zmq. 120s Preparing to unpack .../88-python3-zmq_27.1.0-1_arm64.deb ... 120s Unpacking python3-zmq (27.1.0-1) ... 120s Selecting previously unselected package openstack-pkg-tools. 120s Preparing to unpack .../89-openstack-pkg-tools_140_all.deb ... 120s Unpacking openstack-pkg-tools (140) ... 120s Setting up dh-python (7.20260125) ... 120s Setting up python3-iniconfig (2.1.0-2) ... 121s Setting up libnorm1t64:arm64 (1.5.9+dfsg-4) ... 121s Setting up libsodium23:arm64 (1.0.18-2) ... 121s Setting up python3-defusedxml (0.7.1-3build1) ... 121s Setting up python3-pbr (6.1.1-0ubuntu2) ... 121s Setting up libarchive-zip-perl (1.68-1) ... 121s Setting up python3-alabaster (0.7.16-0.1build1) ... 121s Setting up libdebhelper-perl (13.28ubuntu1) ... 121s Setting up libpython3.14-minimal:arm64 (3.14.2-1) ... 121s Setting up linux-libc-dev:arm64 (6.18.0-9.9) ... 121s Setting up m4 (1.4.20-2) ... 121s Setting up python-eventlet-doc (0.39.0-0ubuntu2) ... 121s Setting up libgomp1:arm64 (15.2.0-12ubuntu1) ... 121s Setting up python3-wheel (0.46.1-2) ... 122s Setting up python3-setuptools-scm (8.2.1-4) ... 122s Setting up python3-monotonic (1.6-3build1) ... 122s Setting up libpgm-5.3-0t64:arm64 (5.3.128~dfsg-2.1build2) ... 122s Setting up autotools-dev (20240727.1) ... 122s Setting up rpcsvc-proto (1.4.3-1build1) ... 122s Setting up python3-pyproject-hooks (1.2.0-1) ... 122s Setting up python3-snowballstemmer (3.0.1-1) ... 123s Setting up libmpc3:arm64 (1.3.1-2) ... 123s Setting up autopoint (0.23.2-1) ... 123s Setting up python3-pip (25.1.1+dfsg-1ubuntu2) ... 125s Setting up python3-installer (0.7.0+dfsg1-3) ... 125s Setting up autoconf (2.72-3.1ubuntu1) ... 125s Setting up python3-pluggy (1.6.0-2) ... 125s Setting up libubsan1:arm64 (15.2.0-12ubuntu1) ... 125s Setting up dwz (0.16-2) ... 125s Setting up python3-trove-classifiers (2025.11.14.15-1) ... 126s Setting up libhwasan0:arm64 (15.2.0-12ubuntu1) ... 126s Setting up libcrypt-dev:arm64 (1:4.5.1-1) ... 126s Setting up libasan8:arm64 (15.2.0-12ubuntu1) ... 126s Setting up libjson-perl (4.10000-1) ... 126s Setting up debugedit (1:5.2-3build1) ... 126s Setting up python3-roman-numerals (4.1.0-1) ... 126s Setting up sgml-base (1.31+nmu1) ... 126s Setting up libtsan2:arm64 (15.2.0-12ubuntu1) ... 126s Setting up libisl23:arm64 (0.27-1build1) ... 126s Setting up python3-build (1.2.2-5) ... 126s Setting up libc-dev-bin (2.42-2ubuntu4) ... 126s Setting up python3-execnet (2.1.1-1build1) ... 126s Setting up python3-pathspec (0.12.1-1build1) ... 127s Setting up python3.14-minimal (3.14.2-1) ... 128s Setting up libcc1-0:arm64 (15.2.0-12ubuntu1) ... 128s Setting up liblsan0:arm64 (15.2.0-12ubuntu1) ... 128s Setting up libitm1:arm64 (15.2.0-12ubuntu1) ... 128s Setting up python3-imagesize (1.4.1-1build1) ... 128s Setting up automake (1:1.18.1-3build1) ... 128s update-alternatives: using /usr/bin/automake-1.18 to provide /usr/bin/automake (automake) in auto mode 128s Setting up libfile-stripnondeterminism-perl (1.15.0-1build1) ... 128s Setting up cpp-15-aarch64-linux-gnu (15.2.0-12ubuntu1) ... 128s Setting up gettext (0.23.2-1) ... 128s Setting up libgcc-15-dev:arm64 (15.2.0-12ubuntu1) ... 128s Setting up libzmq5:arm64 (4.3.5-1build3) ... 128s Setting up libpython3.14-stdlib:arm64 (3.14.2-1) ... 128s Setting up pybuild-plugin-pyproject (7.20260125) ... 128s Setting up python3-pytest (9.0.2-2) ... 128s Setting up intltool-debian (0.35.0+20060710.6build1) ... 128s Setting up cpp-aarch64-linux-gnu (4:15.2.0-4ubuntu1) ... 128s Setting up python3-zmq (27.1.0-1) ... 129s Setting up sphinx-common (8.2.3-12) ... 129s Setting up dh-strip-nondeterminism (1.15.0-1build1) ... 129s Setting up cpp-15 (15.2.0-12ubuntu1) ... 129s Setting up cpp (4:15.2.0-4ubuntu1) ... 129s Setting up xml-core (0.19build1) ... 129s Setting up libc6-dev:arm64 (2.42-2ubuntu4) ... 129s Setting up python3-hatchling (1.28.0-1) ... 129s Setting up python3.14 (3.14.2-1) ... 131s Setting up gcc-15-aarch64-linux-gnu (15.2.0-12ubuntu1) ... 131s Setting up python3-pytest-xdist (3.8.0-4) ... 131s Setting up po-debconf (1.0.22) ... 131s Setting up python3-all (3.13.9-3) ... 131s Setting up openstack-pkg-tools (140) ... 131s Setting up gcc-15 (15.2.0-12ubuntu1) ... 131s Setting up libstdc++-15-dev:arm64 (15.2.0-12ubuntu1) ... 131s Setting up g++-15-aarch64-linux-gnu (15.2.0-12ubuntu1) ... 131s Setting up g++-15 (15.2.0-12ubuntu1) ... 131s Setting up gcc-aarch64-linux-gnu (4:15.2.0-4ubuntu1) ... 131s Setting up libtool (2.5.4-9) ... 131s Setting up gcc (4:15.2.0-4ubuntu1) ... 131s Setting up dh-autoreconf (21) ... 131s Setting up g++-aarch64-linux-gnu (4:15.2.0-4ubuntu1) ... 131s Setting up debhelper (13.28ubuntu1) ... 131s Setting up g++ (4:15.2.0-4ubuntu1) ... 131s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 131s Setting up build-essential (12.12ubuntu2) ... 131s Processing triggers for install-info (7.2-5) ... 131s Processing triggers for libc-bin (2.42-2ubuntu4) ... 131s Processing triggers for systemd (259-1ubuntu3) ... 131s Processing triggers for man-db (2.13.1-1) ... 132s Processing triggers for sgml-base (1.31+nmu1) ... 132s Setting up docutils-common (0.22.4+dfsg-1) ... 132s Processing triggers for sgml-base (1.31+nmu1) ... 132s Setting up python3-docutils (0.22.4+dfsg-1) ... 133s Setting up python3-sphinx (8.2.3-12) ... 135s Setting up python3-sphinxcontrib.apidoc (0.3.0-2ubuntu1) ... 136s autopkgtest [01:55:43]: test unittests: [----------------------- 137s /usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated 137s !! 137s 137s ******************************************************************************** 137s 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). 137s 137s By 2026-Feb-18, you need to update your project and remove deprecated calls 137s or your builds will no longer be supported. 137s 137s See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 137s ******************************************************************************** 137s 137s !! 137s corresp(dist, value, root_dir) 138s /usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. 138s !! 138s 138s ******************************************************************************** 138s Please consider removing the following classifiers in favor of a SPDX license expression: 138s 138s License :: OSI Approved :: MIT License 138s 138s See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 138s ******************************************************************************** 138s 138s !! 138s dist._finalize_license_expression() 138s /usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. 138s !! 138s 138s ******************************************************************************** 138s Please consider removing the following classifiers in favor of a SPDX license expression: 138s 138s License :: OSI Approved :: MIT License 138s 138s See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. 138s ******************************************************************************** 138s 138s !! 138s self._finalize_license_expression() 138s running install 138s /usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:90: SetuptoolsDeprecationWarning: setup.py install is deprecated. 138s !! 138s 138s ******************************************************************************** 138s Please avoid running ``setup.py`` directly. 138s Instead, use pypa/build, pypa/installer or other 138s standards-based tools. 138s 138s See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details. 138s ******************************************************************************** 138s 138s !! 138s self.initialize_options() 138s running build 138s running build_py 138s creating build/lib/eventlet 138s copying eventlet/corolocal.py -> build/lib/eventlet 138s copying eventlet/dagpool.py -> build/lib/eventlet 138s copying eventlet/debug.py -> build/lib/eventlet 138s copying eventlet/semaphore.py -> build/lib/eventlet 138s copying eventlet/asyncio.py -> build/lib/eventlet 138s copying eventlet/_version.py -> build/lib/eventlet 138s copying eventlet/wsgi.py -> build/lib/eventlet 138s copying eventlet/queue.py -> build/lib/eventlet 138s copying eventlet/coros.py -> build/lib/eventlet 138s copying eventlet/timeout.py -> build/lib/eventlet 138s copying eventlet/websocket.py -> build/lib/eventlet 138s copying eventlet/backdoor.py -> build/lib/eventlet 138s copying eventlet/pools.py -> build/lib/eventlet 138s copying eventlet/db_pool.py -> build/lib/eventlet 138s copying eventlet/patcher.py -> build/lib/eventlet 138s copying eventlet/greenthread.py -> build/lib/eventlet 138s copying eventlet/__init__.py -> build/lib/eventlet 138s copying eventlet/greenpool.py -> build/lib/eventlet 138s copying eventlet/lock.py -> build/lib/eventlet 138s copying eventlet/event.py -> build/lib/eventlet 138s copying eventlet/tpool.py -> build/lib/eventlet 138s copying eventlet/convenience.py -> build/lib/eventlet 138s running egg_info 138s creating eventlet.egg-info 138s writing eventlet.egg-info/PKG-INFO 138s writing dependency_links to eventlet.egg-info/dependency_links.txt 138s writing requirements to eventlet.egg-info/requires.txt 138s writing top-level names to eventlet.egg-info/top_level.txt 138s writing manifest file 'eventlet.egg-info/SOURCES.txt' 138s reading manifest file 'eventlet.egg-info/SOURCES.txt' 138s reading manifest template 'MANIFEST.in' 138s warning: no files found matching 'Makefile' under directory 'doc' 138s adding license file 'LICENSE' 138s adding license file 'AUTHORS' 138s writing manifest file 'eventlet.egg-info/SOURCES.txt' 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.green' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.green' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.green' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.green' to be distributed and are 138s already explicitly excluding 'eventlet.green' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.green.OpenSSL' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.green.OpenSSL' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.green.OpenSSL' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.green.OpenSSL' to be distributed and are 138s already explicitly excluding 'eventlet.green.OpenSSL' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.green.http' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.green.http' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.green.http' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.green.http' to be distributed and are 138s already explicitly excluding 'eventlet.green.http' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.green.urllib' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.green.urllib' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.green.urllib' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.green.urllib' to be distributed and are 138s already explicitly excluding 'eventlet.green.urllib' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.greenio' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.greenio' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.greenio' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.greenio' to be distributed and are 138s already explicitly excluding 'eventlet.greenio' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.hubs' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.hubs' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.hubs' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.hubs' to be distributed and are 138s already explicitly excluding 'eventlet.hubs' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.support' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.support' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.support' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.support' to be distributed and are 138s already explicitly excluding 'eventlet.support' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.zipkin' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.zipkin' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.zipkin' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.zipkin' to be distributed and are 138s already explicitly excluding 'eventlet.zipkin' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.zipkin._thrift' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.zipkin._thrift' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.zipkin._thrift' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.zipkin._thrift' to be distributed and are 138s already explicitly excluding 'eventlet.zipkin._thrift' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.zipkin._thrift.zipkinCore' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.zipkin._thrift.zipkinCore' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.zipkin._thrift.zipkinCore' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.zipkin._thrift.zipkinCore' to be distributed and are 138s already explicitly excluding 'eventlet.zipkin._thrift.zipkinCore' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s creating build/lib/eventlet/green 138s copying eventlet/green/BaseHTTPServer.py -> build/lib/eventlet/green 138s copying eventlet/green/CGIHTTPServer.py -> build/lib/eventlet/green 138s copying eventlet/green/MySQLdb.py -> build/lib/eventlet/green 138s copying eventlet/green/Queue.py -> build/lib/eventlet/green 138s copying eventlet/green/SimpleHTTPServer.py -> build/lib/eventlet/green 138s copying eventlet/green/SocketServer.py -> build/lib/eventlet/green 138s copying eventlet/green/__init__.py -> build/lib/eventlet/green 138s copying eventlet/green/_socket_nodns.py -> build/lib/eventlet/green 138s copying eventlet/green/asynchat.py -> build/lib/eventlet/green 138s copying eventlet/green/asyncore.py -> build/lib/eventlet/green 138s copying eventlet/green/builtin.py -> build/lib/eventlet/green 138s copying eventlet/green/ftplib.py -> build/lib/eventlet/green 138s copying eventlet/green/httplib.py -> build/lib/eventlet/green 138s copying eventlet/green/os.py -> build/lib/eventlet/green 138s copying eventlet/green/profile.py -> build/lib/eventlet/green 138s copying eventlet/green/select.py -> build/lib/eventlet/green 138s copying eventlet/green/selectors.py -> build/lib/eventlet/green 138s copying eventlet/green/socket.py -> build/lib/eventlet/green 138s copying eventlet/green/ssl.py -> build/lib/eventlet/green 138s copying eventlet/green/subprocess.py -> build/lib/eventlet/green 138s copying eventlet/green/thread.py -> build/lib/eventlet/green 138s copying eventlet/green/threading.py -> build/lib/eventlet/green 138s copying eventlet/green/time.py -> build/lib/eventlet/green 138s copying eventlet/green/urllib2.py -> build/lib/eventlet/green 138s copying eventlet/green/zmq.py -> build/lib/eventlet/green 138s creating build/lib/eventlet/green/OpenSSL 138s /usr/lib/python3/dist-packages/setuptools/command/build_py.py:212: _Warning: Package 'eventlet.zipkin.example' is absent from the `packages` configuration. 138s !! 138s 138s ******************************************************************************** 138s ############################ 138s # Package would be ignored # 138s ############################ 138s Python recognizes 'eventlet.zipkin.example' as an importable package[^1], 138s but it is absent from setuptools' `packages` configuration. 138s 138s This leads to an ambiguous overall configuration. If you want to distribute this 138s package, please make sure that 'eventlet.zipkin.example' is explicitly added 138s to the `packages` configuration field. 138s 138s Alternatively, you can also rely on setuptools' discovery methods 138s (for example by using `find_namespace_packages(...)`/`find_namespace:` 138s instead of `find_packages(...)`/`find:`). 138s 138s You can read more about "package discovery" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html 138s 138s If you don't want 'eventlet.zipkin.example' to be distributed and are 138s already explicitly excluding 'eventlet.zipkin.example' via 138s `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, 138s you can try to use `exclude_package_data`, or `include-package-data=False` in 138s combination with a more fine grained `package-data` configuration. 138s 138s You can read more about "package data files" on setuptools documentation page: 138s 138s - https://setuptools.pypa.io/en/latest/userguide/datafiles.html 138s 138s 138s [^1]: For Python, any directory (with suitable naming) can be imported, 138s even if it does not contain any `.py` files. 138s On the other hand, currently there is no concept of package data 138s directory, all directories are treated like packages. 138s ******************************************************************************** 138s 138s !! 138s check.warn(importable) 138s copying eventlet/green/OpenSSL/SSL.py -> build/lib/eventlet/green/OpenSSL 138s copying eventlet/green/OpenSSL/__init__.py -> build/lib/eventlet/green/OpenSSL 138s copying eventlet/green/OpenSSL/crypto.py -> build/lib/eventlet/green/OpenSSL 138s copying eventlet/green/OpenSSL/tsafe.py -> build/lib/eventlet/green/OpenSSL 138s copying eventlet/green/OpenSSL/version.py -> build/lib/eventlet/green/OpenSSL 138s creating build/lib/eventlet/green/http 138s copying eventlet/green/http/__init__.py -> build/lib/eventlet/green/http 138s copying eventlet/green/http/client.py -> build/lib/eventlet/green/http 138s copying eventlet/green/http/cookiejar.py -> build/lib/eventlet/green/http 138s copying eventlet/green/http/cookies.py -> build/lib/eventlet/green/http 138s copying eventlet/green/http/server.py -> build/lib/eventlet/green/http 138s creating build/lib/eventlet/green/urllib 138s copying eventlet/green/urllib/__init__.py -> build/lib/eventlet/green/urllib 138s copying eventlet/green/urllib/error.py -> build/lib/eventlet/green/urllib 138s copying eventlet/green/urllib/parse.py -> build/lib/eventlet/green/urllib 138s copying eventlet/green/urllib/request.py -> build/lib/eventlet/green/urllib 138s copying eventlet/green/urllib/response.py -> build/lib/eventlet/green/urllib 138s creating build/lib/eventlet/greenio 138s copying eventlet/greenio/__init__.py -> build/lib/eventlet/greenio 138s copying eventlet/greenio/base.py -> build/lib/eventlet/greenio 138s copying eventlet/greenio/py3.py -> build/lib/eventlet/greenio 138s creating build/lib/eventlet/hubs 138s copying eventlet/hubs/__init__.py -> build/lib/eventlet/hubs 138s copying eventlet/hubs/asyncio.py -> build/lib/eventlet/hubs 138s copying eventlet/hubs/epolls.py -> build/lib/eventlet/hubs 138s copying eventlet/hubs/hub.py -> build/lib/eventlet/hubs 138s copying eventlet/hubs/kqueue.py -> build/lib/eventlet/hubs 138s copying eventlet/hubs/poll.py -> build/lib/eventlet/hubs 138s copying eventlet/hubs/pyevent.py -> build/lib/eventlet/hubs 138s copying eventlet/hubs/selects.py -> build/lib/eventlet/hubs 138s copying eventlet/hubs/timer.py -> build/lib/eventlet/hubs 138s creating build/lib/eventlet/support 138s copying eventlet/support/__init__.py -> build/lib/eventlet/support 138s copying eventlet/support/greendns.py -> build/lib/eventlet/support 138s copying eventlet/support/greenlets.py -> build/lib/eventlet/support 138s copying eventlet/support/psycopg2_patcher.py -> build/lib/eventlet/support 138s copying eventlet/support/pylib.py -> build/lib/eventlet/support 138s copying eventlet/support/stacklesspypys.py -> build/lib/eventlet/support 138s copying eventlet/support/stacklesss.py -> build/lib/eventlet/support 138s creating build/lib/eventlet/zipkin 138s copying eventlet/zipkin/README.rst -> build/lib/eventlet/zipkin 138s copying eventlet/zipkin/__init__.py -> build/lib/eventlet/zipkin 138s copying eventlet/zipkin/api.py -> build/lib/eventlet/zipkin 138s copying eventlet/zipkin/client.py -> build/lib/eventlet/zipkin 138s copying eventlet/zipkin/greenthread.py -> build/lib/eventlet/zipkin 138s copying eventlet/zipkin/http.py -> build/lib/eventlet/zipkin 138s copying eventlet/zipkin/log.py -> build/lib/eventlet/zipkin 138s copying eventlet/zipkin/patcher.py -> build/lib/eventlet/zipkin 138s copying eventlet/zipkin/wsgi.py -> build/lib/eventlet/zipkin 138s creating build/lib/eventlet/zipkin/_thrift 138s copying eventlet/zipkin/_thrift/README.rst -> build/lib/eventlet/zipkin/_thrift 138s copying eventlet/zipkin/_thrift/__init__.py -> build/lib/eventlet/zipkin/_thrift 138s copying eventlet/zipkin/_thrift/zipkinCore.thrift -> build/lib/eventlet/zipkin/_thrift 138s creating build/lib/eventlet/zipkin/_thrift/zipkinCore 138s copying eventlet/zipkin/_thrift/zipkinCore/__init__.py -> build/lib/eventlet/zipkin/_thrift/zipkinCore 138s copying eventlet/zipkin/_thrift/zipkinCore/constants.py -> build/lib/eventlet/zipkin/_thrift/zipkinCore 138s copying eventlet/zipkin/_thrift/zipkinCore/ttypes.py -> build/lib/eventlet/zipkin/_thrift/zipkinCore 138s creating build/lib/eventlet/zipkin/example 138s copying eventlet/zipkin/example/ex1.png -> build/lib/eventlet/zipkin/example 138s copying eventlet/zipkin/example/ex2.png -> build/lib/eventlet/zipkin/example 138s copying eventlet/zipkin/example/ex3.png -> build/lib/eventlet/zipkin/example 138s running install_lib 138s creating /debian/tmp/usr/lib/python3/dist-packages 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/corolocal.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/dagpool.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s copying build/lib/eventlet/zipkin/log.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s copying build/lib/eventlet/zipkin/api.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s copying build/lib/eventlet/zipkin/client.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s copying build/lib/eventlet/zipkin/wsgi.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s copying build/lib/eventlet/zipkin/patcher.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s copying build/lib/eventlet/zipkin/greenthread.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s copying build/lib/eventlet/zipkin/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore 138s copying build/lib/eventlet/zipkin/_thrift/zipkinCore/ttypes.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore 138s copying build/lib/eventlet/zipkin/_thrift/zipkinCore/constants.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore 138s copying build/lib/eventlet/zipkin/_thrift/zipkinCore/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore 138s copying build/lib/eventlet/zipkin/_thrift/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift 138s copying build/lib/eventlet/zipkin/_thrift/zipkinCore.thrift -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift 138s copying build/lib/eventlet/zipkin/_thrift/README.rst -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift 138s copying build/lib/eventlet/zipkin/http.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/example 138s copying build/lib/eventlet/zipkin/example/ex1.png -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/example 138s copying build/lib/eventlet/zipkin/example/ex2.png -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/example 138s copying build/lib/eventlet/zipkin/example/ex3.png -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/example 138s copying build/lib/eventlet/zipkin/README.rst -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin 138s copying build/lib/eventlet/debug.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/selects.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/pyevent.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/asyncio.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/epolls.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/timer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/kqueue.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/hub.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/hubs/poll.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs 138s copying build/lib/eventlet/semaphore.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/asyncio.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/_version.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/wsgi.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/queue.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/coros.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/timeout.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/websocket.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/backdoor.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/pools.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 138s copying build/lib/eventlet/green/urllib/response.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 138s copying build/lib/eventlet/green/urllib/error.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 138s copying build/lib/eventlet/green/urllib/request.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 138s copying build/lib/eventlet/green/urllib/parse.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 138s copying build/lib/eventlet/green/urllib/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib 138s copying build/lib/eventlet/green/asynchat.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/socket.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/asyncore.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/time.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 138s copying build/lib/eventlet/green/http/cookies.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 138s copying build/lib/eventlet/green/http/client.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 138s copying build/lib/eventlet/green/http/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 138s copying build/lib/eventlet/green/http/cookiejar.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 138s copying build/lib/eventlet/green/http/server.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http 138s copying build/lib/eventlet/green/zmq.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/os.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/MySQLdb.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/SimpleHTTPServer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/ftplib.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/threading.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/_socket_nodns.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/urllib2.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/CGIHTTPServer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/subprocess.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/BaseHTTPServer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/thread.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/Queue.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/builtin.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/SocketServer.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/select.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/profile.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 138s copying build/lib/eventlet/green/OpenSSL/crypto.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 138s copying build/lib/eventlet/green/OpenSSL/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 138s copying build/lib/eventlet/green/OpenSSL/SSL.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 138s copying build/lib/eventlet/green/OpenSSL/tsafe.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 138s copying build/lib/eventlet/green/OpenSSL/version.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL 138s copying build/lib/eventlet/green/ssl.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/httplib.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/green/selectors.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/green 138s copying build/lib/eventlet/db_pool.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/patcher.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/greenthread.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/greenpool.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/lock.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/event.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio 138s copying build/lib/eventlet/greenio/base.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio 138s copying build/lib/eventlet/greenio/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio 138s copying build/lib/eventlet/greenio/py3.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio 138s copying build/lib/eventlet/tpool.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s copying build/lib/eventlet/convenience.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet 138s creating /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 138s copying build/lib/eventlet/support/stacklesss.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 138s copying build/lib/eventlet/support/psycopg2_patcher.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 138s copying build/lib/eventlet/support/pylib.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 138s copying build/lib/eventlet/support/__init__.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 138s copying build/lib/eventlet/support/stacklesspypys.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 138s copying build/lib/eventlet/support/greendns.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 138s copying build/lib/eventlet/support/greenlets.py -> /debian/tmp/usr/lib/python3/dist-packages/eventlet/support 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/corolocal.py to corolocal.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/dagpool.py to dagpool.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/log.py to log.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/api.py to api.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/client.py to client.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/wsgi.py to wsgi.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/patcher.py to patcher.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/greenthread.py to greenthread.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore/ttypes.py to ttypes.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore/constants.py to constants.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/zipkinCore/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/_thrift/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/zipkin/http.py to http.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/debug.py to debug.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/selects.py to selects.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/pyevent.py to pyevent.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/asyncio.py to asyncio.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/epolls.py to epolls.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/timer.py to timer.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/kqueue.py to kqueue.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/hub.py to hub.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/hubs/poll.py to poll.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/semaphore.py to semaphore.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/asyncio.py to asyncio.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/_version.py to _version.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/wsgi.py to wsgi.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/queue.py to queue.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/coros.py to coros.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/timeout.py to timeout.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/websocket.py to websocket.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/backdoor.py to backdoor.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/pools.py to pools.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/response.py to response.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/error.py to error.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/request.py to request.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/parse.py to parse.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/asynchat.py to asynchat.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/socket.py to socket.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/asyncore.py to asyncore.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/time.py to time.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/cookies.py to cookies.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/client.py to client.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/cookiejar.py to cookiejar.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/http/server.py to server.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/zmq.py to zmq.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/os.py to os.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/MySQLdb.py to MySQLdb.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/SimpleHTTPServer.py to SimpleHTTPServer.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/ftplib.py to ftplib.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/threading.py to threading.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/_socket_nodns.py to _socket_nodns.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/urllib2.py to urllib2.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/CGIHTTPServer.py to CGIHTTPServer.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/subprocess.py to subprocess.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/BaseHTTPServer.py to BaseHTTPServer.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/thread.py to thread.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/Queue.py to Queue.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/builtin.py to builtin.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/SocketServer.py to SocketServer.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/select.py to select.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/profile.py to profile.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/crypto.py to crypto.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/SSL.py to SSL.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/tsafe.py to tsafe.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/OpenSSL/version.py to version.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/ssl.py to ssl.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/httplib.py to httplib.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/green/selectors.py to selectors.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/db_pool.py to db_pool.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/patcher.py to patcher.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenthread.py to greenthread.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenpool.py to greenpool.cpython-314.pyc 138s /usr/lib/python3/dist-packages/eventlet/greenpool.py:95: SyntaxWarning: 'return' in a 'finally' block 138s return 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/lock.py to lock.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/event.py to event.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio/base.py to base.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/greenio/py3.py to py3.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/tpool.py to tpool.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/convenience.py to convenience.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/stacklesss.py to stacklesss.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/psycopg2_patcher.py to psycopg2_patcher.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/pylib.py to pylib.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/__init__.py to __init__.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/stacklesspypys.py to stacklesspypys.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/greendns.py to greendns.cpython-314.pyc 138s byte-compiling /debian/tmp/usr/lib/python3/dist-packages/eventlet/support/greenlets.py to greenlets.cpython-314.pyc 138s running install_egg_info 138s Copying eventlet.egg-info to /debian/tmp/usr/lib/python3/dist-packages/eventlet-0.0.0.egg-info 138s Skipping SOURCES.txt 138s running install_scripts 140s ============================= test session starts ============================== 140s platform linux -- Python 3.14.2, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3.14 140s cachedir: .pytest_cache 140s rootdir: /tmp/autopkgtest.WYuUMg/build.OWo/src 140s configfile: pyproject.toml 140s plugins: typeguard-4.4.4, xdist-3.8.0 140s created: 2/2 workers 140s 2 workers [717 items] 140s 140s scheduling tests via LoadScheduling 140s 140s tests/api_test.py::TestApi::test_001_trampoline_timeout 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_connection_is_clean_after_put 140s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_connection_is_clean_after_put 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_create_cursor 140s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_create_cursor 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_cursor_works_as_context_manager 140s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_cursor_works_as_context_manager 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_put_doesnt_double_wrap 140s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_put_doesnt_double_wrap 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_put_none 140s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_put_none 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_raising_create 140s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_raising_create 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_returns_immediately 140s [gw1] [ 0%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_returns_immediately 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_run_bad_query 140s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_run_bad_query 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_run_query 140s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_run_query 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_safe_close 140s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_safe_close 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_set_isolation_level 140s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_set_isolation_level 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_unwrap_connection 140s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_unwrap_connection 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_visibility_from_other_connections 140s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_visibility_from_other_connections 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_waiters_get_woken 140s [gw1] [ 1%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_waiters_get_woken 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_zero_max_age 140s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_zero_max_age 140s tests/db_pool_test.py::Test01Psycopg2Tpool::test_zero_max_idle 140s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_zero_max_idle 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_bool 140s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_bool 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_close_does_a_put 140s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_close_does_a_put 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_connecting 140s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_connecting 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_connection_is_clean_after_put 140s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_connection_is_clean_after_put 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_create_cursor 140s [gw1] [ 2%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_create_cursor 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_cursor_works_as_context_manager 140s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_cursor_works_as_context_manager 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_put_doesnt_double_wrap 140s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_put_doesnt_double_wrap 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_put_none 140s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_put_none 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_raising_create 140s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_raising_create 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_returns_immediately 140s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_returns_immediately 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_run_bad_query 140s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_run_bad_query 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_run_query 140s [gw1] [ 3%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_run_query 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_safe_close 140s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_safe_close 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_set_isolation_level 140s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_set_isolation_level 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_unwrap_connection 140s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_unwrap_connection 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_visibility_from_other_connections 140s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_visibility_from_other_connections 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_waiters_get_woken 140s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_waiters_get_woken 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_zero_max_age 140s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_zero_max_age 140s tests/db_pool_test.py::Test02Psycopg2Raw::test_zero_max_idle 140s [gw1] [ 4%] SKIPPED tests/db_pool_test.py::Test02Psycopg2Raw::test_zero_max_idle 140s tests/debug_test.py::TestSpew::test_line 140s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line 140s tests/debug_test.py::TestSpew::test_line_global 140s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line_global 140s tests/debug_test.py::TestSpew::test_line_nofile 140s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line_nofile 140s tests/debug_test.py::TestSpew::test_line_nooutput 140s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line_nooutput 140s tests/debug_test.py::TestSpew::test_line_novalue 140s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_line_novalue 140s tests/debug_test.py::TestSpew::test_spew 140s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_spew 140s tests/debug_test.py::TestSpew::test_unspew 140s [gw1] [ 5%] PASSED tests/debug_test.py::TestSpew::test_unspew 140s tests/debug_test.py::TestDebug::test_everything 140s [gw1] [ 5%] PASSED tests/debug_test.py::TestDebug::test_everything 140s tests/debug_test.py::TestDebug::test_hub_exceptions 140s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_001_trampoline_timeout 140s tests/api_test.py::TestApi::test_connect_ssl 140s [gw1] [ 6%] PASSED tests/debug_test.py::TestDebug::test_hub_exceptions 140s tests/env_test.py::test_hub_selects 140s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_connect_ssl 140s tests/api_test.py::TestApi::test_connect_tcp 140s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_connect_tcp 141s tests/api_test.py::TestApi::test_killing_dormant 141s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_killing_dormant 141s tests/api_test.py::TestApi::test_nested_with_timeout 141s [gw1] [ 6%] PASSED tests/env_test.py::test_hub_selects 141s tests/env_test.py::test_tpool_dns 141s [gw0] [ 6%] PASSED tests/api_test.py::TestApi::test_nested_with_timeout 141s tests/api_test.py::TestApi::test_tcp_listener 141s [gw0] [ 7%] PASSED tests/api_test.py::TestApi::test_tcp_listener 141s tests/api_test.py::TestApi::test_timeout_cancel 141s [gw0] [ 7%] PASSED tests/api_test.py::TestApi::test_timeout_cancel 141s tests/api_test.py::test_wrap_is_timeout 141s [gw0] [ 7%] PASSED tests/api_test.py::test_wrap_is_timeout 141s tests/api_test.py::test_timeouterror_deprecated 141s [gw1] [ 7%] PASSED tests/env_test.py::test_tpool_dns 141s tests/env_test.py::test_tpool_size 141s [gw0] [ 7%] PASSED tests/api_test.py::test_timeouterror_deprecated 141s tests/api_test.py::test_zero_second_sleep 141s [gw1] [ 7%] PASSED tests/env_test.py::test_tpool_size 142s tests/env_test.py::test_tpool_negative 142s [gw0] [ 7%] PASSED tests/api_test.py::test_zero_second_sleep 142s tests/backdoor_test.py::BackdoorTest::test_quick_client_disconnect 142s [gw1] [ 8%] PASSED tests/env_test.py::test_tpool_negative 142s tests/env_test.py::test_tpool_zero 142s [gw0] [ 8%] PASSED tests/backdoor_test.py::BackdoorTest::test_quick_client_disconnect 142s tests/backdoor_test.py::BackdoorTest::test_server 142s [gw0] [ 8%] PASSED tests/backdoor_test.py::BackdoorTest::test_server 142s tests/backdoor_test.py::BackdoorTest::test_server_on_ipv6_socket 142s [gw1] [ 8%] PASSED tests/env_test.py::test_tpool_zero 142s tests/event_test.py::TestEvent::test_double_exception 142s [gw0] [ 8%] SKIPPED tests/backdoor_test.py::BackdoorTest::test_server_on_ipv6_socket 142s tests/backdoor_test.py::BackdoorTest::test_server_on_unix_socket 142s [gw1] [ 8%] PASSED tests/event_test.py::TestEvent::test_double_exception 142s tests/event_test.py::TestEvent::test_multiple_waiters 142s [gw1] [ 8%] PASSED tests/event_test.py::TestEvent::test_multiple_waiters 142s tests/event_test.py::TestEvent::test_multiple_waiters_with_exception 142s [gw1] [ 9%] PASSED tests/event_test.py::TestEvent::test_multiple_waiters_with_exception 142s tests/event_test.py::TestEvent::test_reset 142s [gw0] [ 9%] PASSED tests/backdoor_test.py::BackdoorTest::test_server_on_unix_socket 142s tests/convenience_test.py::TestServe::test_blocking 142s [gw1] [ 9%] PASSED tests/event_test.py::TestEvent::test_reset 142s tests/event_test.py::TestEvent::test_waiting_for_event 142s [gw0] [ 9%] PASSED tests/convenience_test.py::TestServe::test_blocking 142s tests/convenience_test.py::TestServe::test_called_for_each_connection 142s [gw1] [ 9%] PASSED tests/event_test.py::TestEvent::test_waiting_for_event 142s tests/event_test.py::test_wait_timeout_ok 142s [gw0] [ 9%] PASSED tests/convenience_test.py::TestServe::test_called_for_each_connection 142s tests/convenience_test.py::TestServe::test_concurrency 142s [gw1] [ 9%] PASSED tests/event_test.py::test_wait_timeout_ok 142s tests/event_test.py::test_wait_timeout_exceed 142s [gw0] [ 10%] PASSED tests/convenience_test.py::TestServe::test_concurrency 142s tests/convenience_test.py::TestServe::test_excepting_server 142s [gw0] [ 10%] PASSED tests/convenience_test.py::TestServe::test_excepting_server 142s tests/convenience_test.py::TestServe::test_excepting_server_already_closed 142s [gw1] [ 10%] PASSED tests/event_test.py::test_wait_timeout_exceed 142s tests/green_http_test.py::test_green_http_doesnt_change_original_module 142s [gw0] [ 10%] PASSED tests/convenience_test.py::TestServe::test_excepting_server_already_closed 143s tests/convenience_test.py::TestServe::test_exiting_server 143s [gw0] [ 10%] PASSED tests/convenience_test.py::TestServe::test_exiting_server 143s tests/convenience_test.py::TestServe::test_raising_stopserve 143s [gw0] [ 10%] PASSED tests/convenience_test.py::TestServe::test_raising_stopserve 143s tests/convenience_test.py::TestServe::test_wrap_ssl 143s [gw0] [ 10%] PASSED tests/convenience_test.py::TestServe::test_wrap_ssl 143s tests/convenience_test.py::test_socket_reuse 143s [gw0] [ 11%] PASSED tests/convenience_test.py::test_socket_reuse 143s tests/convenience_test.py::test_reuse_random_port_warning 143s [gw0] [ 11%] PASSED tests/convenience_test.py::test_reuse_random_port_warning 143s tests/convenience_test.py::test_reuseport_oserror 143s [gw0] [ 11%] PASSED tests/convenience_test.py::test_reuseport_oserror 143s tests/dagpool_test.py::test_check_no_suspend 143s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_check_no_suspend 143s tests/dagpool_test.py::test_init 143s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_init 143s tests/dagpool_test.py::test_wait_each_empty 143s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_wait_each_empty 143s tests/dagpool_test.py::test_wait_each_preload 143s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_wait_each_preload 143s tests/dagpool_test.py::test_wait_each_posted 143s [gw0] [ 11%] PASSED tests/dagpool_test.py::test_wait_each_posted 143s tests/dagpool_test.py::test_wait_posted 143s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_wait_posted 143s tests/dagpool_test.py::test_spawn_collision_preload 143s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_spawn_collision_preload 143s tests/dagpool_test.py::test_spawn_collision_post 143s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_spawn_collision_post 143s tests/dagpool_test.py::test_spawn_collision_spawn 143s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_spawn_collision_spawn 143s tests/dagpool_test.py::test_spawn_multiple 143s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_spawn_multiple 143s tests/dagpool_test.py::test_spawn_many 143s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_spawn_many 143s tests/dagpool_test.py::test_wait_each_all 143s [gw0] [ 12%] PASSED tests/dagpool_test.py::test_wait_each_all 143s tests/dagpool_test.py::test_kill 143s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_kill 143s tests/dagpool_test.py::test_post_collision_preload 143s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_post_collision_preload 143s tests/dagpool_test.py::test_post_collision_post 143s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_post_collision_post 143s tests/dagpool_test.py::test_post_collision_spawn 143s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_post_collision_spawn 143s tests/dagpool_test.py::test_post_replace 143s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_post_replace 143s tests/dagpool_test.py::test_getitem 143s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_getitem 143s tests/dagpool_test.py::test_waitall_exc 143s [gw0] [ 13%] PASSED tests/dagpool_test.py::test_waitall_exc 143s tests/dagpool_test.py::test_propagate_exc 143s [gw0] [ 14%] PASSED tests/dagpool_test.py::test_propagate_exc 143s tests/dagpool_test.py::test_wait_each_exc 143s [gw0] [ 14%] PASSED tests/dagpool_test.py::test_wait_each_exc 143s tests/dagpool_test.py::test_post_get_exc 143s [gw0] [ 14%] PASSED tests/dagpool_test.py::test_post_get_exc 143s tests/db_pool_test.py::test_raw_pool_issue_125 143s [gw0] [ 14%] PASSED tests/db_pool_test.py::test_raw_pool_issue_125 143s tests/db_pool_test.py::test_raw_pool_custom_cleanup_ok 143s [gw0] [ 14%] PASSED tests/db_pool_test.py::test_raw_pool_custom_cleanup_ok 143s tests/db_pool_test.py::test_raw_pool_custom_cleanup_arg_error 143s [gw0] [ 14%] PASSED tests/db_pool_test.py::test_raw_pool_custom_cleanup_arg_error 143s tests/db_pool_test.py::test_raw_pool_custom_cleanup_fatal 143s [gw0] [ 14%] PASSED tests/db_pool_test.py::test_raw_pool_custom_cleanup_fatal 143s tests/db_pool_test.py::test_raw_pool_clear_update_current_size 143s [gw0] [ 15%] PASSED tests/db_pool_test.py::test_raw_pool_clear_update_current_size 143s tests/db_pool_test.py::Test01MysqlTpool::test_bool 143s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_bool 143s tests/db_pool_test.py::Test01MysqlTpool::test_close_does_a_put 143s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_close_does_a_put 143s tests/db_pool_test.py::Test01MysqlTpool::test_connecting 143s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_connecting 143s tests/db_pool_test.py::Test01MysqlTpool::test_connection_is_clean_after_put 143s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_connection_is_clean_after_put 143s tests/db_pool_test.py::Test01MysqlTpool::test_create_cursor 143s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_create_cursor 143s tests/db_pool_test.py::Test01MysqlTpool::test_put_doesnt_double_wrap 143s [gw0] [ 15%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_put_doesnt_double_wrap 143s tests/db_pool_test.py::Test01MysqlTpool::test_put_none 143s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_put_none 143s tests/db_pool_test.py::Test01MysqlTpool::test_raising_create 143s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_raising_create 143s tests/db_pool_test.py::Test01MysqlTpool::test_returns_immediately 143s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_returns_immediately 143s tests/db_pool_test.py::Test01MysqlTpool::test_run_bad_query 143s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_run_bad_query 143s tests/db_pool_test.py::Test01MysqlTpool::test_run_query 143s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_run_query 143s tests/db_pool_test.py::Test01MysqlTpool::test_safe_close 143s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_safe_close 143s tests/db_pool_test.py::Test01MysqlTpool::test_unwrap_connection 143s [gw0] [ 16%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_unwrap_connection 143s tests/db_pool_test.py::Test01MysqlTpool::test_visibility_from_other_connections 143s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_visibility_from_other_connections 143s tests/db_pool_test.py::Test01MysqlTpool::test_waiters_get_woken 143s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_waiters_get_woken 143s tests/db_pool_test.py::Test01MysqlTpool::test_zero_max_age 143s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_zero_max_age 143s tests/db_pool_test.py::Test01MysqlTpool::test_zero_max_idle 143s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test01MysqlTpool::test_zero_max_idle 143s tests/db_pool_test.py::Test02MysqlRaw::test_bool 143s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_bool 143s tests/db_pool_test.py::Test02MysqlRaw::test_close_does_a_put 143s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_close_does_a_put 143s tests/db_pool_test.py::Test02MysqlRaw::test_connecting 143s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_connecting 143s tests/db_pool_test.py::Test02MysqlRaw::test_connection_is_clean_after_put 143s [gw0] [ 17%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_connection_is_clean_after_put 143s tests/db_pool_test.py::Test02MysqlRaw::test_create_cursor 143s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_create_cursor 143s tests/db_pool_test.py::Test02MysqlRaw::test_put_doesnt_double_wrap 143s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_put_doesnt_double_wrap 143s tests/db_pool_test.py::Test02MysqlRaw::test_put_none 143s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_put_none 143s tests/db_pool_test.py::Test02MysqlRaw::test_raising_create 143s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_raising_create 143s tests/db_pool_test.py::Test02MysqlRaw::test_returns_immediately 143s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_returns_immediately 143s tests/db_pool_test.py::Test02MysqlRaw::test_run_bad_query 143s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_run_bad_query 143s tests/db_pool_test.py::Test02MysqlRaw::test_run_query 143s [gw0] [ 18%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_run_query 143s tests/db_pool_test.py::Test02MysqlRaw::test_safe_close 143s [gw0] [ 19%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_safe_close 143s tests/db_pool_test.py::Test02MysqlRaw::test_unwrap_connection 143s [gw0] [ 19%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_unwrap_connection 143s tests/db_pool_test.py::Test02MysqlRaw::test_visibility_from_other_connections 143s [gw0] [ 19%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_visibility_from_other_connections 143s tests/db_pool_test.py::Test02MysqlRaw::test_waiters_get_woken 143s [gw0] [ 19%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_waiters_get_woken 143s tests/db_pool_test.py::Test02MysqlRaw::test_zero_max_age 143s [gw0] [ 19%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_zero_max_age 143s tests/db_pool_test.py::Test02MysqlRaw::test_zero_max_idle 143s [gw0] [ 19%] SKIPPED tests/db_pool_test.py::Test02MysqlRaw::test_zero_max_idle 143s tests/db_pool_test.py::Test01Psycopg2Tpool::test_bool 143s [gw0] [ 19%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_bool 143s tests/db_pool_test.py::Test01Psycopg2Tpool::test_close_does_a_put 143s [gw0] [ 20%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_close_does_a_put 143s tests/db_pool_test.py::Test01Psycopg2Tpool::test_connecting 143s [gw0] [ 20%] SKIPPED tests/db_pool_test.py::Test01Psycopg2Tpool::test_connecting 143s tests/greenio_test.py::TestGreenSocket::test_del_closes_socket 143s [gw1] [ 20%] PASSED tests/green_http_test.py::test_green_http_doesnt_change_original_module 143s tests/green_http_test.py::test_green_httplib_doesnt_change_original_module 143s [gw0] [ 20%] PASSED tests/greenio_test.py::TestGreenSocket::test_del_closes_socket 143s tests/greenio_test.py::TestGreenSocket::test_dup_nonblocking 143s [gw0] [ 20%] PASSED tests/greenio_test.py::TestGreenSocket::test_dup_nonblocking 143s tests/greenio_test.py::TestGreenSocket::test_full_duplex 143s [gw1] [ 20%] PASSED tests/green_http_test.py::test_green_httplib_doesnt_change_original_module 143s tests/green_http_test.py::test_http_request_encode_chunked_kwarg 143s [gw1] [ 20%] PASSED tests/green_http_test.py::test_http_request_encode_chunked_kwarg 143s tests/green_profile_test.py::test_green_profile_basic 143s [gw1] [ 21%] PASSED tests/green_profile_test.py::test_green_profile_basic 143s tests/green_select_test.py::test_select_mark_file_as_reopened 143s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_full_duplex 143s tests/greenio_test.py::TestGreenSocket::test_invalid_connection 143s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_invalid_connection 143s tests/greenio_test.py::TestGreenSocket::test_nonblocking_accept_mark_as_reopened 143s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_nonblocking_accept_mark_as_reopened 143s tests/greenio_test.py::TestGreenSocket::test_raised_multiple_readers 143s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_raised_multiple_readers 144s tests/greenio_test.py::TestGreenSocket::test_recv_into_timeout 144s [gw0] [ 21%] PASSED tests/greenio_test.py::TestGreenSocket::test_recv_into_timeout 144s tests/greenio_test.py::TestGreenSocket::test_recv_timeout 144s [gw1] [ 21%] PASSED tests/green_select_test.py::test_select_mark_file_as_reopened 144s tests/greendns_test.py::TestHostsResolver::test_default_fname 144s [gw1] [ 22%] PASSED tests/greendns_test.py::TestHostsResolver::test_default_fname 144s tests/greendns_test.py::TestHostsResolver::test_getaliases 144s [gw1] [ 22%] PASSED tests/greendns_test.py::TestHostsResolver::test_getaliases 144s tests/greendns_test.py::TestHostsResolver::test_getaliases_fqdn 144s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_recv_timeout 144s tests/greenio_test.py::TestGreenSocket::test_recvfrom_into_timeout 144s [gw1] [ 22%] PASSED tests/greendns_test.py::TestHostsResolver::test_getaliases_fqdn 144s tests/greendns_test.py::TestHostsResolver::test_getaliases_unknown 144s [gw1] [ 22%] PASSED tests/greendns_test.py::TestHostsResolver::test_getaliases_unknown 144s tests/greendns_test.py::TestHostsResolver::test_hosts_case_insensitive 144s [gw1] [ 22%] PASSED tests/greendns_test.py::TestHostsResolver::test_hosts_case_insensitive 144s tests/greendns_test.py::TestHostsResolver::test_load_no_contents 144s [gw0] [ 22%] PASSED tests/greenio_test.py::TestGreenSocket::test_recvfrom_into_timeout 144s tests/greenio_test.py::TestGreenSocket::test_recvfrom_timeout 144s [gw1] [ 23%] PASSED tests/greendns_test.py::TestHostsResolver::test_load_no_contents 144s tests/greendns_test.py::TestHostsResolver::test_load_v4_v6_cname_aliases 144s [gw1] [ 23%] PASSED tests/greendns_test.py::TestHostsResolver::test_load_v4_v6_cname_aliases 144s tests/greendns_test.py::TestHostsResolver::test_load_v6_link_local 144s [gw1] [ 23%] PASSED tests/greendns_test.py::TestHostsResolver::test_load_v6_link_local 144s tests/greendns_test.py::TestHostsResolver::test_query_A 144s [gw1] [ 23%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_A 144s tests/greendns_test.py::TestHostsResolver::test_query_AAAA 144s [gw0] [ 23%] PASSED tests/greenio_test.py::TestGreenSocket::test_recvfrom_timeout 144s tests/greenio_test.py::TestGreenSocket::test_send_timeout 144s [gw1] [ 23%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_AAAA 144s tests/greendns_test.py::TestHostsResolver::test_query_CNAME 144s [gw0] [ 23%] PASSED tests/greenio_test.py::TestGreenSocket::test_send_timeout 144s tests/greenio_test.py::TestGreenSocket::test_sendall 144s [gw1] [ 23%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_CNAME 144s tests/greendns_test.py::TestHostsResolver::test_query_ans_types 144s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_ans_types 144s tests/greendns_test.py::TestHostsResolver::test_query_unknown_no_raise 144s [gw0] [ 24%] PASSED tests/greenio_test.py::TestGreenSocket::test_sendall 144s tests/greenio_test.py::TestGreenSocket::test_sendall_timeout 144s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_unknown_no_raise 144s tests/greendns_test.py::TestHostsResolver::test_query_unknown_raises 144s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_unknown_raises 145s tests/greendns_test.py::TestHostsResolver::test_query_unknown_type 145s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_query_unknown_type 145s tests/greendns_test.py::TestHostsResolver::test_readlines_lines 145s [gw0] [ 24%] PASSED tests/greenio_test.py::TestGreenSocket::test_sendall_timeout 145s tests/greenio_test.py::TestGreenSocket::test_shutdown_safe 145s [gw1] [ 24%] PASSED tests/greendns_test.py::TestHostsResolver::test_readlines_lines 145s tests/greendns_test.py::TestHostsResolver::test_readlines_missing_file 145s [gw0] [ 25%] PASSED tests/greenio_test.py::TestGreenSocket::test_shutdown_safe 145s tests/greenio_test.py::TestGreenSocket::test_skip_nonblocking 145s [gw1] [ 25%] PASSED tests/greendns_test.py::TestHostsResolver::test_readlines_missing_file 145s tests/greendns_test.py::TestUdp::test_udp_ipv4 145s [gw0] [ 25%] PASSED tests/greenio_test.py::TestGreenSocket::test_skip_nonblocking 145s tests/greenio_test.py::TestGreenSocket::test_socketpair_select 145s [gw1] [ 25%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv4 145s tests/greendns_test.py::TestUdp::test_udp_ipv4_timeout 145s [gw0] [ 25%] PASSED tests/greenio_test.py::TestGreenSocket::test_socketpair_select 145s tests/greenio_test.py::TestGreenSocket::test_sockopt_interface 145s [gw0] [ 25%] PASSED tests/greenio_test.py::TestGreenSocket::test_sockopt_interface 145s tests/greenio_test.py::TestGreenSocket::test_timeout_and_final_write 145s [gw1] [ 25%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv4_timeout 145s tests/greendns_test.py::TestUdp::test_udp_ipv4_wrong_addr 145s [gw0] [ 26%] PASSED tests/greenio_test.py::TestGreenSocket::test_timeout_and_final_write 145s tests/greenio_test.py::TestGreenSocket::test_wrap_socket 145s [gw1] [ 26%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv4_wrong_addr 145s tests/greendns_test.py::TestUdp::test_udp_ipv4_wrong_addr_ignore 145s [gw0] [ 26%] PASSED tests/greenio_test.py::TestGreenSocket::test_wrap_socket 145s tests/greenio_test.py::TestGreenSocket::test_zero_timeout_and_back 145s [gw1] [ 26%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv4_wrong_addr_ignore 145s tests/greendns_test.py::TestUdp::test_udp_ipv6 145s [gw0] [ 26%] PASSED tests/greenio_test.py::TestGreenSocket::test_zero_timeout_and_back 145s tests/greenio_test.py::test_get_fileno_of_a_socket_works 145s [gw0] [ 26%] PASSED tests/greenio_test.py::test_get_fileno_of_a_socket_works 145s tests/greenio_test.py::test_get_fileno_of_an_int_works 145s [gw0] [ 26%] PASSED tests/greenio_test.py::test_get_fileno_of_an_int_works 145s tests/greenio_test.py::test_get_fileno_of_wrong_type_fails 145s [gw0] [ 27%] PASSED tests/greenio_test.py::test_get_fileno_of_wrong_type_fails 145s tests/greenio_test.py::test_get_fileno_of_a_socket_with_fileno_returning_wrong_type_fails 145s [gw0] [ 27%] PASSED tests/greenio_test.py::test_get_fileno_of_a_socket_with_fileno_returning_wrong_type_fails 145s tests/greenio_test.py::TestGreenPipe::test_pip_read_until_end 145s [gw1] [ 27%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6 145s tests/greendns_test.py::TestUdp::test_udp_ipv6_addr_zeroes 145s [gw1] [ 27%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6_addr_zeroes 145s tests/greendns_test.py::TestUdp::test_udp_ipv6_timeout 145s [gw0] [ 27%] FAILED tests/greenio_test.py::TestGreenPipe::test_pip_read_until_end 145s tests/greenio_test.py::TestGreenPipe::test_pipe 145s [gw1] [ 27%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6_timeout 145s tests/greendns_test.py::TestUdp::test_udp_ipv6_wrong_addr 145s [gw0] [ 27%] FAILED tests/greenio_test.py::TestGreenPipe::test_pipe 145s tests/greenio_test.py::TestGreenPipe::test_pipe_read 145s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6_wrong_addr 146s tests/greendns_test.py::TestUdp::test_udp_ipv6_wrong_addr_ignore 146s [gw0] [ 28%] FAILED tests/greenio_test.py::TestGreenPipe::test_pipe_read 146s tests/greenio_test.py::TestGreenPipe::test_pipe_read_unbuffered 146s [gw0] [ 28%] PASSED tests/greenio_test.py::TestGreenPipe::test_pipe_read_unbuffered 146s tests/greenio_test.py::TestGreenPipe::test_pipe_writes_large_messages 146s [gw1] [ 28%] PASSED tests/greendns_test.py::TestUdp::test_udp_ipv6_wrong_addr_ignore 146s tests/greendns_test.py::TestProxyResolver::test_getaliases 146s [gw1] [ 28%] PASSED tests/greendns_test.py::TestProxyResolver::test_getaliases 146s tests/greendns_test.py::TestProxyResolver::test_getaliases_fqdn 146s [gw1] [ 28%] PASSED tests/greendns_test.py::TestProxyResolver::test_getaliases_fqdn 146s tests/greendns_test.py::TestProxyResolver::test_getaliases_nxdomain 146s [gw0] [ 28%] FAILED tests/greenio_test.py::TestGreenPipe::test_pipe_writes_large_messages 146s tests/greenio_test.py::TestGreenPipe::test_seek_on_buffered_pipe 146s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_getaliases_nxdomain 146s tests/greendns_test.py::TestProxyResolver::test_hosts 146s [gw0] [ 29%] PASSED tests/greenio_test.py::TestGreenPipe::test_seek_on_buffered_pipe 146s tests/greenio_test.py::TestGreenPipe::test_truncate 146s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_hosts 146s tests/greendns_test.py::TestProxyResolver::test_hosts_noanswer 146s [gw0] [ 29%] PASSED tests/greenio_test.py::TestGreenPipe::test_truncate 146s tests/greenio_test.py::TestGreenIoLong::test_multiple_readers 146s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_hosts_noanswer 146s tests/greendns_test.py::TestProxyResolver::test_noanswer 146s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_noanswer 146s tests/greendns_test.py::TestProxyResolver::test_noanswer_hosts 146s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_noanswer_hosts 146s tests/greendns_test.py::TestProxyResolver::test_nxdomain 146s [gw1] [ 29%] PASSED tests/greendns_test.py::TestProxyResolver::test_nxdomain 146s tests/greendns_test.py::TestProxyResolver::test_resolver 146s [gw1] [ 30%] PASSED tests/greendns_test.py::TestProxyResolver::test_resolver 146s tests/greendns_test.py::TestResolve::test_A 146s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_A 146s tests/greendns_test.py::TestResolve::test_AAAA 146s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_AAAA 146s tests/greendns_test.py::TestResolve::test_exc 146s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_exc 146s tests/greendns_test.py::TestResolve::test_noraise_noanswer 146s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_noraise_noanswer 146s tests/greendns_test.py::TestResolve::test_noraise_nxdomain 146s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_noraise_nxdomain 146s tests/greendns_test.py::TestResolve::test_timeout 146s [gw1] [ 30%] PASSED tests/greendns_test.py::TestResolve::test_timeout 146s tests/greendns_test.py::TestResolve::test_unknown_rdtype 146s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolve::test_unknown_rdtype 146s tests/greendns_test.py::TestResolveCname::test_no_answer 146s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolveCname::test_no_answer 146s tests/greendns_test.py::TestResolveCname::test_nodata 146s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolveCname::test_nodata 146s tests/greendns_test.py::TestResolveCname::test_success 146s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolveCname::test_success 146s tests/greendns_test.py::TestResolveCname::test_timeout 146s [gw1] [ 31%] PASSED tests/greendns_test.py::TestResolveCname::test_timeout 146s tests/greendns_test.py::TestGetaddrinfo::test_AI_ADDRCONFIG 146s [gw1] [ 31%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_AI_ADDRCONFIG 146s tests/greendns_test.py::TestGetaddrinfo::test_AI_ADDRCONFIG_noaddr 146s [gw1] [ 31%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_AI_ADDRCONFIG_noaddr 146s tests/greendns_test.py::TestGetaddrinfo::test_canonname 146s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_canonname 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo 146s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_bytes 146s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_bytes 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_ans_with_error 146s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_ans_with_error 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_ans_with_timeout 146s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_ans_with_timeout 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_dns_error 146s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_dns_error 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_timeout 146s [gw1] [ 32%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_hosts_only_timeout 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_idn 146s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_idn 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_inet 146s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_inet 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_inet6 146s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_inet6 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_only_a_ans 146s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_only_a_ans 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_only_aaaa_ans 146s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_only_aaaa_ans 146s tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_type_parameter 146s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_getaddrinfo_type_parameter 146s tests/greendns_test.py::TestGetaddrinfo::test_host_none 146s [gw1] [ 33%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_host_none 146s tests/greendns_test.py::TestGetaddrinfo::test_host_none_passive 146s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_host_none_passive 146s tests/greendns_test.py::TestGetaddrinfo::test_noport 146s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_noport 146s tests/greendns_test.py::TestGetaddrinfo::test_numerichost 146s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_numerichost 146s tests/greendns_test.py::TestGetaddrinfo::test_numericserv 146s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_numericserv 146s tests/greendns_test.py::TestGetaddrinfo::test_v4mapped 146s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_v4mapped 146s tests/greendns_test.py::TestGetaddrinfo::test_v4mapped_all 146s [gw1] [ 34%] PASSED tests/greendns_test.py::TestGetaddrinfo::test_v4mapped_all 146s tests/greendns_test.py::TestIsIpAddr::test_isv4 146s [gw1] [ 34%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv4 146s tests/greendns_test.py::TestIsIpAddr::test_isv4_false 146s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv4_false 146s tests/greendns_test.py::TestIsIpAddr::test_isv4_none 146s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv4_none 146s tests/greendns_test.py::TestIsIpAddr::test_isv6 146s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv6 146s tests/greendns_test.py::TestIsIpAddr::test_isv6_invalid 146s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv6_invalid 146s tests/greendns_test.py::TestIsIpAddr::test_isv6_none 146s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_isv6_none 147s tests/greendns_test.py::TestIsIpAddr::test_none 147s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_none 147s tests/greendns_test.py::TestIsIpAddr::test_v4 147s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_v4 147s tests/greendns_test.py::TestIsIpAddr::test_v4_illegal 147s [gw1] [ 35%] PASSED tests/greendns_test.py::TestIsIpAddr::test_v4_illegal 147s tests/greendns_test.py::TestIsIpAddr::test_v6_addr 147s [gw1] [ 36%] PASSED tests/greendns_test.py::TestIsIpAddr::test_v6_addr 147s tests/greendns_test.py::TestGethostbyname::test_ipaddr 147s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname::test_ipaddr 147s tests/greendns_test.py::TestGethostbyname::test_name 147s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname::test_name 147s tests/greendns_test.py::TestGetaliases::test_getaliases 147s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGetaliases::test_getaliases 147s tests/greendns_test.py::TestGethostbyname_ex::test_ipaddr 147s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname_ex::test_ipaddr 147s tests/greendns_test.py::TestGethostbyname_ex::test_multiple_addrs 147s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname_ex::test_multiple_addrs 147s tests/greendns_test.py::TestGethostbyname_ex::test_name 147s [gw1] [ 36%] PASSED tests/greendns_test.py::TestGethostbyname_ex::test_name 147s tests/greendns_test.py::TestRaiseErrors::test_raise_new_error 147s [gw1] [ 37%] PASSED tests/greendns_test.py::TestRaiseErrors::test_raise_new_error 147s tests/greendns_test.py::test_reverse_name 147s [gw1] [ 37%] PASSED tests/greendns_test.py::test_reverse_name 147s tests/greendns_test.py::test_proxy_resolve_unqualified 147s [gw1] [ 37%] PASSED tests/greendns_test.py::test_proxy_resolve_unqualified 147s tests/greendns_test.py::test_hosts_priority 147s [gw1] [ 37%] PASSED tests/greendns_test.py::test_hosts_priority 147s tests/greendns_test.py::test_hosts_no_network 147s [gw1] [ 37%] PASSED tests/greendns_test.py::test_hosts_no_network 148s tests/greendns_test.py::test_import_rdtypes_then_eventlet 148s [gw1] [ 37%] PASSED tests/greendns_test.py::test_import_rdtypes_then_eventlet 148s tests/greenio_test.py::TestGreenSocket::test_accept_timeout 148s [gw1] [ 37%] PASSED tests/greenio_test.py::TestGreenSocket::test_accept_timeout 148s tests/greenio_test.py::TestGreenSocket::test_blocking_accept_mark_as_reopened 148s [gw1] [ 38%] PASSED tests/greenio_test.py::TestGreenSocket::test_blocking_accept_mark_as_reopened 148s tests/greenio_test.py::TestGreenSocket::test_close_with_makefile 148s [gw1] [ 38%] PASSED tests/greenio_test.py::TestGreenSocket::test_close_with_makefile 148s tests/greenio_test.py::TestGreenSocket::test_closure 148s [gw1] [ 38%] SKIPPED tests/greenio_test.py::TestGreenSocket::test_closure 148s tests/greenio_test.py::TestGreenSocket::test_datagram_socket_operations_work 148s [gw1] [ 38%] PASSED tests/greenio_test.py::TestGreenSocket::test_datagram_socket_operations_work 148s tests/greenio_test.py::TestGreenSocket::test_default_nonblocking 148s [gw1] [ 38%] PASSED tests/greenio_test.py::TestGreenSocket::test_default_nonblocking 148s tests/hub_test.py::test_use_hub_class 148s [gw1] [ 38%] PASSED tests/hub_test.py::test_use_hub_class 149s tests/hub_test.py::test_kqueue_unsupported 149s [gw1] [ 38%] PASSED tests/hub_test.py::test_kqueue_unsupported 149s tests/mysqldb_test.py::TestMySQLdb::test_connecting 149s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_connecting 149s tests/mysqldb_test.py::TestMySQLdb::test_connecting_annoyingly 149s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_connecting_annoyingly 149s tests/mysqldb_test.py::TestMySQLdb::test_create_cursor 149s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_create_cursor 149s tests/mysqldb_test.py::TestMySQLdb::test_module_attributes 149s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_module_attributes 149s tests/mysqldb_test.py::TestMySQLdb::test_run_bad_query 149s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_run_bad_query 149s tests/mysqldb_test.py::TestMySQLdb::test_run_query 149s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_run_query 149s tests/mysqldb_test.py::TestMySQLdb::test_visibility_from_other_connections 149s [gw1] [ 39%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_visibility_from_other_connections 149s tests/mysqldb_test.py::TestMySQLdb::test_yields 149s [gw1] [ 40%] SKIPPED tests/mysqldb_test.py::TestMySQLdb::test_yields 149s tests/mysqldb_test.py::TestMonkeyPatch::test_monkey_patching 149s [gw1] [ 40%] SKIPPED tests/mysqldb_test.py::TestMonkeyPatch::test_monkey_patching 149s tests/not_asyncio_test.py::test_spawn_from_coroutine_errors 149s [gw1] [ 40%] PASSED tests/not_asyncio_test.py::test_spawn_from_coroutine_errors 149s tests/openssl_test.py::test_import 149s [gw1] [ 40%] PASSED tests/openssl_test.py::test_import 149s tests/os_test.py::test_pathlib_open_issue_534 149s [gw1] [ 40%] PASSED tests/os_test.py::test_pathlib_open_issue_534 149s tests/os_test.py::test_os_read_nonblocking 149s [gw1] [ 40%] PASSED tests/os_test.py::test_os_read_nonblocking 152s tests/os_test.py::test_os_write_nonblocking 152s [gw1] [ 40%] PASSED tests/os_test.py::test_os_write_nonblocking 152s tests/patcher_psycopg_test.py::PatchingPsycopg::test_psycopg_patched 152s [gw1] [ 41%] SKIPPED tests/patcher_psycopg_test.py::PatchingPsycopg::test_psycopg_patched 152s tests/patcher_test.py::ImportPatched::test_patch_a_module 152s [gw1] [ 41%] PASSED tests/patcher_test.py::ImportPatched::test_patch_a_module 152s tests/patcher_test.py::test_import_patched_handles_sub_modules 152s [gw1] [ 41%] PASSED tests/patcher_test.py::test_import_patched_handles_sub_modules 153s tests/patcher_test.py::MonkeyPatch::test_boolean 153s [gw1] [ 41%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean 153s tests/patcher_test.py::MonkeyPatch::test_boolean_all 153s [gw1] [ 41%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_all 154s tests/patcher_test.py::MonkeyPatch::test_boolean_all_negative 154s [gw1] [ 41%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_all_negative 154s tests/patcher_test.py::MonkeyPatch::test_boolean_all_single 154s [gw1] [ 41%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_all_single 155s tests/patcher_test.py::MonkeyPatch::test_boolean_double 155s [gw0] [ 41%] PASSED tests/greenio_test.py::TestGreenIoLong::test_multiple_readers 155s tests/greenio_test.py::test_set_nonblocking 155s [gw0] [ 42%] PASSED tests/greenio_test.py::test_set_nonblocking 155s tests/greenio_test.py::test_socket_del_fails_gracefully_when_not_fully_initialized 155s [gw0] [ 42%] PASSED tests/greenio_test.py::test_socket_del_fails_gracefully_when_not_fully_initialized 155s tests/greenio_test.py::test_double_close_219 155s [gw1] [ 42%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_double 155s tests/patcher_test.py::MonkeyPatch::test_boolean_negative 155s [gw0] [ 42%] PASSED tests/greenio_test.py::test_double_close_219 155s tests/greenio_test.py::test_partial_write_295 155s [gw1] [ 42%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_negative 155s tests/patcher_test.py::MonkeyPatch::test_boolean_negative2 155s [gw0] [ 42%] PASSED tests/greenio_test.py::test_partial_write_295 155s tests/greenio_test.py::test_socket_file_read_non_int 155s [gw0] [ 42%] PASSED tests/greenio_test.py::test_socket_file_read_non_int 155s tests/greenio_test.py::test_pipe_context 155s [gw0] [ 43%] FAILED tests/greenio_test.py::test_pipe_context 155s tests/greenio_test.py::test_greenpipe_write 155s [gw0] [ 43%] FAILED tests/greenio_test.py::test_greenpipe_write 155s tests/greenio_test.py::test_greenpipe_append 155s [gw0] [ 43%] FAILED tests/greenio_test.py::test_greenpipe_append 155s tests/greenio_test.py::test_greenpipe_read_overwrite 155s [gw0] [ 43%] FAILED tests/greenio_test.py::test_greenpipe_read_overwrite 156s tests/greenio_test.py::test_greenpipe_write_plus 156s [gw0] [ 43%] FAILED tests/greenio_test.py::test_greenpipe_write_plus 156s tests/greenio_test.py::test_greenpipe_append_plus 156s [gw0] [ 43%] FAILED tests/greenio_test.py::test_greenpipe_append_plus 156s tests/greenpool_test.py::GreenPool::test_empty_imap 156s [gw1] [ 43%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_negative2 156s tests/patcher_test.py::MonkeyPatch::test_boolean_single 156s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_empty_imap 156s tests/greenpool_test.py::GreenPool::test_exceptions 156s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_exceptions 156s tests/greenpool_test.py::GreenPool::test_imap 156s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_imap 156s tests/greenpool_test.py::GreenPool::test_imap_multi_args 156s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_imap_multi_args 156s tests/greenpool_test.py::GreenPool::test_imap_nonefunc 156s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_imap_nonefunc 156s tests/greenpool_test.py::GreenPool::test_imap_raises 156s [gw0] [ 44%] PASSED tests/greenpool_test.py::GreenPool::test_imap_raises 156s tests/greenpool_test.py::GreenPool::test_multiple_coros 156s [gw1] [ 44%] PASSED tests/patcher_test.py::MonkeyPatch::test_boolean_single 156s tests/patcher_test.py::MonkeyPatch::test_conflicting_specifications 156s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPool::test_multiple_coros 156s tests/greenpool_test.py::GreenPool::test_pool_smash 156s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPool::test_pool_smash 156s tests/greenpool_test.py::GreenPool::test_recursive_waitall 156s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPool::test_recursive_waitall 156s tests/greenpool_test.py::GreenPool::test_reentrant 156s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPool::test_reentrant 156s tests/greenpool_test.py::GreenPool::test_resize 156s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPool::test_resize 156s tests/greenpool_test.py::GreenPool::test_spawn 156s [gw0] [ 45%] PASSED tests/greenpool_test.py::GreenPool::test_spawn 156s tests/greenpool_test.py::GreenPool::test_spawn_n 156s [gw1] [ 45%] PASSED tests/patcher_test.py::MonkeyPatch::test_conflicting_specifications 156s [gw0] [ 46%] PASSED tests/greenpool_test.py::GreenPool::test_spawn_n 156s tests/greenpool_test.py::GreenPool::test_spawn_n_2 156s tests/patcher_test.py::MonkeyPatch::test_early_patching 156s [gw0] [ 46%] PASSED tests/greenpool_test.py::GreenPool::test_spawn_n_2 157s tests/greenpool_test.py::GreenPool::test_starmap 157s [gw0] [ 46%] PASSED tests/greenpool_test.py::GreenPool::test_starmap 157s tests/greenpool_test.py::GreenPool::test_timer_cancel 157s [gw0] [ 46%] PASSED tests/greenpool_test.py::GreenPool::test_timer_cancel 157s tests/greenpool_test.py::GreenPool::test_waitall_on_nothing 157s [gw0] [ 46%] PASSED tests/greenpool_test.py::GreenPool::test_waitall_on_nothing 157s tests/greenpool_test.py::GreenPool::test_waiting 157s [gw0] [ 46%] PASSED tests/greenpool_test.py::GreenPool::test_waiting 157s tests/greenpool_test.py::GreenPile::test_constructing_from_pool 157s [gw0] [ 46%] PASSED tests/greenpool_test.py::GreenPile::test_constructing_from_pool 157s tests/greenpool_test.py::GreenPile::test_empty_pile 157s [gw0] [ 47%] PASSED tests/greenpool_test.py::GreenPile::test_empty_pile 157s tests/greenpool_test.py::GreenPile::test_pile 157s [gw0] [ 47%] PASSED tests/greenpool_test.py::GreenPile::test_pile 157s tests/greenpool_test.py::GreenPile::test_pile_spawn_times_out 157s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_early_patching 157s tests/patcher_test.py::MonkeyPatch::test_late_patching 157s [gw0] [ 47%] PASSED tests/greenpool_test.py::GreenPile::test_pile_spawn_times_out 157s tests/greenpool_test.py::test_greenpool_type_check 157s [gw0] [ 47%] PASSED tests/greenpool_test.py::test_greenpool_type_check 157s tests/greenpool_test.py::Stress::test_imap_50 157s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_late_patching 158s tests/patcher_test.py::MonkeyPatch::test_patched_modules 158s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_patched_modules 158s tests/patcher_test.py::MonkeyPatch::test_typeerror 158s [gw1] [ 47%] PASSED tests/patcher_test.py::MonkeyPatch::test_typeerror 159s tests/patcher_test.py::Tpool::test_patched_thread 159s [gw1] [ 48%] PASSED tests/patcher_test.py::Tpool::test_patched_thread 160s tests/patcher_test.py::Tpool::test_simple 160s [gw1] [ 48%] PASSED tests/patcher_test.py::Tpool::test_simple 161s tests/patcher_test.py::Tpool::test_unpatched_thread 161s [gw1] [ 48%] PASSED tests/patcher_test.py::Tpool::test_unpatched_thread 161s tests/patcher_test.py::test_subprocess_after_monkey_patch 161s [gw1] [ 48%] PASSED tests/patcher_test.py::test_subprocess_after_monkey_patch 162s tests/patcher_test.py::Threading::test_greenlet 162s [gw1] [ 48%] PASSED tests/patcher_test.py::Threading::test_greenlet 162s tests/patcher_test.py::Threading::test_greenthread 162s [gw1] [ 48%] PASSED tests/patcher_test.py::Threading::test_greenthread 163s tests/patcher_test.py::Threading::test_keyerror 163s [gw1] [ 48%] PASSED tests/patcher_test.py::Threading::test_keyerror 163s tests/patcher_test.py::Threading::test_tpool 163s [gw1] [ 49%] PASSED tests/patcher_test.py::Threading::test_tpool 164s tests/patcher_test.py::Os::test_waitpid 164s [gw1] [ 49%] PASSED tests/patcher_test.py::Os::test_waitpid 164s tests/patcher_test.py::GreenThreadWrapper::test_ident 164s [gw0] [ 49%] PASSED tests/greenpool_test.py::Stress::test_imap_50 164s tests/greenpool_test.py::Stress::test_imap_500 164s [gw1] [ 49%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_ident 165s tests/patcher_test.py::GreenThreadWrapper::test_is_alive 165s [gw1] [ 49%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_is_alive 165s tests/patcher_test.py::GreenThreadWrapper::test_is_daemon 165s [gw1] [ 49%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_is_daemon 165s tests/patcher_test.py::GreenThreadWrapper::test_join 165s [gw1] [ 49%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_join 166s tests/patcher_test.py::GreenThreadWrapper::test_name 166s [gw1] [ 50%] PASSED tests/patcher_test.py::GreenThreadWrapper::test_name 166s tests/patcher_test.py::test_patcher_existing_locks_early 166s [gw1] [ 50%] PASSED tests/patcher_test.py::test_patcher_existing_locks_early 167s tests/patcher_test.py::test_patcher_existing_locks_late 167s [gw1] [ 50%] PASSED tests/patcher_test.py::test_patcher_existing_locks_late 167s tests/patcher_test.py::test_patcher_existing_locks_unlocked 167s [gw1] [ 50%] SKIPPED tests/patcher_test.py::test_patcher_existing_locks_unlocked 167s tests/patcher_test.py::test_patcher_existing_logging_module_lock 167s [gw1] [ 50%] PASSED tests/patcher_test.py::test_patcher_existing_logging_module_lock 168s tests/patcher_test.py::test_importlib_lock 168s [gw1] [ 50%] PASSED tests/patcher_test.py::test_importlib_lock 168s tests/patcher_test.py::test_threading_condition 168s [gw1] [ 50%] PASSED tests/patcher_test.py::test_threading_condition 169s tests/patcher_test.py::test_threading_join 169s [gw1] [ 51%] PASSED tests/patcher_test.py::test_threading_join 170s tests/patcher_test.py::test_socketserver_selectors 170s [gw1] [ 51%] PASSED tests/patcher_test.py::test_socketserver_selectors 171s tests/patcher_test.py::test_blocking_select_methods_are_deleted 171s [gw1] [ 51%] PASSED tests/patcher_test.py::test_blocking_select_methods_are_deleted 171s tests/patcher_test.py::test_regular_file_readall 171s [gw1] [ 51%] FAILED tests/patcher_test.py::test_regular_file_readall 171s tests/patcher_test.py::test_threading_current 171s [gw0] [ 51%] PASSED tests/greenpool_test.py::Stress::test_imap_500 172s tests/greenpool_test.py::Stress::test_ordering_5 172s [gw1] [ 51%] PASSED tests/patcher_test.py::test_threading_current 172s tests/patcher_test.py::test_threadpoolexecutor 172s [gw0] [ 51%] PASSED tests/greenpool_test.py::Stress::test_ordering_5 172s tests/greenpool_test.py::Stress::test_ordering_50 172s [gw1] [ 52%] PASSED tests/patcher_test.py::test_threadpoolexecutor 172s tests/patcher_test.py::test_builtin 172s [gw1] [ 52%] PASSED tests/patcher_test.py::test_builtin 173s tests/patcher_test.py::test_open_kwargs 173s [gw0] [ 52%] PASSED tests/greenpool_test.py::Stress::test_ordering_50 173s tests/greenpool_test.py::Stress::test_with_intpool 173s [gw1] [ 52%] PASSED tests/patcher_test.py::test_open_kwargs 173s tests/patcher_test.py::test_patcher_existing_locks 173s [gw0] [ 52%] PASSED tests/greenpool_test.py::Stress::test_with_intpool 173s tests/greenthread_test.py::Spawn::test_kill 173s [gw0] [ 52%] PASSED tests/greenthread_test.py::Spawn::test_kill 173s tests/greenthread_test.py::Spawn::test_kill_meth 173s [gw0] [ 52%] PASSED tests/greenthread_test.py::Spawn::test_kill_meth 173s tests/greenthread_test.py::Spawn::test_kill_n 173s [gw0] [ 52%] PASSED tests/greenthread_test.py::Spawn::test_kill_n 173s tests/greenthread_test.py::Spawn::test_link 173s [gw0] [ 53%] PASSED tests/greenthread_test.py::Spawn::test_link 173s tests/greenthread_test.py::Spawn::test_link_after_exited 173s [gw0] [ 53%] PASSED tests/greenthread_test.py::Spawn::test_link_after_exited 173s tests/greenthread_test.py::Spawn::test_link_relinks 173s [gw0] [ 53%] PASSED tests/greenthread_test.py::Spawn::test_link_relinks 173s tests/greenthread_test.py::Spawn::test_n 173s [gw1] [ 53%] PASSED tests/patcher_test.py::test_patcher_existing_locks 173s tests/patcher_test.py::test_patcher_existing_locks_exception 173s [gw0] [ 53%] PASSED tests/greenthread_test.py::Spawn::test_n 173s tests/greenthread_test.py::Spawn::test_simple 173s [gw0] [ 53%] PASSED tests/greenthread_test.py::Spawn::test_simple 173s tests/greenthread_test.py::SpawnAfter::test_basic 173s [gw0] [ 53%] PASSED tests/greenthread_test.py::SpawnAfter::test_basic 173s tests/greenthread_test.py::SpawnAfter::test_cancel 173s [gw0] [ 54%] PASSED tests/greenthread_test.py::SpawnAfter::test_cancel 174s tests/greenthread_test.py::SpawnAfter::test_cancel_already_started 174s [gw1] [ 54%] PASSED tests/patcher_test.py::test_patcher_existing_locks_exception 174s tests/patcher_test.py::test_patcher_threading_subclass_done 174s [gw0] [ 54%] PASSED tests/greenthread_test.py::SpawnAfter::test_cancel_already_started 174s tests/greenthread_test.py::SpawnAfter::test_kill 174s [gw0] [ 54%] PASSED tests/greenthread_test.py::SpawnAfter::test_kill 174s tests/greenthread_test.py::SpawnAfter::test_kill_already_started 174s [gw0] [ 54%] PASSED tests/greenthread_test.py::SpawnAfter::test_kill_already_started 174s tests/greenthread_test.py::SpawnAfter::test_kill_meth 174s [gw0] [ 54%] PASSED tests/greenthread_test.py::SpawnAfter::test_kill_meth 174s tests/greenthread_test.py::SpawnAfter::test_kill_n 174s [gw0] [ 54%] PASSED tests/greenthread_test.py::SpawnAfter::test_kill_n 174s tests/greenthread_test.py::SpawnAfter::test_link 174s [gw1] [ 55%] PASSED tests/patcher_test.py::test_patcher_threading_subclass_done 174s tests/pools_test.py::TestIntPool::test_blocks_on_pool 174s [gw1] [ 55%] PASSED tests/pools_test.py::TestIntPool::test_blocks_on_pool 174s tests/pools_test.py::TestIntPool::test_create_contention 174s [gw1] [ 55%] PASSED tests/pools_test.py::TestIntPool::test_create_contention 174s tests/pools_test.py::TestIntPool::test_exhaustion 174s [gw1] [ 55%] PASSED tests/pools_test.py::TestIntPool::test_exhaustion 174s tests/pools_test.py::TestIntPool::test_free 174s [gw1] [ 55%] PASSED tests/pools_test.py::TestIntPool::test_free 174s tests/pools_test.py::TestIntPool::test_integers 174s [gw1] [ 55%] PASSED tests/pools_test.py::TestIntPool::test_integers 174s tests/pools_test.py::TestIntPool::test_ordering 174s [gw1] [ 55%] PASSED tests/pools_test.py::TestIntPool::test_ordering 174s tests/pools_test.py::TestIntPool::test_put_with_timed_out_getters 174s [gw1] [ 56%] PASSED tests/pools_test.py::TestIntPool::test_put_with_timed_out_getters 174s tests/pools_test.py::TestIntPool::test_putting_to_queue 174s [gw1] [ 56%] PASSED tests/pools_test.py::TestIntPool::test_putting_to_queue 174s tests/pools_test.py::TestIntPool::test_resize 174s [gw1] [ 56%] PASSED tests/pools_test.py::TestIntPool::test_resize 174s tests/pools_test.py::TestAbstract::test_abstract 174s [gw1] [ 56%] PASSED tests/pools_test.py::TestAbstract::test_abstract 174s tests/pools_test.py::TestIntPool2::test_something 174s [gw1] [ 56%] PASSED tests/pools_test.py::TestIntPool2::test_something 174s tests/pools_test.py::TestOrderAsStack::test_ordering 174s [gw1] [ 56%] PASSED tests/pools_test.py::TestOrderAsStack::test_ordering 174s tests/pools_test.py::TestCreateRaises::test_it 174s [gw1] [ 56%] PASSED tests/pools_test.py::TestCreateRaises::test_it 174s tests/queue_test.py::TestQueue::test_channel_send 174s [gw0] [ 57%] PASSED tests/greenthread_test.py::SpawnAfter::test_link 174s tests/greenthread_test.py::SpawnAfter::test_link_after_exited 174s [gw1] [ 57%] PASSED tests/queue_test.py::TestQueue::test_channel_send 174s tests/queue_test.py::TestQueue::test_channel_sender_timing_out 174s [gw0] [ 57%] PASSED tests/greenthread_test.py::SpawnAfter::test_link_after_exited 174s tests/greenthread_test.py::SpawnAfter::test_link_relinks 174s [gw1] [ 57%] PASSED tests/queue_test.py::TestQueue::test_channel_sender_timing_out 174s tests/queue_test.py::TestQueue::test_channel_wait 174s [gw0] [ 57%] PASSED tests/greenthread_test.py::SpawnAfter::test_link_relinks 174s tests/greenthread_test.py::SpawnAfter::test_n 174s [gw1] [ 57%] PASSED tests/queue_test.py::TestQueue::test_channel_wait 174s tests/queue_test.py::TestQueue::test_channel_waiters 174s [gw0] [ 57%] PASSED tests/greenthread_test.py::SpawnAfter::test_n 174s tests/greenthread_test.py::SpawnAfter::test_simple 174s [gw1] [ 58%] PASSED tests/queue_test.py::TestQueue::test_channel_waiters 174s tests/queue_test.py::TestQueue::test_getting_before_sending 174s [gw0] [ 58%] PASSED tests/greenthread_test.py::SpawnAfter::test_simple 174s tests/greenthread_test.py::SpawnAfterLocal::test_spawn_is_not_cancelled 174s [gw1] [ 58%] PASSED tests/queue_test.py::TestQueue::test_getting_before_sending 174s tests/queue_test.py::TestQueue::test_join_doesnt_block_when_queue_is_already_empty 174s [gw1] [ 58%] PASSED tests/queue_test.py::TestQueue::test_join_doesnt_block_when_queue_is_already_empty 174s tests/queue_test.py::TestQueue::test_max_size 174s [gw1] [ 58%] PASSED tests/queue_test.py::TestQueue::test_max_size 174s tests/queue_test.py::TestQueue::test_multiple_waiters 174s [gw0] [ 58%] PASSED tests/greenthread_test.py::SpawnAfterLocal::test_spawn_is_not_cancelled 174s tests/greenthread_test.py::SpawnAfterLocal::test_timer_cancelled_upon_greenlet_exit 174s [gw1] [ 58%] PASSED tests/queue_test.py::TestQueue::test_multiple_waiters 174s tests/queue_test.py::TestQueue::test_resize_down 174s [gw1] [ 58%] PASSED tests/queue_test.py::TestQueue::test_resize_down 175s tests/queue_test.py::TestQueue::test_resize_to_Unlimited 175s [gw1] [ 59%] PASSED tests/queue_test.py::TestQueue::test_resize_to_Unlimited 175s tests/ssl_test.py::SSLTest::test_recv_after_ssl_connect 175s [gw1] [ 59%] PASSED tests/ssl_test.py::SSLTest::test_recv_after_ssl_connect 175s tests/ssl_test.py::SSLTest::test_regression_gh_17 175s [gw0] [ 59%] PASSED tests/greenthread_test.py::SpawnAfterLocal::test_timer_cancelled_upon_greenlet_exit 175s tests/greenthread_test.py::SpawnAfterLocal::test_timer_fired 175s [gw1] [ 59%] PASSED tests/ssl_test.py::SSLTest::test_regression_gh_17 175s tests/ssl_test.py::SSLTest::test_sendall_cpu_usage 175s [gw1] [ 59%] PASSED tests/ssl_test.py::SSLTest::test_sendall_cpu_usage 175s tests/ssl_test.py::SSLTest::test_ssl_close 175s [gw0] [ 59%] PASSED tests/greenthread_test.py::SpawnAfterLocal::test_timer_fired 175s tests/hub_test.py::TestTimerCleanup::test_cancel_accumulated 175s [gw1] [ 59%] PASSED tests/ssl_test.py::SSLTest::test_ssl_close 175s tests/ssl_test.py::SSLTest::test_ssl_connect 176s [gw1] [ 60%] PASSED tests/ssl_test.py::SSLTest::test_ssl_connect 176s tests/ssl_test.py::SSLTest::test_ssl_context 176s [gw0] [ 60%] PASSED tests/hub_test.py::TestTimerCleanup::test_cancel_accumulated 176s tests/hub_test.py::TestTimerCleanup::test_cancel_immediate 176s [gw1] [ 60%] PASSED tests/ssl_test.py::SSLTest::test_ssl_context 176s tests/ssl_test.py::SSLTest::test_ssl_unwrap 176s [gw0] [ 60%] PASSED tests/hub_test.py::TestTimerCleanup::test_cancel_immediate 176s tests/hub_test.py::TestMultipleListenersCleanup::test_cleanup 176s [gw0] [ 60%] PASSED tests/hub_test.py::TestMultipleListenersCleanup::test_cleanup 176s tests/hub_test.py::TestScheduleCall::test_global 176s [gw1] [ 60%] PASSED tests/ssl_test.py::SSLTest::test_ssl_unwrap 176s tests/subprocess_test.py::test_subprocess_wait 176s [gw0] [ 60%] PASSED tests/hub_test.py::TestScheduleCall::test_global 176s tests/hub_test.py::TestScheduleCall::test_local 176s [gw0] [ 61%] PASSED tests/hub_test.py::TestScheduleCall::test_local 176s tests/hub_test.py::TestScheduleCall::test_ordering 176s [gw1] [ 61%] PASSED tests/subprocess_test.py::test_subprocess_wait 176s tests/subprocess_test.py::test_close_popen_stdin_with_close_fds 176s [gw1] [ 61%] PASSED tests/subprocess_test.py::test_close_popen_stdin_with_close_fds 176s tests/subprocess_test.py::test_universal_lines 176s [gw0] [ 61%] PASSED tests/hub_test.py::TestScheduleCall::test_ordering 176s tests/hub_test.py::TestDebug::test_debug_listeners 176s [gw1] [ 61%] FAILED tests/subprocess_test.py::test_universal_lines 176s tests/subprocess_test.py::test_patched_communicate_290 176s [gw0] [ 61%] PASSED tests/hub_test.py::TestDebug::test_debug_listeners 176s tests/hub_test.py::TestDebug::test_timer_exceptions 176s [gw0] [ 61%] PASSED tests/hub_test.py::TestDebug::test_timer_exceptions 176s tests/hub_test.py::TestExceptionInMainloop::test_sleep 176s [gw0] [ 62%] PASSED tests/hub_test.py::TestExceptionInMainloop::test_sleep 176s tests/hub_test.py::TestExceptionInGreenthread::test_exceptionleaks 176s [gw0] [ 62%] PASSED tests/hub_test.py::TestExceptionInGreenthread::test_exceptionleaks 176s tests/hub_test.py::TestExceptionInGreenthread::test_exceptionpreservation 176s [gw0] [ 62%] PASSED tests/hub_test.py::TestExceptionInGreenthread::test_exceptionpreservation 176s tests/hub_test.py::TestHubBlockingDetector::test_block_detect 176s [gw1] [ 62%] PASSED tests/subprocess_test.py::test_patched_communicate_290 176s tests/subprocess_test.py::test_check_call_without_timeout_works 176s [gw1] [ 62%] PASSED tests/subprocess_test.py::test_check_call_without_timeout_works 176s tests/subprocess_test.py::test_exception_identity 176s [gw1] [ 62%] PASSED tests/subprocess_test.py::test_exception_identity 176s tests/test__event.py::TestEvent::test_send 176s [gw1] [ 62%] PASSED tests/test__event.py::TestEvent::test_send 176s tests/test__event.py::TestEvent::test_send_exc 176s [gw1] [ 63%] PASSED tests/test__event.py::TestEvent::test_send_exc 177s tests/test__refcount.py::test_clean_exit 177s [gw0] [ 63%] PASSED tests/hub_test.py::TestHubBlockingDetector::test_block_detect 177s tests/hub_test.py::TestHubBlockingDetector::test_block_detect_with_itimer 177s [gw1] [ 63%] PASSED tests/test__refcount.py::test_clean_exit 177s tests/test__refcount.py::test_timeout_exit 177s [gw0] [ 63%] SKIPPED tests/hub_test.py::TestHubBlockingDetector::test_block_detect_with_itimer 177s tests/hub_test.py::TestSuspend::test_suspend_doesnt_crash 177s [gw1] [ 63%] PASSED tests/test__refcount.py::test_timeout_exit 177s tests/test__socket_errors.py::TestSocketErrors::test_connection_refused 177s [gw1] [ 63%] PASSED tests/test__socket_errors.py::TestSocketErrors::test_connection_refused 178s tests/test__socket_errors.py::TestSocketErrors::test_timeout 178s [gw0] [ 63%] PASSED tests/hub_test.py::TestSuspend::test_suspend_doesnt_crash 178s tests/hub_test.py::test_repeated_select_bad_fd 178s [gw0] [ 64%] PASSED tests/hub_test.py::test_repeated_select_bad_fd 178s tests/hub_test.py::test_fork 178s [gw0] [ 64%] PASSED tests/hub_test.py::test_fork 178s tests/hub_test.py::test_fork_simple 178s [gw1] [ 64%] PASSED tests/test__socket_errors.py::TestSocketErrors::test_timeout 179s tests/test__socket_errors.py::TestSocketErrors::test_timeout_real_socket 179s [gw0] [ 64%] PASSED tests/hub_test.py::test_fork_simple 179s tests/hub_test.py::TestDeadRunLoop::test_kill 179s [gw0] [ 64%] PASSED tests/hub_test.py::TestDeadRunLoop::test_kill 179s tests/hub_test.py::TestDeadRunLoop::test_parent 179s [gw1] [ 64%] PASSED tests/test__socket_errors.py::TestSocketErrors::test_timeout_real_socket 179s tests/test__socket_errors.py::test_create_connection_refused 179s [gw1] [ 64%] PASSED tests/test__socket_errors.py::test_create_connection_refused 180s tests/test_infrastructure_tests.py::test_run_python_timeout 180s [gw1] [ 64%] PASSED tests/test_infrastructure_tests.py::test_run_python_timeout 180s tests/test_infrastructure_tests.py::test_run_python_pythonpath_extend 180s [gw1] [ 65%] PASSED tests/test_infrastructure_tests.py::test_run_python_pythonpath_extend 180s tests/thread_test.py::Locals::test_assignment 180s [gw1] [ 65%] PASSED tests/thread_test.py::Locals::test_assignment 180s tests/thread_test.py::Locals::test_calling_methods 180s [gw1] [ 65%] PASSED tests/thread_test.py::Locals::test_calling_methods 180s tests/thread_test.py::Locals::test_calls_init 180s [gw1] [ 65%] PASSED tests/thread_test.py::Locals::test_calls_init 180s tests/thread_test.py::Locals::test_no_leaking 180s [gw0] [ 65%] PASSED tests/hub_test.py::TestDeadRunLoop::test_parent 180s tests/queue_test.py::TestQueue::test_resize_up 180s [gw1] [ 65%] PASSED tests/thread_test.py::Locals::test_no_leaking 180s [gw0] [ 65%] PASSED tests/queue_test.py::TestQueue::test_resize_up 180s tests/thread_test.py::test_compat_lock_release 180s [gw1] [ 66%] PASSED tests/thread_test.py::test_compat_lock_release 180s tests/thread_test.py::test_reinit 180s [gw1] [ 66%] PASSED tests/thread_test.py::test_reinit 180s tests/queue_test.py::TestQueue::test_send_first 180s tests/thread_test.py::test_can_use_eventlet_in_os_threads 180s [gw0] [ 66%] PASSED tests/queue_test.py::TestQueue::test_send_first 180s tests/queue_test.py::TestQueue::test_send_last 180s [gw0] [ 66%] PASSED tests/queue_test.py::TestQueue::test_send_last 180s tests/queue_test.py::TestQueue::test_task_done 180s [gw0] [ 66%] PASSED tests/queue_test.py::TestQueue::test_task_done 180s tests/queue_test.py::TestQueue::test_two_bogus_waiters 180s [gw0] [ 66%] PASSED tests/queue_test.py::TestQueue::test_two_bogus_waiters 180s tests/queue_test.py::TestQueue::test_two_waiters_one_dies 180s [gw0] [ 66%] PASSED tests/queue_test.py::TestQueue::test_two_waiters_one_dies 180s tests/queue_test.py::TestQueue::test_waiters_that_cancel 180s [gw0] [ 67%] PASSED tests/queue_test.py::TestQueue::test_waiters_that_cancel 180s tests/queue_test.py::TestQueue::test_waiting 180s [gw0] [ 67%] PASSED tests/queue_test.py::TestQueue::test_waiting 180s tests/queue_test.py::TestQueue::test_zero_length_queue_nonblocking_put 180s [gw0] [ 67%] PASSED tests/queue_test.py::TestQueue::test_zero_length_queue_nonblocking_put 180s tests/queue_test.py::TestQueue::test_zero_max_size 180s [gw0] [ 67%] PASSED tests/queue_test.py::TestQueue::test_zero_max_size 181s tests/queue_test.py::TestNoWait::test_get_nowait_simple 181s [gw0] [ 67%] PASSED tests/queue_test.py::TestNoWait::test_get_nowait_simple 181s tests/queue_test.py::TestNoWait::test_get_nowait_unlock 181s [gw0] [ 67%] PASSED tests/queue_test.py::TestNoWait::test_get_nowait_unlock 181s tests/queue_test.py::TestNoWait::test_put_nowait_simple 181s [gw0] [ 67%] PASSED tests/queue_test.py::TestNoWait::test_put_nowait_simple 181s tests/queue_test.py::TestNoWait::test_put_nowait_unlock 181s [gw0] [ 68%] PASSED tests/queue_test.py::TestNoWait::test_put_nowait_unlock 181s tests/queue_test.py::TestNoWait::test_wait_except 181s [gw0] [ 68%] PASSED tests/queue_test.py::TestNoWait::test_wait_except 181s tests/semaphore_test.py::TestSemaphore::test_bounded 181s [gw1] [ 68%] PASSED tests/thread_test.py::test_can_use_eventlet_in_os_threads 181s tests/timeout_test.py::TestDirectRaise::test_direct_raise_class 181s [gw0] [ 68%] PASSED tests/semaphore_test.py::TestSemaphore::test_bounded 181s tests/semaphore_test.py::TestSemaphore::test_bounded_with_zero_limit 181s [gw1] [ 68%] PASSED tests/timeout_test.py::TestDirectRaise::test_direct_raise_class 181s tests/timeout_test.py::TestDirectRaise::test_direct_raise_instance 181s [gw0] [ 68%] PASSED tests/semaphore_test.py::TestSemaphore::test_bounded_with_zero_limit 181s tests/semaphore_test.py::TestSemaphore::test_non_blocking 181s [gw1] [ 68%] PASSED tests/timeout_test.py::TestDirectRaise::test_direct_raise_instance 181s tests/timeout_test.py::TestDirectRaise::test_repr 181s [gw0] [ 69%] PASSED tests/semaphore_test.py::TestSemaphore::test_non_blocking 181s tests/semaphore_test.py::TestSemaphore::test_timeout 181s [gw1] [ 69%] PASSED tests/timeout_test.py::TestDirectRaise::test_repr 181s tests/timeout_test.py::TestWithTimeout::test_with_outer_timer 181s [gw1] [ 69%] PASSED tests/timeout_test.py::TestWithTimeout::test_with_outer_timer 181s tests/timeout_test.py::TestWithTimeout::test_with_timeout 181s [gw0] [ 69%] PASSED tests/semaphore_test.py::TestSemaphore::test_timeout 181s tests/semaphore_test.py::TestSemaphore::test_timeout_non_blocking 181s [gw0] [ 69%] PASSED tests/semaphore_test.py::TestSemaphore::test_timeout_non_blocking 181s tests/semaphore_test.py::test_semaphore_contention 181s [gw1] [ 69%] PASSED tests/timeout_test.py::TestWithTimeout::test_with_timeout 181s tests/timeout_test.py::test_is_timeout_attribute 181s [gw1] [ 69%] PASSED tests/timeout_test.py::test_is_timeout_attribute 181s tests/timeout_with_statement_test.py::Test::test_cancel_timer_inside_block 181s [gw1] [ 70%] PASSED tests/timeout_with_statement_test.py::Test::test_cancel_timer_inside_block 181s tests/timeout_with_statement_test.py::Test::test_cancellation 181s [gw1] [ 70%] PASSED tests/timeout_with_statement_test.py::Test::test_cancellation 181s tests/timeout_with_statement_test.py::Test::test_dummy_timer 181s [gw1] [ 70%] PASSED tests/timeout_with_statement_test.py::Test::test_dummy_timer 182s tests/timeout_with_statement_test.py::Test::test_nested_timeout 182s [gw1] [ 70%] PASSED tests/timeout_with_statement_test.py::Test::test_nested_timeout 182s tests/timeout_with_statement_test.py::Test::test_raising_custom_exception 182s [gw1] [ 70%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_custom_exception 182s tests/timeout_with_statement_test.py::Test::test_raising_exc_tuple 182s [gw0] [ 70%] PASSED tests/semaphore_test.py::test_semaphore_contention 182s [gw1] [ 70%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_exc_tuple 182s tests/timeout_with_statement_test.py::Test::test_raising_exception_class 182s tests/semaphore_test.py::test_semaphore_type_check 182s [gw0] [ 70%] PASSED tests/semaphore_test.py::test_semaphore_type_check 182s tests/socket_test.py::test_recv_type 182s [gw1] [ 71%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_exception_class 182s tests/timeout_with_statement_test.py::Test::test_raising_self 182s [gw1] [ 71%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_self 182s tests/timeout_with_statement_test.py::Test::test_raising_self_true 182s [gw0] [ 71%] PASSED tests/socket_test.py::test_recv_type 182s tests/socket_test.py::test_recv_into_type 182s [gw1] [ 71%] PASSED tests/timeout_with_statement_test.py::Test::test_raising_self_true 182s tests/timeout_with_statement_test.py::Test::test_ref 182s [gw1] [ 71%] PASSED tests/timeout_with_statement_test.py::Test::test_ref 182s tests/timeout_with_statement_test.py::Test::test_silent_block 182s [gw0] [ 71%] PASSED tests/socket_test.py::test_recv_into_type 182s tests/socket_test.py::test_socket_api_family 182s [gw0] [ 71%] PASSED tests/socket_test.py::test_socket_api_family 182s tests/socket_test.py::test_getaddrinfo_ipv6_scope 182s [gw0] [ 72%] PASSED tests/socket_test.py::test_getaddrinfo_ipv6_scope 182s tests/socket_test.py::test_error_is_timeout 182s [gw0] [ 72%] PASSED tests/socket_test.py::test_error_is_timeout 182s tests/socket_test.py::test_connect_ex_success 182s [gw0] [ 72%] PASSED tests/socket_test.py::test_connect_ex_success 182s tests/ssl_test.py::SSLTest::test_client_check_hostname 182s [gw0] [ 72%] PASSED tests/ssl_test.py::SSLTest::test_client_check_hostname 182s tests/ssl_test.py::SSLTest::test_context_version_setters 182s [gw1] [ 72%] PASSED tests/timeout_with_statement_test.py::Test::test_silent_block 182s tests/timer_test.py::TestTimer::test_copy 182s [gw1] [ 72%] PASSED tests/timer_test.py::TestTimer::test_copy 182s tests/timer_test.py::TestTimer::test_schedule 182s [gw1] [ 72%] PASSED tests/timer_test.py::TestTimer::test_schedule 182s tests/tpool_test.py::TestTpool::test_autowrap 182s [gw1] [ 73%] PASSED tests/tpool_test.py::TestTpool::test_autowrap 182s tests/tpool_test.py::TestTpool::test_autowrap_both 182s [gw1] [ 73%] PASSED tests/tpool_test.py::TestTpool::test_autowrap_both 182s tests/tpool_test.py::TestTpool::test_autowrap_names 182s [gw1] [ 73%] PASSED tests/tpool_test.py::TestTpool::test_autowrap_names 182s tests/tpool_test.py::TestTpool::test_callable 182s [gw1] [ 73%] PASSED tests/tpool_test.py::TestTpool::test_callable 183s tests/tpool_test.py::TestTpool::test_callable_iterator 183s [gw1] [ 73%] PASSED tests/tpool_test.py::TestTpool::test_callable_iterator 183s tests/tpool_test.py::TestTpool::test_contention 183s [gw1] [ 73%] PASSED tests/tpool_test.py::TestTpool::test_contention 183s tests/tpool_test.py::TestTpool::test_eventlet_timeout 183s [gw0] [ 73%] PASSED tests/ssl_test.py::SSLTest::test_context_version_setters 183s tests/ssl_test.py::SSLTest::test_context_wrapped_accept 183s [gw1] [ 74%] PASSED tests/tpool_test.py::TestTpool::test_eventlet_timeout 183s tests/tpool_test.py::TestTpool::test_killall 183s [gw0] [ 74%] PASSED tests/ssl_test.py::SSLTest::test_context_wrapped_accept 183s tests/ssl_test.py::SSLTest::test_duplex_response 183s [gw1] [ 74%] PASSED tests/tpool_test.py::TestTpool::test_killall 183s tests/tpool_test.py::TestTpool::test_killall_remaining_results 183s [gw0] [ 74%] PASSED tests/ssl_test.py::SSLTest::test_duplex_response 183s tests/ssl_test.py::SSLTest::test_explicit_keys_accept 183s [gw0] [ 74%] PASSED tests/ssl_test.py::SSLTest::test_explicit_keys_accept 183s tests/ssl_test.py::SSLTest::test_greensslobject 183s [gw0] [ 74%] PASSED tests/ssl_test.py::SSLTest::test_greensslobject 183s tests/ssl_test.py::SSLTest::test_no_handshake_block_accept_loop 183s [gw0] [ 74%] PASSED tests/ssl_test.py::SSLTest::test_no_handshake_block_accept_loop 183s tests/ssl_test.py::SSLTest::test_receiving_doesnt_block_if_there_is_already_decrypted_buffered_data 183s [gw1] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_killall_remaining_results 183s tests/tpool_test.py::TestTpool::test_multiple_wraps 183s [gw1] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_multiple_wraps 183s tests/tpool_test.py::TestTpool::test_raising_exceptions 183s [gw0] [ 75%] PASSED tests/ssl_test.py::SSLTest::test_receiving_doesnt_block_if_there_is_already_decrypted_buffered_data 184s tests/tpool_test.py::TestTpool::test_wrap_dict 184s [gw1] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_raising_exceptions 184s tests/tpool_test.py::TestTpool::test_timeout 184s [gw0] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_wrap_dict 184s tests/tpool_test.py::TestTpool::test_wrap_eq 184s [gw0] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_wrap_eq 184s tests/tpool_test.py::TestTpool::test_wrap_getitem 184s [gw0] [ 75%] PASSED tests/tpool_test.py::TestTpool::test_wrap_getitem 184s tests/tpool_test.py::TestTpool::test_wrap_hash 184s [gw0] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_hash 184s tests/tpool_test.py::TestTpool::test_wrap_ints 184s [gw0] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_ints 184s tests/tpool_test.py::TestTpool::test_wrap_iterator 184s [gw0] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_iterator 184s tests/tpool_test.py::TestTpool::test_wrap_iterator2 184s [gw1] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_timeout 184s tests/tpool_test.py::TestTpool::test_tpool_set_num_threads 184s [gw0] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_iterator2 184s tests/tpool_test.py::TestTpool::test_wrap_module_class 184s [gw1] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_tpool_set_num_threads 184s tests/tpool_test.py::TestTpool::test_variable_and_keyword_arguments_with_function_calls 184s [gw0] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_wrap_module_class 184s tests/tpool_test.py::TestTpool::test_wrap_nonzero 184s [gw1] [ 76%] PASSED tests/tpool_test.py::TestTpool::test_variable_and_keyword_arguments_with_function_calls 184s tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_basic_deflate_ext_13 184s [gw0] [ 77%] PASSED tests/tpool_test.py::TestTpool::test_wrap_nonzero 184s tests/tpool_test.py::TestTpool::test_wrap_setitem 184s [gw1] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_basic_deflate_ext_13 184s tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_deflate_ext_context_takeover_13 184s [gw0] [ 77%] PASSED tests/tpool_test.py::TestTpool::test_wrap_setitem 184s tests/tpool_test.py::TestTpool::test_wrap_string 184s [gw1] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_deflate_ext_context_takeover_13 184s tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_deflate_ext_window_max_bits_13 184s [gw0] [ 77%] PASSED tests/tpool_test.py::TestTpool::test_wrap_string 184s tests/tpool_test.py::TestTpool::test_wrap_tuple 184s [gw1] [ 77%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_accept_deflate_ext_window_max_bits_13 184s tests/websocket_new_test.py::TestWebSocketWithCompression::test_client_compress_no_context_takeover_13 184s [gw0] [ 77%] PASSED tests/tpool_test.py::TestTpool::test_wrap_tuple 184s tests/tpool_test.py::TestTpool::test_wrap_uniterable 184s [gw1] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_client_compress_no_context_takeover_13 184s tests/websocket_new_test.py::TestWebSocketWithCompression::test_client_compress_with_context_takeover_13 184s [gw0] [ 78%] PASSED tests/tpool_test.py::TestTpool::test_wrap_uniterable 184s tests/tpool_test.py::TpoolLongTests::test_a_buncha_stuff 184s [gw1] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_client_compress_with_context_takeover_13 184s tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_13 184s [gw1] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_both_no_context_13 185s [gw1] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_both_no_context_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_client_no_context_13 185s [gw1] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_client_no_context_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_server_no_context_13 185s [gw1] [ 78%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_compressed_send_recv_server_no_context_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_large_frame_size_compressed_13 185s [gw1] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_large_frame_size_compressed_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_large_frame_size_uncompressed_13 185s [gw1] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_large_frame_size_uncompressed_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_reject_max_window_bits_out_of_range_13 185s [gw1] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_reject_max_window_bits_out_of_range_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_send_uncompressed_msg_13 185s [gw1] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_send_uncompressed_msg_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_server_compress_no_context_takeover_13 185s [gw1] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_server_compress_no_context_takeover_13 185s tests/websocket_new_test.py::TestWebSocketWithCompression::test_server_compress_with_context_takeover_13 185s [gw1] [ 79%] PASSED tests/websocket_new_test.py::TestWebSocketWithCompression::test_server_compress_with_context_takeover_13 185s tests/websocket_test.py::TestWebSocket::test_app_socket_errors_75 185s [gw1] [ 79%] PASSED tests/websocket_test.py::TestWebSocket::test_app_socket_errors_75 185s tests/websocket_test.py::TestWebSocket::test_app_socket_errors_76 185s [gw1] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_app_socket_errors_76 185s tests/websocket_test.py::TestWebSocket::test_breaking_the_connection_75 185s [gw0] [ 80%] PASSED tests/tpool_test.py::TpoolLongTests::test_a_buncha_stuff 185s tests/tpool_test.py::TpoolLongTests::test_leakage_from_tracebacks 185s [gw1] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_breaking_the_connection_75 185s tests/websocket_test.py::TestWebSocket::test_breaking_the_connection_76 185s [gw1] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_breaking_the_connection_76 185s tests/websocket_test.py::TestWebSocket::test_client_closing_connection_76 185s [gw1] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_client_closing_connection_76 186s tests/websocket_test.py::TestWebSocket::test_client_invalid_packet_76 186s [gw1] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_client_invalid_packet_76 186s tests/websocket_test.py::TestWebSocket::test_close_idle 186s [gw1] [ 80%] PASSED tests/websocket_test.py::TestWebSocket::test_close_idle 186s tests/wsgi_test.py::TestHttpd::test_001_server 186s [gw0] [ 81%] PASSED tests/tpool_test.py::TpoolLongTests::test_leakage_from_tracebacks 186s tests/tpool_test.py::test_isolate_from_socket_default_timeout 186s [gw1] [ 81%] PASSED tests/wsgi_test.py::TestHttpd::test_001_server 186s tests/wsgi_test.py::TestHttpd::test_002_keepalive 186s [gw1] [ 81%] PASSED tests/wsgi_test.py::TestHttpd::test_002_keepalive 186s tests/wsgi_test.py::TestHttpd::test_004_close_keepalive 186s [gw1] [ 81%] PASSED tests/wsgi_test.py::TestHttpd::test_004_close_keepalive 186s tests/wsgi_test.py::TestHttpd::test_006_reject_long_urls 186s [gw1] [ 81%] PASSED tests/wsgi_test.py::TestHttpd::test_006_reject_long_urls 186s tests/wsgi_test.py::TestHttpd::test_007_get_arg 186s [gw1] [ 81%] PASSED tests/wsgi_test.py::TestHttpd::test_007_get_arg 186s tests/wsgi_test.py::TestHttpd::test_008_correctresponse 186s [gw1] [ 81%] PASSED tests/wsgi_test.py::TestHttpd::test_008_correctresponse 186s tests/wsgi_test.py::TestHttpd::test_009_chunked_response 186s [gw1] [ 82%] PASSED tests/wsgi_test.py::TestHttpd::test_009_chunked_response 186s tests/wsgi_test.py::TestHttpd::test_010_no_chunked_http_1_0 186s [gw1] [ 82%] PASSED tests/wsgi_test.py::TestHttpd::test_010_no_chunked_http_1_0 186s tests/wsgi_test.py::TestHttpd::test_011_multiple_chunks 186s [gw1] [ 82%] PASSED tests/wsgi_test.py::TestHttpd::test_011_multiple_chunks 186s tests/wsgi_test.py::TestHttpd::test_012_ssl_server 186s [gw0] [ 82%] PASSED tests/tpool_test.py::test_isolate_from_socket_default_timeout 186s tests/tpool_test.py::test_exception_leak 186s [gw1] [ 82%] PASSED tests/wsgi_test.py::TestHttpd::test_012_ssl_server 186s tests/wsgi_test.py::TestHttpd::test_013_empty_return 186s [gw1] [ 82%] PASSED tests/wsgi_test.py::TestHttpd::test_013_empty_return 186s tests/wsgi_test.py::TestHttpd::test_014_chunked_post 186s [gw1] [ 82%] PASSED tests/wsgi_test.py::TestHttpd::test_014_chunked_post 186s tests/wsgi_test.py::TestHttpd::test_015_write 186s [gw1] [ 82%] PASSED tests/wsgi_test.py::TestHttpd::test_015_write 186s tests/wsgi_test.py::TestHttpd::test_016_repeated_content_length 186s [gw1] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_016_repeated_content_length 186s tests/wsgi_test.py::TestHttpd::test_017_ssl_zeroreturnerror 186s [gw1] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_017_ssl_zeroreturnerror 187s tests/wsgi_test.py::TestHttpd::test_018_http_10_keepalive 187s [gw1] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_018_http_10_keepalive 187s tests/wsgi_test.py::TestHttpd::test_018b_http_10_keepalive_framing 187s [gw1] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_018b_http_10_keepalive_framing 187s tests/wsgi_test.py::TestHttpd::test_019_fieldstorage_compat 187s [gw1] [ 83%] SKIPPED tests/wsgi_test.py::TestHttpd::test_019_fieldstorage_compat 187s tests/wsgi_test.py::TestHttpd::test_020_x_forwarded_for 187s [gw1] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_020_x_forwarded_for 187s tests/wsgi_test.py::TestHttpd::test_021_environ_clobbering 187s [gw1] [ 83%] PASSED tests/wsgi_test.py::TestHttpd::test_021_environ_clobbering 187s tests/wsgi_test.py::TestHttpd::test_022_custom_pool 187s [gw0] [ 84%] PASSED tests/tpool_test.py::test_exception_leak 187s tests/websocket_new_test.py::TestWebSocket::test_breaking_the_connection_13 187s [gw1] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_022_custom_pool 187s tests/wsgi_test.py::TestHttpd::test_023_bad_content_length 187s [gw0] [ 84%] PASSED tests/websocket_new_test.py::TestWebSocket::test_breaking_the_connection_13 187s tests/websocket_new_test.py::TestWebSocket::test_client_closing_connection_13 187s [gw1] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_023_bad_content_length 187s tests/wsgi_test.py::TestHttpd::test_024_expect_100_continue 187s [gw0] [ 84%] PASSED tests/websocket_new_test.py::TestWebSocket::test_client_closing_connection_13 187s tests/websocket_new_test.py::TestWebSocket::test_client_invalid_packet_13 187s [gw0] [ 84%] PASSED tests/websocket_new_test.py::TestWebSocket::test_client_invalid_packet_13 187s tests/websocket_new_test.py::TestWebSocket::test_correct_upgrade_request_13 187s [gw1] [ 84%] PASSED tests/wsgi_test.py::TestHttpd::test_024_expect_100_continue 187s tests/wsgi_test.py::TestHttpd::test_024a_expect_100_continue_with_headers 187s [gw0] [ 85%] PASSED tests/websocket_new_test.py::TestWebSocket::test_correct_upgrade_request_13 187s tests/websocket_new_test.py::TestWebSocket::test_incomplete_headers_13 187s [gw1] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_024a_expect_100_continue_with_headers 187s tests/wsgi_test.py::TestHttpd::test_024b_expect_100_continue_with_headers_multiple_chunked 187s [gw0] [ 85%] PASSED tests/websocket_new_test.py::TestWebSocket::test_incomplete_headers_13 187s tests/websocket_new_test.py::TestWebSocket::test_send_recv_13 187s [gw1] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_024b_expect_100_continue_with_headers_multiple_chunked 187s tests/wsgi_test.py::TestHttpd::test_024c_expect_100_continue_with_headers_multiple_nonchunked 187s [gw0] [ 85%] PASSED tests/websocket_new_test.py::TestWebSocket::test_send_recv_13 187s tests/websocket_test.py::TestWebSocket::test_correct_upgrade_request_75 187s [gw1] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_024c_expect_100_continue_with_headers_multiple_nonchunked 187s tests/wsgi_test.py::TestHttpd::test_024d_expect_100_continue_with_eager_app_chunked 187s [gw1] [ 85%] PASSED tests/wsgi_test.py::TestHttpd::test_024d_expect_100_continue_with_eager_app_chunked 187s tests/wsgi_test.py::TestHttpd::test_025_accept_errors 187s [gw0] [ 86%] PASSED tests/websocket_test.py::TestWebSocket::test_correct_upgrade_request_75 187s tests/websocket_test.py::TestWebSocket::test_correct_upgrade_request_76 187s [gw1] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_025_accept_errors 187s tests/wsgi_test.py::TestHttpd::test_026_http_10_nokeepalive 187s [gw0] [ 86%] PASSED tests/websocket_test.py::TestWebSocket::test_correct_upgrade_request_76 187s tests/websocket_test.py::TestWebSocket::test_empty_query_string 187s [gw1] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_026_http_10_nokeepalive 187s tests/wsgi_test.py::TestHttpd::test_026_log_format 187s [gw0] [ 86%] PASSED tests/websocket_test.py::TestWebSocket::test_empty_query_string 187s tests/websocket_test.py::TestWebSocket::test_getting_messages_from_websocket_75 187s [gw1] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_026_log_format 187s tests/wsgi_test.py::TestHttpd::test_026b_http_10_zero_keepalive 187s [gw1] [ 86%] PASSED tests/wsgi_test.py::TestHttpd::test_026b_http_10_zero_keepalive 187s tests/wsgi_test.py::TestHttpd::test_027_keepalive_chunked 187s [gw1] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_027_keepalive_chunked 187s [gw0] [ 87%] PASSED tests/websocket_test.py::TestWebSocket::test_getting_messages_from_websocket_75 187s tests/wsgi_test.py::TestHttpd::test_028_ssl_handshake_errors 188s tests/websocket_test.py::TestWebSocket::test_getting_messages_from_websocket_76 188s [gw1] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_028_ssl_handshake_errors 188s tests/wsgi_test.py::TestHttpd::test_029_posthooks 188s [gw1] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_029_posthooks 188s tests/wsgi_test.py::TestHttpd::test_030_reject_long_header_lines 188s [gw0] [ 87%] PASSED tests/websocket_test.py::TestWebSocket::test_getting_messages_from_websocket_76 188s tests/websocket_test.py::TestWebSocket::test_incomplete_headers_75 188s [gw1] [ 87%] PASSED tests/wsgi_test.py::TestHttpd::test_030_reject_long_header_lines 188s tests/wsgi_test.py::TestHttpd::test_031_reject_large_headers 188s [gw0] [ 87%] PASSED tests/websocket_test.py::TestWebSocket::test_incomplete_headers_75 188s tests/websocket_test.py::TestWebSocket::test_incomplete_headers_76 188s [gw1] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_031_reject_large_headers 188s tests/wsgi_test.py::TestHttpd::test_032_wsgi_input_as_iterable 188s [gw0] [ 88%] PASSED tests/websocket_test.py::TestWebSocket::test_incomplete_headers_76 188s tests/websocket_test.py::TestWebSocket::test_incorrect_headers 188s [gw1] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_032_wsgi_input_as_iterable 188s tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post 188s [gw0] [ 88%] PASSED tests/websocket_test.py::TestWebSocket::test_incorrect_headers 188s tests/websocket_test.py::TestWebSocket::test_query_string 188s [gw1] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post 188s tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post_bad_chunks 188s [gw0] [ 88%] PASSED tests/websocket_test.py::TestWebSocket::test_query_string 188s tests/websocket_test.py::TestWebSocket::test_sending_messages_to_websocket_75 188s [gw1] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post_bad_chunks 188s tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post_between_chunks 188s [gw1] [ 88%] PASSED tests/wsgi_test.py::TestHttpd::test_aborted_chunked_post_between_chunks 188s tests/wsgi_test.py::TestHttpd::test_aborted_post_io_error 188s [gw0] [ 89%] PASSED tests/websocket_test.py::TestWebSocket::test_sending_messages_to_websocket_75 188s tests/websocket_test.py::TestWebSocket::test_sending_messages_to_websocket_76 188s [gw1] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_aborted_post_io_error 188s tests/wsgi_test.py::TestHttpd::test_chunked_response_when_app_yields_empty_string 188s [gw1] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_chunked_response_when_app_yields_empty_string 188s tests/wsgi_test.py::TestHttpd::test_client_disconnect 188s [gw0] [ 89%] PASSED tests/websocket_test.py::TestWebSocket::test_sending_messages_to_websocket_76 188s tests/websocket_test.py::TestWebSocket::test_server_closing_connect_76 188s [gw1] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_client_disconnect 188s tests/wsgi_test.py::TestHttpd::test_close_chunked_with_1_0_client 188s [gw0] [ 89%] PASSED tests/websocket_test.py::TestWebSocket::test_server_closing_connect_76 188s tests/websocket_test.py::TestWebSocket::test_wrapped_wsgi 188s [gw1] [ 89%] PASSED tests/wsgi_test.py::TestHttpd::test_close_chunked_with_1_0_client 188s tests/wsgi_test.py::TestHttpd::test_close_idle_connections 188s [gw1] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_close_idle_connections 188s tests/wsgi_test.py::TestHttpd::test_close_idle_connections_listen_socket_closed 188s [gw1] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_close_idle_connections_listen_socket_closed 188s tests/wsgi_test.py::TestHttpd::test_configurable_url_length_limit 188s [gw0] [ 90%] PASSED tests/websocket_test.py::TestWebSocket::test_wrapped_wsgi 188s tests/websocket_test.py::TestWebSocketSSL::test_ssl_sending_messages 188s [gw1] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_configurable_url_length_limit 188s tests/wsgi_test.py::TestHttpd::test_content_length_and_transfer_encoding_escape_hatch 188s [gw1] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_content_length_and_transfer_encoding_escape_hatch 188s tests/wsgi_test.py::TestHttpd::test_debug 188s [gw1] [ 90%] PASSED tests/wsgi_test.py::TestHttpd::test_debug 189s tests/wsgi_test.py::TestHttpd::test_disable_header_name_capitalization 189s [gw0] [ 90%] PASSED tests/websocket_test.py::TestWebSocketSSL::test_ssl_sending_messages 189s tests/websocket_test.py::TestWebSocketObject::test_close_ws 189s [gw1] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_disable_header_name_capitalization 189s tests/wsgi_test.py::TestHttpd::test_do_not_close_non_idle_connections 189s [gw0] [ 91%] PASSED tests/websocket_test.py::TestWebSocketObject::test_close_ws 189s tests/websocket_test.py::TestWebSocketObject::test_recieve 189s [gw0] [ 91%] PASSED tests/websocket_test.py::TestWebSocketObject::test_recieve 189s tests/websocket_test.py::TestWebSocketObject::test_send_to_ws 189s [gw0] [ 91%] PASSED tests/websocket_test.py::TestWebSocketObject::test_send_to_ws 189s tests/wsgi_test.py::TestHttpd::test_log_disable 189s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_log_disable 189s tests/wsgi_test.py::TestHttpd::test_log_unix_address 189s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_log_unix_address 189s tests/wsgi_test.py::TestHttpd::test_minimum_chunk_size_parameter_leaves_httpprotocol_class_member_intact 189s [gw0] [ 91%] PASSED tests/wsgi_test.py::TestHttpd::test_minimum_chunk_size_parameter_leaves_httpprotocol_class_member_intact 189s tests/wsgi_test.py::TestHttpd::test_no_content_length_or_transfer_encoding 189s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_no_content_length_or_transfer_encoding 189s tests/wsgi_test.py::TestHttpd::test_no_transfer_encoding_in_empty_response 189s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_no_transfer_encoding_in_empty_response 189s tests/wsgi_test.py::TestHttpd::test_partial_writes_are_handled 189s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_partial_writes_are_handled 189s tests/wsgi_test.py::TestHttpd::test_path_info_decoding 189s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_path_info_decoding 189s tests/wsgi_test.py::TestHttpd::test_path_info_latin1 189s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_path_info_latin1 189s tests/wsgi_test.py::TestHttpd::test_rfc9112_reject_bad_request 189s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_rfc9112_reject_bad_request 189s tests/wsgi_test.py::TestHttpd::test_server_keepalive_as_timeout 189s [gw0] [ 92%] PASSED tests/wsgi_test.py::TestHttpd::test_server_keepalive_as_timeout 189s tests/wsgi_test.py::TestHttpd::test_server_keepalive_sent_in_headers 189s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_server_keepalive_sent_in_headers 190s tests/wsgi_test.py::TestHttpd::test_server_socket_timeout 190s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_server_socket_timeout 190s tests/wsgi_test.py::TestHttpd::test_socket_remains_open 190s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_socket_remains_open 190s tests/wsgi_test.py::TestHttpd::test_timeouts_in_app_call 190s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_timeouts_in_app_call 190s tests/wsgi_test.py::TestHttpd::test_timeouts_in_app_iter 190s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_timeouts_in_app_iter 190s tests/wsgi_test.py::TestHttpd::test_unicode_with_nonascii_characters_raises_error 190s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_unicode_with_nonascii_characters_raises_error 190s tests/wsgi_test.py::TestHttpd::test_unicode_with_only_ascii_characters_works 190s [gw0] [ 93%] PASSED tests/wsgi_test.py::TestHttpd::test_unicode_with_only_ascii_characters_works 190s tests/wsgi_test.py::TestHttpd::test_zero_length_chunked_response 190s [gw0] [ 94%] PASSED tests/wsgi_test.py::TestHttpd::test_zero_length_chunked_response 190s tests/wsgi_test.py::IterableAlreadyHandledTest::test_iterable_app_keeps_socket_open_unless_connection_close_sent 190s [gw0] [ 94%] PASSED tests/wsgi_test.py::IterableAlreadyHandledTest::test_iterable_app_keeps_socket_open_unless_connection_close_sent 190s tests/wsgi_test.py::ProxiedIterableAlreadyHandledTest::test_iterable_app_keeps_socket_open_unless_connection_close_sent 190s [gw0] [ 94%] PASSED tests/wsgi_test.py::ProxiedIterableAlreadyHandledTest::test_iterable_app_keeps_socket_open_unless_connection_close_sent 190s tests/wsgi_test.py::TestChunkedInput::test_chunked_readline 190s [gw0] [ 94%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readline 190s tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_from_input 190s [gw0] [ 94%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_from_input 190s tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_wsgi_not_override_minimum_chunk_size 190s [gw0] [ 94%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_wsgi_not_override_minimum_chunk_size 191s tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_wsgi_override_minimum_chunk_size 191s [gw0] [ 94%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readline_wsgi_override_minimum_chunk_size 191s tests/wsgi_test.py::TestChunkedInput::test_chunked_readlines_from_input 191s [gw1] [ 94%] PASSED tests/wsgi_test.py::TestHttpd::test_do_not_close_non_idle_connections 191s tests/wsgi_test.py::TestHttpd::test_env_header_stripping 191s [gw0] [ 95%] PASSED tests/wsgi_test.py::TestChunkedInput::test_chunked_readlines_from_input 191s tests/wsgi_test.py::TestChunkedInput::test_close_before_finished 191s [gw1] [ 95%] PASSED tests/wsgi_test.py::TestHttpd::test_env_header_stripping 191s tests/wsgi_test.py::TestHttpd::test_env_headers 191s [gw0] [ 95%] PASSED tests/wsgi_test.py::TestChunkedInput::test_close_before_finished 191s tests/wsgi_test.py::TestChunkedInput::test_dirt 191s [gw1] [ 95%] PASSED tests/wsgi_test.py::TestHttpd::test_env_headers 191s tests/wsgi_test.py::TestHttpd::test_error_in_chunked_closes_connection 191s [gw0] [ 95%] PASSED tests/wsgi_test.py::TestChunkedInput::test_dirt 191s tests/wsgi_test.py::TestChunkedInput::test_short_read 191s [gw1] [ 95%] PASSED tests/wsgi_test.py::TestHttpd::test_error_in_chunked_closes_connection 191s tests/wsgi_test.py::TestHttpd::test_exceptions_close_connection 191s [gw0] [ 95%] PASSED tests/wsgi_test.py::TestChunkedInput::test_short_read 191s tests/wsgi_test.py::TestChunkedInput::test_short_read_with_content_length 191s [gw1] [ 96%] PASSED tests/wsgi_test.py::TestHttpd::test_exceptions_close_connection 191s tests/wsgi_test.py::TestHttpd::test_header_name_capitalization 191s [gw0] [ 96%] PASSED tests/wsgi_test.py::TestChunkedInput::test_short_read_with_content_length 191s tests/wsgi_test.py::TestChunkedInput::test_short_read_with_zero_content_length 191s [gw1] [ 96%] PASSED tests/wsgi_test.py::TestHttpd::test_header_name_capitalization 191s tests/wsgi_test.py::TestHttpd::test_headers_raw 191s [gw0] [ 96%] PASSED tests/wsgi_test.py::TestChunkedInput::test_short_read_with_zero_content_length 191s tests/zmq_test.py::TestUpstreamDownStream::test_change_subscription 191s [gw1] [ 96%] PASSED tests/wsgi_test.py::TestHttpd::test_headers_raw 191s tests/wsgi_test.py::TestHttpd::test_ipv6 191s [gw1] [ 96%] SKIPPED tests/wsgi_test.py::TestHttpd::test_ipv6 191s tests/zmq_test.py::TestUpstreamDownStream::test_cpu_usage_after_bind 191s [gw0] [ 96%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_change_subscription 191s tests/zmq_test.py::TestUpstreamDownStream::test_close_during_recv 191s [gw0] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_close_during_recv 191s tests/zmq_test.py::TestUpstreamDownStream::test_close_linger 191s [gw0] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_close_linger 191s tests/zmq_test.py::TestUpstreamDownStream::test_close_socket_raises_enotsup 191s [gw1] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_cpu_usage_after_bind 191s tests/zmq_test.py::TestUpstreamDownStream::test_cpu_usage_after_pub_send_or_dealer_recv 191s [gw0] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_close_socket_raises_enotsup 191s tests/zmq_test.py::TestUpstreamDownStream::test_close_xsocket_raises_enotsup 191s [gw0] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_close_xsocket_raises_enotsup 191s tests/zmq_test.py::TestUpstreamDownStream::test_recv_during_send 191s [gw0] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_recv_during_send 191s tests/zmq_test.py::TestUpstreamDownStream::test_recv_multipart_bug68 191s [gw0] [ 97%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_recv_multipart_bug68 192s tests/zmq_test.py::TestUpstreamDownStream::test_recv_noblock_bug76 192s [gw0] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_recv_noblock_bug76 192s tests/zmq_test.py::TestUpstreamDownStream::test_recv_spawned_before_send_is_non_blocking 192s [gw0] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_recv_spawned_before_send_is_non_blocking 192s tests/zmq_test.py::TestUpstreamDownStream::test_send_1k_push_pull 192s [gw0] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_send_1k_push_pull 192s tests/zmq_test.py::TestUpstreamDownStream::test_send_1k_req_rep 192s [gw1] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_cpu_usage_after_pub_send_or_dealer_recv 192s tests/zmq_test.py::TestUpstreamDownStream::test_getsockopt_events 192s [gw1] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_getsockopt_events 192s tests/zmq_test.py::TestUpstreamDownStream::test_send_during_recv_multipart 192s [gw0] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_send_1k_req_rep 192s tests/zmq_test.py::TestUpstreamDownStream::test_send_during_recv 192s [gw1] [ 98%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_send_during_recv_multipart 192s tests/zmq_test.py::TestQueueLock::test_count 192s [gw0] [ 99%] PASSED tests/zmq_test.py::TestUpstreamDownStream::test_send_during_recv 192s tests/zmq_test.py::TestQueueLock::test_errors 192s [gw1] [ 99%] PASSED tests/zmq_test.py::TestQueueLock::test_count 192s tests/zmq_test.py::TestQueueLock::test_nested_acquire 192s [gw0] [ 99%] PASSED tests/zmq_test.py::TestQueueLock::test_errors 192s tests/zmq_test.py::TestQueueLock::test_queue_lock_order 192s [gw1] [ 99%] PASSED tests/zmq_test.py::TestQueueLock::test_nested_acquire 192s tests/zmq_test.py::TestBlockedThread::test_block 192s [gw0] [ 99%] PASSED tests/zmq_test.py::TestQueueLock::test_queue_lock_order 192s tests/zmq_test.py::test_recv_json_no_args 192s [gw0] [ 99%] PASSED tests/zmq_test.py::test_recv_json_no_args 192s [gw1] [ 99%] PASSED tests/zmq_test.py::TestBlockedThread::test_block 192s tests/zmq_test.py::test_recv_timeout 193s [gw1] [100%] PASSED tests/zmq_test.py::test_recv_timeout 193s 193s ==================================== ERRORS ==================================== 193s __________________ ERROR collecting tests/test__greenness.py ___________________ 193s tests/test__greenness.py:8: in 193s from eventlet.green.urllib.request import urlopen 193s eventlet/green/urllib/request.py:40: in 193s URLopener.open_ftp = patcher.patch_function(URLopener.open_ftp, *to_patch_in_functions) 193s ^^^^^^^^^ 193s E NameError: name 'URLopener' is not defined 193s __________________ ERROR collecting tests/test__greenness.py ___________________ 193s tests/test__greenness.py:8: in 193s from eventlet.green.urllib.request import urlopen 193s eventlet/green/urllib/request.py:40: in 193s URLopener.open_ftp = patcher.patch_function(URLopener.open_ftp, *to_patch_in_functions) 193s ^^^^^^^^^ 193s E NameError: name 'URLopener' is not defined 193s =================================== FAILURES =================================== 193s ____________________ TestGreenPipe.test_pip_read_until_end _____________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s self = 193s 193s def test_pip_read_until_end(self): 193s # similar to test_pip_read above but reading until eof 193s r, w = os.pipe() 193s 193s > r = greenio.GreenPipe(r, 'rb') 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:757: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = 15, mode = 'rb', buffering = -1, encoding = None, errors = None 193s newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s ___________________________ TestGreenPipe.test_pipe ____________________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s self = 193s 193s def test_pipe(self): 193s r, w = os.pipe() 193s > rf = greenio.GreenPipe(r, 'rb') 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:706: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = 15, mode = 'rb', buffering = -1, encoding = None, errors = None 193s newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s _________________________ TestGreenPipe.test_pipe_read _________________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s self = 193s 193s def test_pipe_read(self): 193s # ensure that 'readline' works properly on GreenPipes when data is not 193s # immediately available (fd is nonblocking, was raising EAGAIN) 193s # also ensures that readline() terminates on '\n' and '\r\n' 193s r, w = os.pipe() 193s 193s > r = greenio.GreenPipe(r, 'rb') 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:729: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = 15, mode = 'rb', buffering = -1, encoding = None, errors = None 193s newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s ________________ TestGreenPipe.test_pipe_writes_large_messages _________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s self = 193s 193s def test_pipe_writes_large_messages(self): 193s r, w = os.pipe() 193s 193s > r = greenio.GreenPipe(r, 'rb') 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:786: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = 15, mode = 'rb', buffering = -1, encoding = None, errors = None 193s newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s ______________________________ test_pipe_context _______________________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s def test_pipe_context(): 193s # ensure using a pipe as a context actually closes it. 193s r, w = os.pipe() 193s > r = greenio.GreenPipe(r) 193s ^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:997: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = 29, mode = 'r', buffering = -1, encoding = None, errors = None 193s newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s _____________________________ test_greenpipe_write _____________________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s def test_greenpipe_write(): 193s expected = b"initial" 193s with tempfile.NamedTemporaryFile() as f: 193s > with greenio.GreenPipe(f.name, "wb") as writer: 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:1012: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = '/tmp/tmpgm51_xib', mode = 'wb', buffering = -1, encoding = None 193s errors = None, newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s ____________________________ test_greenpipe_append _____________________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s def test_greenpipe_append(): 193s old_data = b"existing data..." 193s new_data = b"append with mode=a" 193s expected = old_data + new_data 193s with tempfile.NamedTemporaryFile() as f: 193s with open(f.name, "wb") as fw: 193s fw.write(old_data) 193s 193s > with greenio.GreenPipe(f.name, "ab") as writer: 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:1027: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = '/tmp/tmpkg_tm2d6', mode = 'ab', buffering = -1, encoding = None 193s errors = None, newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s ________________________ test_greenpipe_read_overwrite _________________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s def test_greenpipe_read_overwrite(): 193s old_data = b"existing data..." 193s new_data = b"overwrite with mode=r+" 193s with tempfile.NamedTemporaryFile() as f: 193s > with greenio.GreenPipe(f.name, "wb") as writer: 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:1038: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = '/tmp/tmpww8tm31t', mode = 'wb', buffering = -1, encoding = None 193s errors = None, newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s __________________________ test_greenpipe_write_plus ___________________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s def test_greenpipe_write_plus(): 193s expected = "write with mode=w+" 193s with tempfile.NamedTemporaryFile() as f: 193s > with greenio.GreenPipe(f.name, "w+") as writer: 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:1051: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = '/tmp/tmpjhgorcxt', mode = 'w+', buffering = -1, encoding = None 193s errors = None, newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s __________________________ test_greenpipe_append_plus __________________________ 193s [gw0] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s def test_greenpipe_append_plus(): 193s expected = "append with mode=a+" 193s with tempfile.NamedTemporaryFile() as f: 193s > with greenio.GreenPipe(f.name, "a+") as writer: 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s 193s tests/greenio_test.py:1061: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = '/tmp/tmpxfveeswt', mode = 'a+', buffering = -1, encoding = None 193s errors = None, newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s __________________________ test_regular_file_readall ___________________________ 193s [gw1] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s def test_regular_file_readall(): 193s > tests.run_isolated('regular_file_readall.py') 193s 193s tests/patcher_test.py:499: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s tests/__init__.py:365: in run_isolated 193s run_python(prefix + path, **kwargs) 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s path = '/tmp/autopkgtest.WYuUMg/build.OWo/src/tests/isolated/regular_file_readall.py' 193s env = None, args = None, timeout = 10, pythonpath_extend = None 193s expect_pass = True 193s 193s def run_python(path, env=None, args=None, timeout=None, pythonpath_extend=None, expect_pass=False): 193s new_argv = [sys.executable] 193s new_env = os.environ.copy() 193s new_env.setdefault('eventlet_test_in_progress', 'yes') 193s src_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 193s if path: 193s path = os.path.abspath(path) 193s new_argv.append(path) 193s new_env['PYTHONPATH'] = os.pathsep.join(sys.path + [src_dir]) 193s if env: 193s new_env.update(env) 193s if pythonpath_extend: 193s new_path = [p for p in new_env.get('PYTHONPATH', '').split(os.pathsep) if p] 193s new_path.extend( 193s p if os.path.isabs(p) else os.path.join(src_dir, p) for p in pythonpath_extend 193s ) 193s new_env['PYTHONPATH'] = os.pathsep.join(new_path) 193s if args: 193s new_argv.extend(args) 193s p = subprocess.Popen( 193s new_argv, 193s env=new_env, 193s stderr=subprocess.STDOUT, 193s stdin=subprocess.PIPE, 193s stdout=subprocess.PIPE, 193s ) 193s if timeout is None: 193s timeout = 10 193s try: 193s output, _ = p.communicate(timeout=timeout) 193s except subprocess.TimeoutExpired: 193s p.kill() 193s output, _ = p.communicate(timeout=timeout) 193s if expect_pass: 193s sys.stderr.write('Program {} output:\n---\n{}\n---\n'.format(path, output.decode())) 193s assert False, 'timed out' 193s return '{}\nFAIL - timed out'.format(output).encode() 193s 193s if expect_pass: 193s if output.startswith(b'skip'): 193s parts = output.rstrip().split(b':', 1) 193s skip_args = [] 193s if len(parts) > 1: 193s skip_args.append(parts[1]) 193s raise SkipTest(*skip_args) 193s lines = output.splitlines() 193s ok = lines[-1].rstrip() == b'pass' 193s if not ok or len(lines) > 1: 193s sys.stderr.write('Program {} output:\n---\n{}\n---\n'.format(path, output.decode(errors="backslashreplace"))) 193s > assert ok, 'Expected single line "pass" in stdout' 193s ^^ 193s E AssertionError: Expected single line "pass" in stdout 193s 193s tests/__init__.py:358: AssertionError 193s ----------------------------- Captured stderr call ----------------------------- 193s Program /tmp/autopkgtest.WYuUMg/build.OWo/src/tests/isolated/regular_file_readall.py output: 193s --- 193s Traceback (most recent call last): 193s File "/tmp/autopkgtest.WYuUMg/build.OWo/src/tests/isolated/regular_file_readall.py", line 17, in 193s fp = os.fdopen(fd, "rb") 193s File "/tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/green/os.py", line 29, in fdopen 193s return greenio.GreenPipe(fd, *args, **kw) 193s ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ 193s File "/tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/greenio/py3.py", line 216, in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s File "/usr/lib/python3.14/_pyio.py", line 242, in open 193s if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s --- 193s _____________________________ test_universal_lines _____________________________ 193s [gw1] linux -- Python 3.14.2 /usr/bin/python3.14 193s 193s def test_universal_lines(): 193s > p = subprocess.Popen( 193s [sys.executable, '--version'], 193s shell=False, 193s stdout=subprocess.PIPE, 193s universal_newlines=True) 193s 193s tests/subprocess_test.py:52: 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s eventlet/green/subprocess.py:73: in __init__ 193s wrapped_pipe = greenio.GreenPipe(pipe, mode, bufsize) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s eventlet/greenio/py3.py:216: in GreenPipe 193s return _open(name, mode, buffering, encoding, errors, newline, closefd, opener) 193s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 193s 193s file = 15, mode = 'r', buffering = -1, encoding = None, errors = None 193s newline = None, closefd = True, opener = None 193s 193s @staticmethod 193s def open(file, mode="r", buffering=-1, encoding=None, errors=None, 193s newline=None, closefd=True, opener=None): 193s 193s r"""Open file and return a stream. Raise OSError upon failure. 193s 193s file is either a text or byte string giving the name (and the path 193s if the file isn't in the current working directory) of the file to 193s be opened or an integer file descriptor of the file to be 193s wrapped. (If a file descriptor is given, it is closed when the 193s returned I/O object is closed, unless closefd is set to False.) 193s 193s mode is an optional string that specifies the mode in which the file is 193s opened. It defaults to 'r' which means open for reading in text mode. Other 193s common values are 'w' for writing (truncating the file if it already 193s exists), 'x' for exclusive creation of a new file, and 'a' for appending 193s (which on some Unix systems, means that all writes append to the end of the 193s file regardless of the current seek position). In text mode, if encoding is 193s not specified the encoding used is platform dependent. (For reading and 193s writing raw bytes use binary mode and leave encoding unspecified.) The 193s available modes are: 193s 193s ========= =============================================================== 193s Character Meaning 193s --------- --------------------------------------------------------------- 193s 'r' open for reading (default) 193s 'w' open for writing, truncating the file first 193s 'x' create a new file and open it for writing 193s 'a' open for writing, appending to the end of the file if it exists 193s 'b' binary mode 193s 't' text mode (default) 193s '+' open a disk file for updating (reading and writing) 193s ========= =============================================================== 193s 193s The default mode is 'rt' (open for reading text). For binary random 193s access, the mode 'w+b' opens and truncates the file to 0 bytes, while 193s 'r+b' opens the file without truncation. The 'x' mode implies 'w' and 193s raises an `FileExistsError` if the file already exists. 193s 193s Python distinguishes between files opened in binary and text modes, 193s even when the underlying operating system doesn't. Files opened in 193s binary mode (appending 'b' to the mode argument) return contents as 193s bytes objects without any decoding. In text mode (the default, or when 193s 't' is appended to the mode argument), the contents of the file are 193s returned as strings, the bytes having been first decoded using a 193s platform-dependent encoding or using the specified encoding if given. 193s 193s buffering is an optional integer used to set the buffering policy. 193s Pass 0 to switch buffering off (only allowed in binary mode), 1 to select 193s line buffering (only usable in text mode), and an integer > 1 to indicate 193s the size of a fixed-size chunk buffer. When no buffering argument is 193s given, the default buffering policy works as follows: 193s 193s * Binary files are buffered in fixed-size chunks; the size of the buffer 193s is max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE) 193s when the device block size is available. 193s On most systems, the buffer will typically be 128 kilobytes long. 193s 193s * "Interactive" text files (files for which isatty() returns True) 193s use line buffering. Other text files use the policy described above 193s for binary files. 193s 193s encoding is the str name of the encoding used to decode or encode the 193s file. This should only be used in text mode. The default encoding is 193s platform dependent, but any encoding supported by Python can be 193s passed. See the codecs module for the list of supported encodings. 193s 193s errors is an optional string that specifies how encoding errors are to 193s be handled---this argument should not be used in binary mode. Pass 193s 'strict' to raise a ValueError exception if there is an encoding error 193s (the default of None has the same effect), or pass 'ignore' to ignore 193s errors. (Note that ignoring encoding errors can lead to data loss.) 193s See the documentation for codecs.register for a list of the permitted 193s encoding error strings. 193s 193s newline is a string controlling how universal newlines works (it only 193s applies to text mode). It can be None, '', '\n', '\r', and '\r\n'. It works 193s as follows: 193s 193s * On input, if newline is None, universal newlines mode is 193s enabled. Lines in the input can end in '\n', '\r', or '\r\n', and 193s these are translated into '\n' before being returned to the 193s caller. If it is '', universal newline mode is enabled, but line 193s endings are returned to the caller untranslated. If it has any of 193s the other legal values, input lines are only terminated by the given 193s string, and the line ending is returned to the caller untranslated. 193s 193s * On output, if newline is None, any '\n' characters written are 193s translated to the system default line separator, os.linesep. If 193s newline is '', no translation takes place. If newline is any of the 193s other legal values, any '\n' characters written are translated to 193s the given string. 193s 193s closedfd is a bool. If closefd is False, the underlying file descriptor will 193s be kept open when the file is closed. This does not work when a file name is 193s given and must be True in that case. 193s 193s The newly created file is non-inheritable. 193s 193s A custom opener can be used by passing a callable as *opener*. The 193s underlying file descriptor for the file object is then obtained by calling 193s *opener* with (*file*, *flags*). *opener* must return an open file 193s descriptor (passing os.open as *opener* results in functionality similar to 193s passing None). 193s 193s open() returns a file object whose type depends on the mode, and 193s through which the standard file operations such as reading and writing 193s are performed. When open() is used to open a file in a text mode ('w', 193s 'r', 'wt', 'rt', etc.), it returns a TextIOWrapper. When used to open 193s a file in a binary mode, the returned class varies: in read binary 193s mode, it returns a BufferedReader; in write binary and append binary 193s modes, it returns a BufferedWriter, and in read/write mode, it returns 193s a BufferedRandom. 193s 193s It is also possible to use a string or bytearray as a file for both 193s reading and writing. For strings StringIO can be used like a file 193s opened in a text mode, and for bytes a BytesIO can be used like a file 193s opened in a binary mode. 193s """ 193s if not isinstance(file, int): 193s file = os.fspath(file) 193s if not isinstance(file, (str, bytes, int)): 193s raise TypeError("invalid file: %r" % file) 193s if not isinstance(mode, str): 193s raise TypeError("invalid mode: %r" % mode) 193s if not isinstance(buffering, int): 193s raise TypeError("invalid buffering: %r" % buffering) 193s if encoding is not None and not isinstance(encoding, str): 193s raise TypeError("invalid encoding: %r" % encoding) 193s if errors is not None and not isinstance(errors, str): 193s raise TypeError("invalid errors: %r" % errors) 193s modes = set(mode) 193s if modes - set("axrwb+t") or len(mode) > len(modes): 193s raise ValueError("invalid mode: %r" % mode) 193s creating = "x" in modes 193s reading = "r" in modes 193s writing = "w" in modes 193s appending = "a" in modes 193s updating = "+" in modes 193s text = "t" in modes 193s binary = "b" in modes 193s if text and binary: 193s raise ValueError("can't have text and binary mode at once") 193s if creating + reading + writing + appending > 1: 193s raise ValueError("can't have read/write/append mode at once") 193s if not (creating or reading or writing or appending): 193s raise ValueError("must have exactly one of read/write/append mode") 193s if binary and encoding is not None: 193s raise ValueError("binary mode doesn't take an encoding argument") 193s if binary and errors is not None: 193s raise ValueError("binary mode doesn't take an errors argument") 193s if binary and newline is not None: 193s raise ValueError("binary mode doesn't take a newline argument") 193s if binary and buffering == 1: 193s import warnings 193s warnings.warn("line buffering (buffering=1) isn't supported in binary " 193s "mode, the default buffer size will be used", 193s RuntimeWarning, 2) 193s raw = FileIO(file, 193s (creating and "x" or "") + 193s (reading and "r" or "") + 193s (writing and "w" or "") + 193s (appending and "a" or "") + 193s (updating and "+" or ""), 193s closefd, opener=opener) 193s result = raw 193s try: 193s line_buffering = False 193s > if buffering == 1 or buffering < 0 and raw._isatty_open_only(): 193s ^^^^^^^^^^^^^^^^^^^^^ 193s E AttributeError: 'GreenFileIO' object has no attribute '_isatty_open_only' 193s 193s /usr/lib/python3.14/_pyio.py:242: AttributeError 193s =============================== warnings summary =============================== 193s eventlet/greenpool.py:95 193s /tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/greenpool.py:95: SyntaxWarning: 'return' in a 'finally' block 193s return 193s 193s tests/api_test.py: 2 warnings 193s tests/convenience_test.py: 2 warnings 193s tests/greenio_test.py: 1 warning 193s tests/ssl_test.py: 26 warnings 193s tests/wsgi_test.py: 9 warnings 193s tests/websocket_test.py: 2 warnings 193s /tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/green/ssl.py:97: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated 193s context = _original_sslcontext(protocol=ssl_version) 193s 193s tests/backdoor_test.py::BackdoorTest::test_quick_client_disconnect 193s tests/backdoor_test.py::BackdoorTest::test_server 193s tests/backdoor_test.py::BackdoorTest::test_server_on_unix_socket 193s /usr/lib/python3/dist-packages/_pytest/unraisableexception.py:67: PytestUnraisableExceptionWarning: Exception ignored while finalizing file <_io.TextIOWrapper mode='rw' encoding='UTF-8'>: None 193s 193s Traceback (most recent call last): 193s File "/usr/lib/python3.14/socket.py", line 743, in write 193s return self._sock.send(b) 193s ~~~~~~~~~~~~~~~^^^ 193s File "/tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/greenio/base.py", line 383, in send 193s return self._send_loop(self.fd.send, data, flags) 193s ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s File "/tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/greenio/base.py", line 370, in _send_loop 193s return send_method(data, *args) 193s BrokenPipeError: [Errno 32] Broken pipe 193s 193s During handling of the above exception, another exception occurred: 193s 193s Traceback (most recent call last): 193s File "/usr/lib/python3.14/socket.py", line 743, in write 193s return self._sock.send(b) 193s ~~~~~~~~~~~~~~~^^^ 193s File "/tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/greenio/base.py", line 383, in send 193s return self._send_loop(self.fd.send, data, flags) 193s ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193s File "/tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/greenio/base.py", line 370, in _send_loop 193s return send_method(data, *args) 193s BrokenPipeError: [Errno 32] Broken pipe 193s 193s 193s warnings.warn(pytest.PytestUnraisableExceptionWarning(msg)) 193s 193s tests/not_asyncio_test.py::test_spawn_from_coroutine_errors 193s /tmp/autopkgtest.WYuUMg/build.OWo/src/tests/not_asyncio_test.py:22: RuntimeWarning: coroutine 'test_spawn_from_coroutine_errors..go' was never awaited 193s with pytest.raises(RuntimeError): 193s Enable tracemalloc to get traceback where the object was allocated. 193s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 193s 193s tests/openssl_test.py::test_import 193s tests/openssl_test.py::test_import 193s /tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/green/OpenSSL/crypto.py:1: DeprecationWarning: CSR support in pyOpenSSL is deprecated. You should use the APIs in cryptography. 193s from OpenSSL.crypto import * 193s 193s tests/ssl_test.py::SSLTest::test_context_wrapped_accept 193s /tmp/autopkgtest.WYuUMg/build.OWo/src/tests/ssl_test.py:333: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated 193s context = ssl.SSLContext(ssl.PROTOCOL_TLS) 193s 193s tests/wsgi_test.py::TestHttpd::test_017_ssl_zeroreturnerror 193s /tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/green/ssl.py:97: DeprecationWarning: ssl.PROTOCOL_TLSv1_2 is deprecated 193s context = _original_sslcontext(protocol=ssl_version) 193s 193s tests/wsgi_test.py::TestHttpd::test_disable_header_name_capitalization 193s /tmp/autopkgtest.WYuUMg/build.OWo/src/eventlet/greenthread.py:272: DeprecationWarning: capitalize_response_headers is disabled. 193s Please, make sure you know what you are doing. 193s HTTP headers names are case-insensitive per RFC standard. 193s Most likely, you need to fix HTTP parsing in your client software. 193s result = function(*args, **kwargs) 193s 193s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 193s =========================== short test summary info ============================ 193s FAILED tests/greenio_test.py::TestGreenPipe::test_pip_read_until_end - Attrib... 193s FAILED tests/greenio_test.py::TestGreenPipe::test_pipe - AttributeError: 'Gre... 193s FAILED tests/greenio_test.py::TestGreenPipe::test_pipe_read - AttributeError:... 193s FAILED tests/greenio_test.py::TestGreenPipe::test_pipe_writes_large_messages 193s FAILED tests/greenio_test.py::test_pipe_context - AttributeError: 'GreenFileI... 193s FAILED tests/greenio_test.py::test_greenpipe_write - AttributeError: 'GreenFi... 193s FAILED tests/greenio_test.py::test_greenpipe_append - AttributeError: 'GreenF... 193s FAILED tests/greenio_test.py::test_greenpipe_read_overwrite - AttributeError:... 193s FAILED tests/greenio_test.py::test_greenpipe_write_plus - AttributeError: 'Gr... 193s FAILED tests/greenio_test.py::test_greenpipe_append_plus - AttributeError: 'G... 193s FAILED tests/patcher_test.py::test_regular_file_readall - AssertionError: Exp... 193s FAILED tests/subprocess_test.py::test_universal_lines - AttributeError: 'Gree... 193s ERROR tests/test__greenness.py - NameError: name 'URLopener' is not defined 193s ERROR tests/test__greenness.py - NameError: name 'URLopener' is not defined 193s ====== 12 failed, 617 passed, 89 skipped, 52 warnings, 2 errors in 54.51s ====== 194s autopkgtest [01:56:41]: test unittests: -----------------------] 194s autopkgtest [01:56:41]: test unittests: - - - - - - - - - - results - - - - - - - - - - 194s unittests FAIL non-zero exit status 1 195s autopkgtest [01:56:42]: @@@@@@@@@@@@@@@@@@@@ summary 195s listen3 PASS 195s unittests FAIL non-zero exit status 1