0s autopkgtest [17:12:57]: starting date and time: 2024-12-27 17:12:57+0000 0s autopkgtest [17:12:57]: git checkout: 325255d2 Merge branch 'pin-any-arch' into 'ubuntu/production' 0s autopkgtest [17:12:57]: host juju-7f2275-prod-proposed-migration-environment-20; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work._magsu3c/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:python3-defaults --apt-upgrade python-aiomodernforms --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=python3-defaults/3.12.8-1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-ppc64el --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-20@bos03-ppc64el-11.secgroup --name adt-plucky-ppc64el-python-aiomodernforms-20241227-171257-juju-7f2275-prod-proposed-migration-environment-20-cb47912e-82ea-409e-84c0-ca9b7dc22dfb --image adt/ubuntu-plucky-ppc64el-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-20 --net-id=net_prod-proposed-migration-ppc64el -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com,radosgw.ps5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 89s autopkgtest [17:14:26]: testbed dpkg architecture: ppc64el 89s autopkgtest [17:14:26]: testbed apt version: 2.9.18 89s autopkgtest [17:14:26]: @@@@@@@@@@@@@@@@@@@@ test bed setup 89s autopkgtest [17:14:26]: testbed release detected to be: None 90s autopkgtest [17:14:27]: updating testbed package index (apt update) 90s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [73.9 kB] 90s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 90s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 91s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 91s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/restricted Sources [9708 B] 91s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [620 kB] 91s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [11.5 kB] 91s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [56.0 kB] 91s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el Packages [57.9 kB] 91s Get:10 http://ftpmaster.internal/ubuntu plucky-proposed/restricted ppc64el Packages [756 B] 91s Get:11 http://ftpmaster.internal/ubuntu plucky-proposed/universe ppc64el Packages [488 kB] 91s Get:12 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse ppc64el Packages [4256 B] 91s Fetched 1322 kB in 1s (1437 kB/s) 92s Reading package lists... 92s Reading package lists... 93s Building dependency tree... 93s Reading state information... 93s Calculating upgrade... 93s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 93s Reading package lists... 93s Building dependency tree... 93s Reading state information... 93s 0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded. 93s autopkgtest [17:14:30]: upgrading testbed (apt dist-upgrade and autopurge) 93s Reading package lists... 94s Building dependency tree... 94s Reading state information... 94s Calculating upgrade...Starting pkgProblemResolver with broken count: 0 94s Starting 2 pkgProblemResolver with broken count: 0 94s Done 94s Entering ResolveByKeep 94s 94s The following packages will be upgraded: 94s libpython3-stdlib python3 python3-minimal 95s 3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 95s Need to get 61.5 kB of archives. 95s After this operation, 0 B of additional disk space will be used. 95s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el python3-minimal ppc64el 3.12.8-1 [27.5 kB] 95s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el python3 ppc64el 3.12.8-1 [23.9 kB] 95s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el libpython3-stdlib ppc64el 3.12.8-1 [10.1 kB] 95s Fetched 61.5 kB in 0s (225 kB/s) 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 ... 73900 files and directories currently installed.) 95s Preparing to unpack .../python3-minimal_3.12.8-1_ppc64el.deb ... 95s Unpacking python3-minimal (3.12.8-1) over (3.12.7-1) ... 95s Setting up python3-minimal (3.12.8-1) ... 96s (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 ... 73900 files and directories currently installed.) 96s Preparing to unpack .../python3_3.12.8-1_ppc64el.deb ... 96s Unpacking python3 (3.12.8-1) over (3.12.7-1) ... 96s Preparing to unpack .../libpython3-stdlib_3.12.8-1_ppc64el.deb ... 96s Unpacking libpython3-stdlib:ppc64el (3.12.8-1) over (3.12.7-1) ... 96s Setting up libpython3-stdlib:ppc64el (3.12.8-1) ... 96s Setting up python3 (3.12.8-1) ... 96s Processing triggers for man-db (2.13.0-1) ... 97s Reading package lists... 97s Building dependency tree... 97s Reading state information... 97s Starting pkgProblemResolver with broken count: 0 97s Starting 2 pkgProblemResolver with broken count: 0 97s Done 98s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 100s autopkgtest [17:14:37]: testbed running kernel: Linux 6.11.0-8-generic #8-Ubuntu SMP Mon Sep 16 13:49:23 UTC 2024 100s autopkgtest [17:14:37]: @@@@@@@@@@@@@@@@@@@@ apt-source python-aiomodernforms 102s Get:1 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (dsc) [2407 B] 102s Get:2 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (tar) [34.5 kB] 102s Get:3 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (diff) [2120 B] 102s gpgv: Signature made Wed Aug 14 20:49:59 2024 UTC 102s gpgv: using RSA key A0B1A9F3508956130E7A425CD416AD15AC6B43FE 102s gpgv: Can't check signature: No public key 102s dpkg-source: warning: cannot verify inline signature for ./python-aiomodernforms_0.1.8-2.dsc: no acceptable signature found 102s autopkgtest [17:14:39]: testing package python-aiomodernforms version 0.1.8-2 102s autopkgtest [17:14:39]: build not needed 102s autopkgtest [17:14:39]: test pybuild-autopkgtest: preparing testbed 103s Reading package lists... 103s Building dependency tree... 103s Reading state information... 103s Starting pkgProblemResolver with broken count: 0 103s Starting 2 pkgProblemResolver with broken count: 0 103s Done 103s The following NEW packages will be installed: 103s autoconf automake autopoint autotools-dev build-essential cpp cpp-14 103s cpp-14-powerpc64le-linux-gnu cpp-powerpc64le-linux-gnu debhelper debugedit 103s dh-autoreconf dh-python dh-strip-nondeterminism dwz g++ g++-14 103s g++-14-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu gcc gcc-14 103s gcc-14-powerpc64le-linux-gnu gcc-powerpc64le-linux-gnu gettext 103s intltool-debian libarchive-zip-perl libasan8 libcc1-0 libdebhelper-perl 103s libfile-stripnondeterminism-perl libgcc-14-dev libgomp1 libisl23 libitm1 103s libjs-jquery libjs-jquery-hotkeys libjs-jquery-isonscreen 103s libjs-jquery-metadata libjs-jquery-tablesorter 103s libjs-jquery-throttle-debounce liblsan0 libmpc3 libpython3.13-minimal 103s libpython3.13-stdlib libquadmath0 libstdc++-14-dev libtool libtsan2 103s libubsan1 m4 openstack-pkg-tools po-debconf pybuild-plugin-pyproject 103s python3-aiohttp python3-aiomodernforms python3-aiosignal python3-all 103s python3-aresponses python3-async-generator python3-async-timeout 103s python3-backoff python3-build python3-coverage python3-frozenlist 103s python3-iniconfig python3-installer python3-multidict python3-mypy 103s python3-mypy-extensions python3-packaging python3-pip python3-pluggy 103s python3-psutil python3-pyproject-hooks python3-pytest python3-pytest-asyncio 103s python3-pytest-cov python3-toml python3-wheel python3-yarl python3.13 103s python3.13-minimal 103s 0 upgraded, 82 newly installed, 0 to remove and 0 not upgraded. 103s Need to get 87.3 MB of archives. 103s After this operation, 376 MB of additional disk space will be used. 103s Get:1 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpython3.13-minimal ppc64el 3.13.1-2 [883 kB] 104s Get:2 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3.13-minimal ppc64el 3.13.1-2 [2496 kB] 104s Get:3 http://ftpmaster.internal/ubuntu plucky/main ppc64el libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 104s Get:4 http://ftpmaster.internal/ubuntu plucky/universe ppc64el libjs-jquery-hotkeys all 0~20130707+git2d51e3a9+dfsg-2.1 [11.5 kB] 104s Get:5 http://ftpmaster.internal/ubuntu plucky/main ppc64el m4 ppc64el 1.4.19-4build1 [278 kB] 104s Get:6 http://ftpmaster.internal/ubuntu plucky/main ppc64el autoconf all 2.72-3 [382 kB] 104s Get:7 http://ftpmaster.internal/ubuntu plucky/main ppc64el autotools-dev all 20220109.1 [44.9 kB] 104s Get:8 http://ftpmaster.internal/ubuntu plucky/main ppc64el automake all 1:1.16.5-1.3ubuntu1 [558 kB] 104s Get:9 http://ftpmaster.internal/ubuntu plucky/main ppc64el autopoint all 0.22.5-3 [616 kB] 104s Get:10 http://ftpmaster.internal/ubuntu plucky/main ppc64el libisl23 ppc64el 0.27-1 [882 kB] 104s Get:11 http://ftpmaster.internal/ubuntu plucky/main ppc64el libmpc3 ppc64el 1.3.1-1build2 [62.1 kB] 104s Get:12 http://ftpmaster.internal/ubuntu plucky/main ppc64el cpp-14-powerpc64le-linux-gnu ppc64el 14.2.0-11ubuntu1 [10.5 MB] 104s Get:13 http://ftpmaster.internal/ubuntu plucky/main ppc64el cpp-14 ppc64el 14.2.0-11ubuntu1 [1040 B] 104s Get:14 http://ftpmaster.internal/ubuntu plucky/main ppc64el cpp-powerpc64le-linux-gnu ppc64el 4:14.1.0-2ubuntu1 [5456 B] 104s Get:15 http://ftpmaster.internal/ubuntu plucky/main ppc64el cpp ppc64el 4:14.1.0-2ubuntu1 [22.5 kB] 104s Get:16 http://ftpmaster.internal/ubuntu plucky/main ppc64el libcc1-0 ppc64el 14.2.0-11ubuntu1 [48.1 kB] 104s Get:17 http://ftpmaster.internal/ubuntu plucky/main ppc64el libgomp1 ppc64el 14.2.0-11ubuntu1 [161 kB] 104s Get:18 http://ftpmaster.internal/ubuntu plucky/main ppc64el libitm1 ppc64el 14.2.0-11ubuntu1 [32.1 kB] 104s Get:19 http://ftpmaster.internal/ubuntu plucky/main ppc64el libasan8 ppc64el 14.2.0-11ubuntu1 [2945 kB] 104s Get:20 http://ftpmaster.internal/ubuntu plucky/main ppc64el liblsan0 ppc64el 14.2.0-11ubuntu1 [1322 kB] 104s Get:21 http://ftpmaster.internal/ubuntu plucky/main ppc64el libtsan2 ppc64el 14.2.0-11ubuntu1 [2696 kB] 104s Get:22 http://ftpmaster.internal/ubuntu plucky/main ppc64el libubsan1 ppc64el 14.2.0-11ubuntu1 [1191 kB] 105s Get:23 http://ftpmaster.internal/ubuntu plucky/main ppc64el libquadmath0 ppc64el 14.2.0-11ubuntu1 [158 kB] 105s Get:24 http://ftpmaster.internal/ubuntu plucky/main ppc64el libgcc-14-dev ppc64el 14.2.0-11ubuntu1 [1620 kB] 105s Get:25 http://ftpmaster.internal/ubuntu plucky/main ppc64el gcc-14-powerpc64le-linux-gnu ppc64el 14.2.0-11ubuntu1 [20.6 MB] 105s Get:26 http://ftpmaster.internal/ubuntu plucky/main ppc64el gcc-14 ppc64el 14.2.0-11ubuntu1 [532 kB] 105s Get:27 http://ftpmaster.internal/ubuntu plucky/main ppc64el gcc-powerpc64le-linux-gnu ppc64el 4:14.1.0-2ubuntu1 [1222 B] 105s Get:28 http://ftpmaster.internal/ubuntu plucky/main ppc64el gcc ppc64el 4:14.1.0-2ubuntu1 [5006 B] 105s Get:29 http://ftpmaster.internal/ubuntu plucky/main ppc64el libstdc++-14-dev ppc64el 14.2.0-11ubuntu1 [2675 kB] 105s Get:30 http://ftpmaster.internal/ubuntu plucky/main ppc64el g++-14-powerpc64le-linux-gnu ppc64el 14.2.0-11ubuntu1 [12.0 MB] 105s Get:31 http://ftpmaster.internal/ubuntu plucky/main ppc64el g++-14 ppc64el 14.2.0-11ubuntu1 [20.1 kB] 105s Get:32 http://ftpmaster.internal/ubuntu plucky/main ppc64el g++-powerpc64le-linux-gnu ppc64el 4:14.1.0-2ubuntu1 [968 B] 105s Get:33 http://ftpmaster.internal/ubuntu plucky/main ppc64el g++ ppc64el 4:14.1.0-2ubuntu1 [1090 B] 105s Get:34 http://ftpmaster.internal/ubuntu plucky/main ppc64el build-essential ppc64el 12.10ubuntu1 [4936 B] 105s Get:35 http://ftpmaster.internal/ubuntu plucky/main ppc64el libdebhelper-perl all 13.20ubuntu1 [94.2 kB] 105s Get:36 http://ftpmaster.internal/ubuntu plucky/main ppc64el libtool all 2.4.7-8 [166 kB] 105s Get:37 http://ftpmaster.internal/ubuntu plucky/main ppc64el dh-autoreconf all 20 [16.1 kB] 105s Get:38 http://ftpmaster.internal/ubuntu plucky/main ppc64el libarchive-zip-perl all 1.68-1 [90.2 kB] 105s Get:39 http://ftpmaster.internal/ubuntu plucky/main ppc64el libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 105s Get:40 http://ftpmaster.internal/ubuntu plucky/main ppc64el dh-strip-nondeterminism all 1.14.0-1 [5058 B] 105s Get:41 http://ftpmaster.internal/ubuntu plucky/main ppc64el debugedit ppc64el 1:5.1-1 [52.1 kB] 105s Get:42 http://ftpmaster.internal/ubuntu plucky/main ppc64el dwz ppc64el 0.15-1build6 [142 kB] 105s Get:43 http://ftpmaster.internal/ubuntu plucky/main ppc64el gettext ppc64el 0.22.5-3 [1083 kB] 105s Get:44 http://ftpmaster.internal/ubuntu plucky/main ppc64el intltool-debian all 0.35.0+20060710.6 [23.2 kB] 105s Get:45 http://ftpmaster.internal/ubuntu plucky/main ppc64el po-debconf all 1.0.21+nmu1 [233 kB] 105s Get:46 http://ftpmaster.internal/ubuntu plucky/main ppc64el debhelper all 13.20ubuntu1 [893 kB] 105s Get:47 http://ftpmaster.internal/ubuntu plucky/universe ppc64el dh-python all 6.20241217 [117 kB] 105s Get:48 http://ftpmaster.internal/ubuntu plucky/universe ppc64el libjs-jquery-metadata all 12-4 [6582 B] 106s Get:49 http://ftpmaster.internal/ubuntu plucky/universe ppc64el libjs-jquery-tablesorter all 1:2.31.3+dfsg1-4 [192 kB] 106s Get:50 http://ftpmaster.internal/ubuntu plucky/universe ppc64el libjs-jquery-throttle-debounce all 1.1+dfsg.1-2 [12.5 kB] 106s Get:51 http://ftpmaster.internal/ubuntu plucky/main ppc64el libpython3.13-stdlib ppc64el 3.13.1-2 [2131 kB] 106s Get:52 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-packaging all 24.2-1 [51.5 kB] 106s Get:53 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 106s Get:54 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-toml all 0.10.2-1 [16.5 kB] 106s Get:55 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-wheel all 0.45.1-1 [57.7 kB] 106s Get:56 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-build all 1.2.2-1 [31.0 kB] 106s Get:57 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 106s Get:58 http://ftpmaster.internal/ubuntu plucky/universe ppc64el pybuild-plugin-pyproject all 6.20241217 [1730 B] 106s Get:59 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-multidict ppc64el 6.1.0-1build1 [40.2 kB] 106s Get:60 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-yarl ppc64el 1.9.4-1 [76.4 kB] 106s Get:61 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-async-timeout all 5.0.1-1 [6830 B] 106s Get:62 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-frozenlist ppc64el 1.5.0-1build1 [68.2 kB] 106s Get:63 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-aiosignal all 1.3.1-1 [5172 B] 106s Get:64 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-aiohttp ppc64el 3.9.5-1 [307 kB] 106s Get:65 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-backoff all 2.2.1-2 [17.9 kB] 106s Get:66 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-aiomodernforms all 0.1.8-2 [8106 B] 106s Get:67 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3.13 ppc64el 3.13.1-2 [729 kB] 106s Get:68 http://ftpmaster.internal/ubuntu plucky-proposed/main ppc64el python3-all ppc64el 3.12.8-1 [892 B] 106s Get:69 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-async-generator all 1.10-4 [17.5 kB] 106s Get:70 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-iniconfig all 1.1.1-2 [6024 B] 106s Get:71 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pluggy all 1.5.0-1 [21.0 kB] 106s Get:72 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pytest all 8.3.3-1 [251 kB] 106s Get:73 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pytest-asyncio all 0.24.0a1-1 [15.8 kB] 106s Get:74 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-aresponses all 3.0.0-2 [13.8 kB] 106s Get:75 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-coverage ppc64el 7.4.4+dfsg1-0ubuntu3 [151 kB] 106s Get:76 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-mypy-extensions all 1.0.0-1 [6148 B] 106s Get:77 http://ftpmaster.internal/ubuntu plucky/main ppc64el python3-psutil ppc64el 5.9.8-2build3 [197 kB] 106s Get:78 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-mypy ppc64el 1.14.0-1 [15.3 MB] 106s Get:79 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pip all 24.3.1+dfsg-1 [1404 kB] 106s Get:80 http://ftpmaster.internal/ubuntu plucky/universe ppc64el libjs-jquery-isonscreen all 1.2.0-1.1 [3244 B] 106s Get:81 http://ftpmaster.internal/ubuntu plucky/universe ppc64el python3-pytest-cov all 5.0.0-1 [21.3 kB] 106s Get:82 http://ftpmaster.internal/ubuntu plucky/universe ppc64el openstack-pkg-tools all 123ubuntu2 [94.5 kB] 107s Fetched 87.3 MB in 3s (29.7 MB/s) 107s Selecting previously unselected package libpython3.13-minimal:ppc64el. 107s (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 ... 73900 files and directories currently installed.) 107s Preparing to unpack .../00-libpython3.13-minimal_3.13.1-2_ppc64el.deb ... 107s Unpacking libpython3.13-minimal:ppc64el (3.13.1-2) ... 107s Selecting previously unselected package python3.13-minimal. 107s Preparing to unpack .../01-python3.13-minimal_3.13.1-2_ppc64el.deb ... 107s Unpacking python3.13-minimal (3.13.1-2) ... 107s Selecting previously unselected package libjs-jquery. 107s Preparing to unpack .../02-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 107s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 107s Selecting previously unselected package libjs-jquery-hotkeys. 107s Preparing to unpack .../03-libjs-jquery-hotkeys_0~20130707+git2d51e3a9+dfsg-2.1_all.deb ... 107s Unpacking libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... 107s Selecting previously unselected package m4. 107s Preparing to unpack .../04-m4_1.4.19-4build1_ppc64el.deb ... 107s Unpacking m4 (1.4.19-4build1) ... 107s Selecting previously unselected package autoconf. 107s Preparing to unpack .../05-autoconf_2.72-3_all.deb ... 107s Unpacking autoconf (2.72-3) ... 107s Selecting previously unselected package autotools-dev. 107s Preparing to unpack .../06-autotools-dev_20220109.1_all.deb ... 107s Unpacking autotools-dev (20220109.1) ... 107s Selecting previously unselected package automake. 107s Preparing to unpack .../07-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 107s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 107s Selecting previously unselected package autopoint. 107s Preparing to unpack .../08-autopoint_0.22.5-3_all.deb ... 107s Unpacking autopoint (0.22.5-3) ... 107s Selecting previously unselected package libisl23:ppc64el. 107s Preparing to unpack .../09-libisl23_0.27-1_ppc64el.deb ... 107s Unpacking libisl23:ppc64el (0.27-1) ... 107s Selecting previously unselected package libmpc3:ppc64el. 107s Preparing to unpack .../10-libmpc3_1.3.1-1build2_ppc64el.deb ... 107s Unpacking libmpc3:ppc64el (1.3.1-1build2) ... 107s Selecting previously unselected package cpp-14-powerpc64le-linux-gnu. 107s Preparing to unpack .../11-cpp-14-powerpc64le-linux-gnu_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking cpp-14-powerpc64le-linux-gnu (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package cpp-14. 107s Preparing to unpack .../12-cpp-14_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking cpp-14 (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package cpp-powerpc64le-linux-gnu. 107s Preparing to unpack .../13-cpp-powerpc64le-linux-gnu_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 107s Unpacking cpp-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 107s Selecting previously unselected package cpp. 107s Preparing to unpack .../14-cpp_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 107s Unpacking cpp (4:14.1.0-2ubuntu1) ... 107s Selecting previously unselected package libcc1-0:ppc64el. 107s Preparing to unpack .../15-libcc1-0_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking libcc1-0:ppc64el (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package libgomp1:ppc64el. 107s Preparing to unpack .../16-libgomp1_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking libgomp1:ppc64el (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package libitm1:ppc64el. 107s Preparing to unpack .../17-libitm1_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking libitm1:ppc64el (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package libasan8:ppc64el. 107s Preparing to unpack .../18-libasan8_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking libasan8:ppc64el (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package liblsan0:ppc64el. 107s Preparing to unpack .../19-liblsan0_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking liblsan0:ppc64el (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package libtsan2:ppc64el. 107s Preparing to unpack .../20-libtsan2_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking libtsan2:ppc64el (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package libubsan1:ppc64el. 107s Preparing to unpack .../21-libubsan1_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking libubsan1:ppc64el (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package libquadmath0:ppc64el. 107s Preparing to unpack .../22-libquadmath0_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking libquadmath0:ppc64el (14.2.0-11ubuntu1) ... 107s Selecting previously unselected package libgcc-14-dev:ppc64el. 107s Preparing to unpack .../23-libgcc-14-dev_14.2.0-11ubuntu1_ppc64el.deb ... 107s Unpacking libgcc-14-dev:ppc64el (14.2.0-11ubuntu1) ... 108s Selecting previously unselected package gcc-14-powerpc64le-linux-gnu. 108s Preparing to unpack .../24-gcc-14-powerpc64le-linux-gnu_14.2.0-11ubuntu1_ppc64el.deb ... 108s Unpacking gcc-14-powerpc64le-linux-gnu (14.2.0-11ubuntu1) ... 108s Selecting previously unselected package gcc-14. 108s Preparing to unpack .../25-gcc-14_14.2.0-11ubuntu1_ppc64el.deb ... 108s Unpacking gcc-14 (14.2.0-11ubuntu1) ... 108s Selecting previously unselected package gcc-powerpc64le-linux-gnu. 108s Preparing to unpack .../26-gcc-powerpc64le-linux-gnu_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 108s Unpacking gcc-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 108s Selecting previously unselected package gcc. 108s Preparing to unpack .../27-gcc_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 108s Unpacking gcc (4:14.1.0-2ubuntu1) ... 108s Selecting previously unselected package libstdc++-14-dev:ppc64el. 108s Preparing to unpack .../28-libstdc++-14-dev_14.2.0-11ubuntu1_ppc64el.deb ... 108s Unpacking libstdc++-14-dev:ppc64el (14.2.0-11ubuntu1) ... 108s Selecting previously unselected package g++-14-powerpc64le-linux-gnu. 108s Preparing to unpack .../29-g++-14-powerpc64le-linux-gnu_14.2.0-11ubuntu1_ppc64el.deb ... 108s Unpacking g++-14-powerpc64le-linux-gnu (14.2.0-11ubuntu1) ... 108s Selecting previously unselected package g++-14. 108s Preparing to unpack .../30-g++-14_14.2.0-11ubuntu1_ppc64el.deb ... 108s Unpacking g++-14 (14.2.0-11ubuntu1) ... 108s Selecting previously unselected package g++-powerpc64le-linux-gnu. 108s Preparing to unpack .../31-g++-powerpc64le-linux-gnu_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 108s Unpacking g++-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 108s Selecting previously unselected package g++. 108s Preparing to unpack .../32-g++_4%3a14.1.0-2ubuntu1_ppc64el.deb ... 108s Unpacking g++ (4:14.1.0-2ubuntu1) ... 108s Selecting previously unselected package build-essential. 108s Preparing to unpack .../33-build-essential_12.10ubuntu1_ppc64el.deb ... 108s Unpacking build-essential (12.10ubuntu1) ... 108s Selecting previously unselected package libdebhelper-perl. 108s Preparing to unpack .../34-libdebhelper-perl_13.20ubuntu1_all.deb ... 108s Unpacking libdebhelper-perl (13.20ubuntu1) ... 108s Selecting previously unselected package libtool. 108s Preparing to unpack .../35-libtool_2.4.7-8_all.deb ... 108s Unpacking libtool (2.4.7-8) ... 108s Selecting previously unselected package dh-autoreconf. 108s Preparing to unpack .../36-dh-autoreconf_20_all.deb ... 108s Unpacking dh-autoreconf (20) ... 108s Selecting previously unselected package libarchive-zip-perl. 108s Preparing to unpack .../37-libarchive-zip-perl_1.68-1_all.deb ... 108s Unpacking libarchive-zip-perl (1.68-1) ... 108s Selecting previously unselected package libfile-stripnondeterminism-perl. 108s Preparing to unpack .../38-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 108s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 108s Selecting previously unselected package dh-strip-nondeterminism. 108s Preparing to unpack .../39-dh-strip-nondeterminism_1.14.0-1_all.deb ... 108s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 108s Selecting previously unselected package debugedit. 108s Preparing to unpack .../40-debugedit_1%3a5.1-1_ppc64el.deb ... 108s Unpacking debugedit (1:5.1-1) ... 108s Selecting previously unselected package dwz. 108s Preparing to unpack .../41-dwz_0.15-1build6_ppc64el.deb ... 108s Unpacking dwz (0.15-1build6) ... 108s Selecting previously unselected package gettext. 108s Preparing to unpack .../42-gettext_0.22.5-3_ppc64el.deb ... 108s Unpacking gettext (0.22.5-3) ... 108s Selecting previously unselected package intltool-debian. 108s Preparing to unpack .../43-intltool-debian_0.35.0+20060710.6_all.deb ... 108s Unpacking intltool-debian (0.35.0+20060710.6) ... 108s Selecting previously unselected package po-debconf. 108s Preparing to unpack .../44-po-debconf_1.0.21+nmu1_all.deb ... 108s Unpacking po-debconf (1.0.21+nmu1) ... 108s Selecting previously unselected package debhelper. 108s Preparing to unpack .../45-debhelper_13.20ubuntu1_all.deb ... 108s Unpacking debhelper (13.20ubuntu1) ... 108s Selecting previously unselected package dh-python. 108s Preparing to unpack .../46-dh-python_6.20241217_all.deb ... 108s Unpacking dh-python (6.20241217) ... 109s Selecting previously unselected package libjs-jquery-metadata. 109s Preparing to unpack .../47-libjs-jquery-metadata_12-4_all.deb ... 109s Unpacking libjs-jquery-metadata (12-4) ... 109s Selecting previously unselected package libjs-jquery-tablesorter. 109s Preparing to unpack .../48-libjs-jquery-tablesorter_1%3a2.31.3+dfsg1-4_all.deb ... 109s Unpacking libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 109s Selecting previously unselected package libjs-jquery-throttle-debounce. 109s Preparing to unpack .../49-libjs-jquery-throttle-debounce_1.1+dfsg.1-2_all.deb ... 109s Unpacking libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 109s Selecting previously unselected package libpython3.13-stdlib:ppc64el. 109s Preparing to unpack .../50-libpython3.13-stdlib_3.13.1-2_ppc64el.deb ... 109s Unpacking libpython3.13-stdlib:ppc64el (3.13.1-2) ... 109s Selecting previously unselected package python3-packaging. 109s Preparing to unpack .../51-python3-packaging_24.2-1_all.deb ... 109s Unpacking python3-packaging (24.2-1) ... 109s Selecting previously unselected package python3-pyproject-hooks. 109s Preparing to unpack .../52-python3-pyproject-hooks_1.2.0-1_all.deb ... 109s Unpacking python3-pyproject-hooks (1.2.0-1) ... 109s Selecting previously unselected package python3-toml. 109s Preparing to unpack .../53-python3-toml_0.10.2-1_all.deb ... 109s Unpacking python3-toml (0.10.2-1) ... 109s Selecting previously unselected package python3-wheel. 109s Preparing to unpack .../54-python3-wheel_0.45.1-1_all.deb ... 109s Unpacking python3-wheel (0.45.1-1) ... 109s Selecting previously unselected package python3-build. 109s Preparing to unpack .../55-python3-build_1.2.2-1_all.deb ... 109s Unpacking python3-build (1.2.2-1) ... 109s Selecting previously unselected package python3-installer. 109s Preparing to unpack .../56-python3-installer_0.7.0+dfsg1-3_all.deb ... 109s Unpacking python3-installer (0.7.0+dfsg1-3) ... 109s Selecting previously unselected package pybuild-plugin-pyproject. 109s Preparing to unpack .../57-pybuild-plugin-pyproject_6.20241217_all.deb ... 109s Unpacking pybuild-plugin-pyproject (6.20241217) ... 109s Selecting previously unselected package python3-multidict. 109s Preparing to unpack .../58-python3-multidict_6.1.0-1build1_ppc64el.deb ... 109s Unpacking python3-multidict (6.1.0-1build1) ... 109s Selecting previously unselected package python3-yarl. 109s Preparing to unpack .../59-python3-yarl_1.9.4-1_ppc64el.deb ... 109s Unpacking python3-yarl (1.9.4-1) ... 109s Selecting previously unselected package python3-async-timeout. 109s Preparing to unpack .../60-python3-async-timeout_5.0.1-1_all.deb ... 109s Unpacking python3-async-timeout (5.0.1-1) ... 109s Selecting previously unselected package python3-frozenlist. 109s Preparing to unpack .../61-python3-frozenlist_1.5.0-1build1_ppc64el.deb ... 109s Unpacking python3-frozenlist (1.5.0-1build1) ... 109s Selecting previously unselected package python3-aiosignal. 109s Preparing to unpack .../62-python3-aiosignal_1.3.1-1_all.deb ... 109s Unpacking python3-aiosignal (1.3.1-1) ... 109s Selecting previously unselected package python3-aiohttp. 109s Preparing to unpack .../63-python3-aiohttp_3.9.5-1_ppc64el.deb ... 109s Unpacking python3-aiohttp (3.9.5-1) ... 109s Selecting previously unselected package python3-backoff. 109s Preparing to unpack .../64-python3-backoff_2.2.1-2_all.deb ... 109s Unpacking python3-backoff (2.2.1-2) ... 109s Selecting previously unselected package python3-aiomodernforms. 109s Preparing to unpack .../65-python3-aiomodernforms_0.1.8-2_all.deb ... 109s Unpacking python3-aiomodernforms (0.1.8-2) ... 109s Selecting previously unselected package python3.13. 109s Preparing to unpack .../66-python3.13_3.13.1-2_ppc64el.deb ... 109s Unpacking python3.13 (3.13.1-2) ... 109s Selecting previously unselected package python3-all. 109s Preparing to unpack .../67-python3-all_3.12.8-1_ppc64el.deb ... 109s Unpacking python3-all (3.12.8-1) ... 109s Selecting previously unselected package python3-async-generator. 109s Preparing to unpack .../68-python3-async-generator_1.10-4_all.deb ... 109s Unpacking python3-async-generator (1.10-4) ... 109s Selecting previously unselected package python3-iniconfig. 109s Preparing to unpack .../69-python3-iniconfig_1.1.1-2_all.deb ... 109s Unpacking python3-iniconfig (1.1.1-2) ... 109s Selecting previously unselected package python3-pluggy. 109s Preparing to unpack .../70-python3-pluggy_1.5.0-1_all.deb ... 109s Unpacking python3-pluggy (1.5.0-1) ... 109s Selecting previously unselected package python3-pytest. 109s Preparing to unpack .../71-python3-pytest_8.3.3-1_all.deb ... 109s Unpacking python3-pytest (8.3.3-1) ... 109s Selecting previously unselected package python3-pytest-asyncio. 109s Preparing to unpack .../72-python3-pytest-asyncio_0.24.0a1-1_all.deb ... 109s Unpacking python3-pytest-asyncio (0.24.0a1-1) ... 109s Selecting previously unselected package python3-aresponses. 109s Preparing to unpack .../73-python3-aresponses_3.0.0-2_all.deb ... 109s Unpacking python3-aresponses (3.0.0-2) ... 109s Selecting previously unselected package python3-coverage. 109s Preparing to unpack .../74-python3-coverage_7.4.4+dfsg1-0ubuntu3_ppc64el.deb ... 109s Unpacking python3-coverage (7.4.4+dfsg1-0ubuntu3) ... 109s Selecting previously unselected package python3-mypy-extensions. 109s Preparing to unpack .../75-python3-mypy-extensions_1.0.0-1_all.deb ... 109s Unpacking python3-mypy-extensions (1.0.0-1) ... 109s Selecting previously unselected package python3-psutil. 109s Preparing to unpack .../76-python3-psutil_5.9.8-2build3_ppc64el.deb ... 109s Unpacking python3-psutil (5.9.8-2build3) ... 109s Selecting previously unselected package python3-mypy. 109s Preparing to unpack .../77-python3-mypy_1.14.0-1_ppc64el.deb ... 109s Unpacking python3-mypy (1.14.0-1) ... 110s Selecting previously unselected package python3-pip. 110s Preparing to unpack .../78-python3-pip_24.3.1+dfsg-1_all.deb ... 110s Unpacking python3-pip (24.3.1+dfsg-1) ... 110s Selecting previously unselected package libjs-jquery-isonscreen. 110s Preparing to unpack .../79-libjs-jquery-isonscreen_1.2.0-1.1_all.deb ... 110s Unpacking libjs-jquery-isonscreen (1.2.0-1.1) ... 110s Selecting previously unselected package python3-pytest-cov. 110s Preparing to unpack .../80-python3-pytest-cov_5.0.0-1_all.deb ... 110s Unpacking python3-pytest-cov (5.0.0-1) ... 110s Selecting previously unselected package openstack-pkg-tools. 110s Preparing to unpack .../81-openstack-pkg-tools_123ubuntu2_all.deb ... 110s Unpacking openstack-pkg-tools (123ubuntu2) ... 110s Setting up dh-python (6.20241217) ... 110s Setting up python3-iniconfig (1.1.1-2) ... 110s Setting up python3-async-generator (1.10-4) ... 111s Setting up libarchive-zip-perl (1.68-1) ... 111s Setting up python3-mypy-extensions (1.0.0-1) ... 111s Setting up libdebhelper-perl (13.20ubuntu1) ... 111s Setting up m4 (1.4.19-4build1) ... 111s Setting up libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 111s Setting up libgomp1:ppc64el (14.2.0-11ubuntu1) ... 111s Setting up python3-wheel (0.45.1-1) ... 111s Setting up python3-psutil (5.9.8-2build3) ... 111s Setting up python3-multidict (6.1.0-1build1) ... 112s Setting up python3-frozenlist (1.5.0-1build1) ... 112s Setting up python3-aiosignal (1.3.1-1) ... 112s Setting up python3-async-timeout (5.0.1-1) ... 112s Setting up libpython3.13-minimal:ppc64el (3.13.1-2) ... 112s Setting up autotools-dev (20220109.1) ... 112s Setting up python3-packaging (24.2-1) ... 112s Setting up python3-pyproject-hooks (1.2.0-1) ... 113s Setting up libquadmath0:ppc64el (14.2.0-11ubuntu1) ... 113s Setting up libmpc3:ppc64el (1.3.1-1build2) ... 113s Setting up python3-mypy (1.14.0-1) ... 115s Setting up autopoint (0.22.5-3) ... 115s Setting up python3-pip (24.3.1+dfsg-1) ... 117s Setting up python3-toml (0.10.2-1) ... 117s Setting up python3-installer (0.7.0+dfsg1-3) ... 118s Setting up autoconf (2.72-3) ... 118s Setting up python3-pluggy (1.5.0-1) ... 118s Setting up libubsan1:ppc64el (14.2.0-11ubuntu1) ... 118s Setting up dwz (0.15-1build6) ... 118s Setting up libasan8:ppc64el (14.2.0-11ubuntu1) ... 118s Setting up python3-backoff (2.2.1-2) ... 118s Setting up debugedit (1:5.1-1) ... 118s Setting up python3.13-minimal (3.13.1-2) ... 119s Setting up libtsan2:ppc64el (14.2.0-11ubuntu1) ... 119s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 119s Setting up libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... 119s Setting up libisl23:ppc64el (0.27-1) ... 119s Setting up python3-build (1.2.2-1) ... 119s Setting up python3-yarl (1.9.4-1) ... 119s Setting up libpython3.13-stdlib:ppc64el (3.13.1-2) ... 119s Setting up libcc1-0:ppc64el (14.2.0-11ubuntu1) ... 119s Setting up liblsan0:ppc64el (14.2.0-11ubuntu1) ... 119s Setting up libitm1:ppc64el (14.2.0-11ubuntu1) ... 119s Setting up automake (1:1.16.5-1.3ubuntu1) ... 119s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 119s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 119s Setting up gettext (0.22.5-3) ... 119s Setting up python3.13 (3.13.1-2) ... 120s Setting up pybuild-plugin-pyproject (6.20241217) ... 120s Setting up python3-pytest (8.3.3-1) ... 121s Setting up python3-aiohttp (3.9.5-1) ... 121s Setting up python3-all (3.12.8-1) ... 121s Setting up python3-coverage (7.4.4+dfsg1-0ubuntu3) ... 122s Setting up python3-aiomodernforms (0.1.8-2) ... 122s Setting up intltool-debian (0.35.0+20060710.6) ... 122s Setting up libjs-jquery-metadata (12-4) ... 122s Setting up libjs-jquery-isonscreen (1.2.0-1.1) ... 122s Setting up cpp-14-powerpc64le-linux-gnu (14.2.0-11ubuntu1) ... 122s Setting up cpp-14 (14.2.0-11ubuntu1) ... 122s Setting up python3-pytest-asyncio (0.24.0a1-1) ... 122s Setting up dh-strip-nondeterminism (1.14.0-1) ... 122s Setting up libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 122s Setting up libgcc-14-dev:ppc64el (14.2.0-11ubuntu1) ... 122s Setting up libstdc++-14-dev:ppc64el (14.2.0-11ubuntu1) ... 122s Setting up cpp-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 122s Setting up gcc-14-powerpc64le-linux-gnu (14.2.0-11ubuntu1) ... 122s Setting up g++-14-powerpc64le-linux-gnu (14.2.0-11ubuntu1) ... 122s Setting up python3-aresponses (3.0.0-2) ... 122s Setting up po-debconf (1.0.21+nmu1) ... 122s Setting up python3-pytest-cov (5.0.0-1) ... 122s Setting up openstack-pkg-tools (123ubuntu2) ... 122s Setting up gcc-14 (14.2.0-11ubuntu1) ... 122s Setting up gcc-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 122s Setting up cpp (4:14.1.0-2ubuntu1) ... 122s Setting up g++-14 (14.2.0-11ubuntu1) ... 122s Setting up g++-powerpc64le-linux-gnu (4:14.1.0-2ubuntu1) ... 122s Setting up libtool (2.4.7-8) ... 122s Setting up gcc (4:14.1.0-2ubuntu1) ... 122s Setting up dh-autoreconf (20) ... 122s Setting up g++ (4:14.1.0-2ubuntu1) ... 122s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 122s Setting up build-essential (12.10ubuntu1) ... 123s Setting up debhelper (13.20ubuntu1) ... 123s Processing triggers for man-db (2.13.0-1) ... 124s Processing triggers for install-info (7.1.1-1) ... 124s Processing triggers for libc-bin (2.40-4ubuntu1) ... 124s Processing triggers for systemd (257-2ubuntu1) ... 125s autopkgtest [17:15:02]: test pybuild-autopkgtest: pybuild-autopkgtest 125s autopkgtest [17:15:02]: test pybuild-autopkgtest: [----------------------- 125s make: pyversions: No such file or directory 125s py3versions: no X-Python3-Version in control file, using supported versions 125s pybuild-autopkgtest 126s I: pybuild base:311: cd /tmp/autopkgtest.bVbjYg/autopkgtest_tmp/build; python3.13 -m pytest -v 126s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:208: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. 126s The event loop scope for asynchronous fixtures will default to the fixture caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" 126s 126s warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) 126s ============================= test session starts ============================== 126s platform linux -- Python 3.13.1, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.13 126s cachedir: .pytest_cache 126s rootdir: /tmp/autopkgtest.bVbjYg/autopkgtest_tmp/build 126s configfile: pytest.ini 126s testpaths: tests 126s plugins: aresponses-3.0.0, typeguard-4.4.1, cov-5.0.0, asyncio-0.24.0a1 126s asyncio: mode=Mode.STRICT, default_loop_scope=None 126s collecting ... collected 19 items 126s 126s tests/test_aiomodernforms.py::test_basic_status FAILED [ 5%] 127s tests/test_aiomodernforms.py::test_command FAILED [ 10%] 127s tests/test_aiomodernforms.py::test_light FAILED [ 15%] 127s tests/test_aiomodernforms.py::test_light_sleep_datetime FAILED [ 21%] 127s tests/test_aiomodernforms.py::test_light_sleep_int FAILED [ 26%] 127s tests/test_aiomodernforms.py::test_light_sleep_clear FAILED [ 31%] 127s tests/test_aiomodernforms.py::test_fan FAILED [ 36%] 127s tests/test_aiomodernforms.py::test_fan_sleep_datetime FAILED [ 42%] 127s tests/test_aiomodernforms.py::test_fan_sleep_int FAILED [ 47%] 127s tests/test_aiomodernforms.py::test_fan_sleep_clear FAILED [ 52%] 127s tests/test_aiomodernforms.py::test_away FAILED [ 57%] 127s tests/test_aiomodernforms.py::test_adaptive_learning FAILED [ 63%] 127s tests/test_aiomodernforms.py::test_invalid_setting FAILED [ 68%] 127s tests/test_aiomodernforms.py::test_connection_error FAILED [ 73%] 127s tests/test_aiomodernforms.py::test_server_error FAILED [ 78%] 127s tests/test_aiomodernforms.py::test_reboot FAILED [ 84%] 127s tests/test_aiomodernforms.py::test_status_not_initialized_response PASSED [ 89%] 127s tests/test_aiomodernforms.py::test_info_not_initialized_response PASSED [ 94%] 127s tests/test_aiomodernforms.py::test_empty_response FAILED [100%] 127s 127s =================================== FAILURES =================================== 127s ______________________________ test_basic_status _______________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_basic_status(aresponses): 127s """Test JSON response is handled correctly.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add( 127s "fan.local", 127s "/mf", 127s "POST", 127s response=basic_response, 127s repeat=2, 127s ) 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:79: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s _________________________________ test_command _________________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_command(aresponses): 127s """Test to make sure setting lights works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_LIGHT_POWER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:108: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s __________________________________ test_light __________________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_light(aresponses): 127s """Test to make sure setting lights works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_LIGHT_POWER in data 127s assert aiomodernforms.COMMAND_LIGHT_BRIGHTNESS in data 127s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 127s modified_response[STATE_LIGHT_BRIGHTNESS] = data[ 127s aiomodernforms.COMMAND_LIGHT_BRIGHTNESS 127s ] 127s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 127s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:143: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s __________________________ test_light_sleep_datetime ___________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_light_sleep_datetime(aresponses): 127s """Test to make sure setting light sleep works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 127s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s sleep_time = datetime.now() + timedelta(minutes=2) 127s > await device.light( 127s sleep=sleep_time, 127s ) 127s 127s tests/test_aiomodernforms.py:180: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 127s await self.request(commands=commands) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 127s await self.update() 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s _____________________________ test_light_sleep_int _____________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_light_sleep_int(aresponses): 127s """Test to make sure setting light sleep works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 127s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s sleep_time = datetime.now() + timedelta(seconds=120) 127s > await device.light( 127s sleep=120, 127s ) 127s 127s tests/test_aiomodernforms.py:209: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 127s await self.request(commands=commands) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 127s await self.update() 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s ____________________________ test_light_sleep_clear ____________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_light_sleep_clear(aresponses): 127s """Test to make sure setting light sleep works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 127s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s # check to clear timer 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.light( 127s sleep=0, 127s ) 127s 127s tests/test_aiomodernforms.py:238: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 127s await self.request(commands=commands) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 127s await self.update() 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s ___________________________________ test_fan ___________________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_fan(aresponses): 127s """Test to make sure setting fan works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_FAN_POWER in data 127s assert aiomodernforms.COMMAND_FAN_SPEED in data 127s assert aiomodernforms.COMMAND_FAN_DIRECTION in data 127s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_FAN_POWER] = data[aiomodernforms.COMMAND_FAN_POWER] 127s modified_response[STATE_FAN_SPEED] = data[aiomodernforms.COMMAND_FAN_SPEED] 127s modified_response[STATE_FAN_DIRECTION] = data[ 127s aiomodernforms.COMMAND_FAN_DIRECTION 127s ] 127s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 127s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:274: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s ___________________________ test_fan_sleep_datetime ____________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_fan_sleep_datetime(aresponses): 127s """Test to make sure setting light sleep works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 127s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s sleep_time = datetime.now() + timedelta(minutes=2) 127s > await device.fan( 127s sleep=sleep_time, 127s ) 127s 127s tests/test_aiomodernforms.py:311: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 127s await self.request(commands=commands) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 127s await self.update() 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s ______________________________ test_fan_sleep_int ______________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_fan_sleep_int(aresponses): 127s """Test to make sure setting light sleep works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 127s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s sleep_time = datetime.now() + timedelta(seconds=120) 127s > await device.fan( 127s sleep=120, 127s ) 127s 127s tests/test_aiomodernforms.py:340: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 127s await self.request(commands=commands) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 127s await self.update() 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s _____________________________ test_fan_sleep_clear _____________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_fan_sleep_clear(aresponses): 127s """Test to make sure setting light sleep works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 127s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s # check to clear timer 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.fan( 127s sleep=0, 127s ) 127s 127s tests/test_aiomodernforms.py:369: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 127s await self.request(commands=commands) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 127s await self.update() 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s __________________________________ test_away ___________________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_away(aresponses): 127s """Test to make sure setting away mode works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_AWAY_MODE in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_AWAY_MODE] = data[aiomodernforms.COMMAND_AWAY_MODE] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:395: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s ____________________________ test_adaptive_learning ____________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_adaptive_learning(aresponses): 127s """Test to make sure setting adaptive learning mode works.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async def evaluate_request(request): 127s data = await request.json() 127s assert aiomodernforms.COMMAND_ADAPTIVE_LEARNING in data 127s modified_response = basic_response.copy() 127s modified_response[STATE_ADAPTIVE_LEARNING] = data[ 127s aiomodernforms.COMMAND_ADAPTIVE_LEARNING 127s ] 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text=json.dumps(modified_response), 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:422: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s _____________________________ test_invalid_setting _____________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_invalid_setting(aresponses): 127s """Test to make sure setting invalid settings are rejected.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:434: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s ____________________________ test_connection_error _____________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_connection_error(aresponses): 127s """Test to make validate proper connection error handling.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s with pytest.raises(aiomodernforms.ModernFormsConnectionError): 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:502: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s ______________________________ test_server_error _______________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_server_error(aresponses): 127s """Test to make validate proper server error handling.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add( 127s "fan.local", 127s "/mf", 127s "POST", 127s response=aresponses.Response(text="error", status=500), 127s ) 127s 127s with pytest.raises(aiomodernforms.ModernFormsError): 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:518: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s _________________________________ test_reboot __________________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_reboot(aresponses): 127s """Test how reboot is handled.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 127s 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:528: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s _____________________________ test_empty_response ______________________________ 127s 127s aresponses = 127s 127s @pytest.mark.asyncio 127s async def test_empty_response(aresponses): 127s """Test for an Empty Response.""" 127s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 127s 127s async def send_empty_state(request): 127s await request.json() 127s return aresponses.Response( 127s status=200, 127s content_type="application/json", 127s text="{}", 127s ) 127s 127s aresponses.add("fan.local", "/mf", "POST", response=send_empty_state) 127s with pytest.raises(ModernFormsConnectionError): 127s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 127s > await device.update() 127s 127s tests/test_aiomodernforms.py:568: 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 127s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 127s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 127s ret = await target(*args, **kwargs) 127s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 127s 127s self = 127s commands = {'queryStaticShadowData': True} 127s 127s @backoff.on_exception( 127s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 127s ) 127s async def _request(self, commands: Optional[dict] = None) -> Any: 127s """Handle a request to a Modern Forms Fan device.""" 127s scheme = "https" if self._tls else "http" 127s url = URL.build( 127s scheme=scheme, 127s host=self._host, 127s port=self._port, 127s path=self._base_path, 127s ) 127s 127s auth = None 127s if self._username and self._password: 127s auth = aiohttp.BasicAuth(self._username, self._password) 127s 127s headers = { 127s "User-Agent": self._user_agent, 127s "Accept": "application/json", 127s } 127s 127s if self._session is None: 127s self._session = aiohttp.ClientSession() 127s self._close_session = True 127s 127s # If updating the state, always request for a state response 127s if commands is None: 127s commands = {COMMAND_QUERY_STATUS: True} 127s 127s try: 127s > with async_timeout.timeout(self._request_timeout): 127s E TypeError: 'Timeout' object does not support the context manager protocol 127s 127s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 127s =========================== short test summary info ============================ 127s FAILED tests/test_aiomodernforms.py::test_basic_status - TypeError: 'Timeout'... 127s FAILED tests/test_aiomodernforms.py::test_command - TypeError: 'Timeout' obje... 127s FAILED tests/test_aiomodernforms.py::test_light - TypeError: 'Timeout' object... 127s FAILED tests/test_aiomodernforms.py::test_light_sleep_datetime - TypeError: '... 127s FAILED tests/test_aiomodernforms.py::test_light_sleep_int - TypeError: 'Timeo... 127s FAILED tests/test_aiomodernforms.py::test_light_sleep_clear - TypeError: 'Tim... 127s FAILED tests/test_aiomodernforms.py::test_fan - TypeError: 'Timeout' object d... 127s FAILED tests/test_aiomodernforms.py::test_fan_sleep_datetime - TypeError: 'Ti... 127s FAILED tests/test_aiomodernforms.py::test_fan_sleep_int - TypeError: 'Timeout... 127s FAILED tests/test_aiomodernforms.py::test_fan_sleep_clear - TypeError: 'Timeo... 127s FAILED tests/test_aiomodernforms.py::test_away - TypeError: 'Timeout' object ... 127s FAILED tests/test_aiomodernforms.py::test_adaptive_learning - TypeError: 'Tim... 127s FAILED tests/test_aiomodernforms.py::test_invalid_setting - TypeError: 'Timeo... 127s FAILED tests/test_aiomodernforms.py::test_connection_error - TypeError: 'Time... 127s FAILED tests/test_aiomodernforms.py::test_server_error - TypeError: 'Timeout'... 127s FAILED tests/test_aiomodernforms.py::test_reboot - TypeError: 'Timeout' objec... 127s FAILED tests/test_aiomodernforms.py::test_empty_response - TypeError: 'Timeou... 127s ========================= 17 failed, 2 passed in 0.48s ========================= 127s E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.bVbjYg/autopkgtest_tmp/build; python3.13 -m pytest -v 127s I: pybuild base:311: cd /tmp/autopkgtest.bVbjYg/autopkgtest_tmp/build; python3.12 -m pytest -v 127s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:208: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. 127s The event loop scope for asynchronous fixtures will default to the fixture caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" 127s 127s warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) 127s ============================= test session starts ============================== 127s platform linux -- Python 3.12.8, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.12 127s cachedir: .pytest_cache 127s rootdir: /tmp/autopkgtest.bVbjYg/autopkgtest_tmp/build 127s configfile: pytest.ini 127s testpaths: tests 127s plugins: aresponses-3.0.0, typeguard-4.4.1, cov-5.0.0, asyncio-0.24.0a1 127s asyncio: mode=Mode.STRICT, default_loop_scope=None 127s collecting ... collected 19 items 127s 127s tests/test_aiomodernforms.py::test_basic_status FAILED [ 5%] 128s tests/test_aiomodernforms.py::test_command FAILED [ 10%] 128s tests/test_aiomodernforms.py::test_light FAILED [ 15%] 128s tests/test_aiomodernforms.py::test_light_sleep_datetime FAILED [ 21%] 128s tests/test_aiomodernforms.py::test_light_sleep_int FAILED [ 26%] 128s tests/test_aiomodernforms.py::test_light_sleep_clear FAILED [ 31%] 128s tests/test_aiomodernforms.py::test_fan FAILED [ 36%] 128s tests/test_aiomodernforms.py::test_fan_sleep_datetime FAILED [ 42%] 128s tests/test_aiomodernforms.py::test_fan_sleep_int FAILED [ 47%] 128s tests/test_aiomodernforms.py::test_fan_sleep_clear FAILED [ 52%] 128s tests/test_aiomodernforms.py::test_away FAILED [ 57%] 128s tests/test_aiomodernforms.py::test_adaptive_learning FAILED [ 63%] 128s tests/test_aiomodernforms.py::test_invalid_setting FAILED [ 68%] 128s tests/test_aiomodernforms.py::test_connection_error FAILED [ 73%] 128s tests/test_aiomodernforms.py::test_server_error FAILED [ 78%] 128s tests/test_aiomodernforms.py::test_reboot FAILED [ 84%] 128s tests/test_aiomodernforms.py::test_status_not_initialized_response PASSED [ 89%] 128s tests/test_aiomodernforms.py::test_info_not_initialized_response PASSED [ 94%] 128s tests/test_aiomodernforms.py::test_empty_response FAILED [100%] 128s 128s =================================== FAILURES =================================== 128s ______________________________ test_basic_status _______________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_basic_status(aresponses): 128s """Test JSON response is handled correctly.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add( 128s "fan.local", 128s "/mf", 128s "POST", 128s response=basic_response, 128s repeat=2, 128s ) 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:79: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s _________________________________ test_command _________________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_command(aresponses): 128s """Test to make sure setting lights works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_LIGHT_POWER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:108: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s __________________________________ test_light __________________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_light(aresponses): 128s """Test to make sure setting lights works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_LIGHT_POWER in data 128s assert aiomodernforms.COMMAND_LIGHT_BRIGHTNESS in data 128s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 128s modified_response[STATE_LIGHT_BRIGHTNESS] = data[ 128s aiomodernforms.COMMAND_LIGHT_BRIGHTNESS 128s ] 128s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 128s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:143: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s __________________________ test_light_sleep_datetime ___________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_light_sleep_datetime(aresponses): 128s """Test to make sure setting light sleep works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 128s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s sleep_time = datetime.now() + timedelta(minutes=2) 128s > await device.light( 128s sleep=sleep_time, 128s ) 128s 128s tests/test_aiomodernforms.py:180: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 128s await self.request(commands=commands) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 128s await self.update() 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s _____________________________ test_light_sleep_int _____________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_light_sleep_int(aresponses): 128s """Test to make sure setting light sleep works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 128s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s sleep_time = datetime.now() + timedelta(seconds=120) 128s > await device.light( 128s sleep=120, 128s ) 128s 128s tests/test_aiomodernforms.py:209: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 128s await self.request(commands=commands) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 128s await self.update() 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s ____________________________ test_light_sleep_clear ____________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_light_sleep_clear(aresponses): 128s """Test to make sure setting light sleep works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 128s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s # check to clear timer 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.light( 128s sleep=0, 128s ) 128s 128s tests/test_aiomodernforms.py:238: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 128s await self.request(commands=commands) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 128s await self.update() 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s ___________________________________ test_fan ___________________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_fan(aresponses): 128s """Test to make sure setting fan works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_FAN_POWER in data 128s assert aiomodernforms.COMMAND_FAN_SPEED in data 128s assert aiomodernforms.COMMAND_FAN_DIRECTION in data 128s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_FAN_POWER] = data[aiomodernforms.COMMAND_FAN_POWER] 128s modified_response[STATE_FAN_SPEED] = data[aiomodernforms.COMMAND_FAN_SPEED] 128s modified_response[STATE_FAN_DIRECTION] = data[ 128s aiomodernforms.COMMAND_FAN_DIRECTION 128s ] 128s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 128s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:274: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s ___________________________ test_fan_sleep_datetime ____________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_fan_sleep_datetime(aresponses): 128s """Test to make sure setting light sleep works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 128s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s sleep_time = datetime.now() + timedelta(minutes=2) 128s > await device.fan( 128s sleep=sleep_time, 128s ) 128s 128s tests/test_aiomodernforms.py:311: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 128s await self.request(commands=commands) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 128s await self.update() 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s ______________________________ test_fan_sleep_int ______________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_fan_sleep_int(aresponses): 128s """Test to make sure setting light sleep works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 128s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s sleep_time = datetime.now() + timedelta(seconds=120) 128s > await device.fan( 128s sleep=120, 128s ) 128s 128s tests/test_aiomodernforms.py:340: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 128s await self.request(commands=commands) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 128s await self.update() 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s _____________________________ test_fan_sleep_clear _____________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_fan_sleep_clear(aresponses): 128s """Test to make sure setting light sleep works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 128s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s # check to clear timer 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.fan( 128s sleep=0, 128s ) 128s 128s tests/test_aiomodernforms.py:369: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 128s await self.request(commands=commands) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 128s await self.update() 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does notE: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.bVbjYg/autopkgtest_tmp/build; python3.12 -m pytest -v 128s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13 128s make: *** [/tmp/gpXyzJpfqs/run:4: pybuild-autopkgtest] Error 25 128s pybuild-autopkgtest: error: /tmp/gpXyzJpfqs/run pybuild-autopkgtest returned exit code 2 128s support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s __________________________________ test_away ___________________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_away(aresponses): 128s """Test to make sure setting away mode works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_AWAY_MODE in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_AWAY_MODE] = data[aiomodernforms.COMMAND_AWAY_MODE] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:395: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s ____________________________ test_adaptive_learning ____________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_adaptive_learning(aresponses): 128s """Test to make sure setting adaptive learning mode works.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async def evaluate_request(request): 128s data = await request.json() 128s assert aiomodernforms.COMMAND_ADAPTIVE_LEARNING in data 128s modified_response = basic_response.copy() 128s modified_response[STATE_ADAPTIVE_LEARNING] = data[ 128s aiomodernforms.COMMAND_ADAPTIVE_LEARNING 128s ] 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text=json.dumps(modified_response), 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:422: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s _____________________________ test_invalid_setting _____________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_invalid_setting(aresponses): 128s """Test to make sure setting invalid settings are rejected.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:434: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s ____________________________ test_connection_error _____________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_connection_error(aresponses): 128s """Test to make validate proper connection error handling.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s with pytest.raises(aiomodernforms.ModernFormsConnectionError): 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:502: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s ______________________________ test_server_error _______________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_server_error(aresponses): 128s """Test to make validate proper server error handling.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add( 128s "fan.local", 128s "/mf", 128s "POST", 128s response=aresponses.Response(text="error", status=500), 128s ) 128s 128s with pytest.raises(aiomodernforms.ModernFormsError): 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:518: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s _________________________________ test_reboot __________________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_reboot(aresponses): 128s """Test how reboot is handled.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 128s 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:528: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s _____________________________ test_empty_response ______________________________ 128s 128s aresponses = 128s 128s @pytest.mark.asyncio 128s async def test_empty_response(aresponses): 128s """Test for an Empty Response.""" 128s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 128s 128s async def send_empty_state(request): 128s await request.json() 128s return aresponses.Response( 128s status=200, 128s content_type="application/json", 128s text="{}", 128s ) 128s 128s aresponses.add("fan.local", "/mf", "POST", response=send_empty_state) 128s with pytest.raises(ModernFormsConnectionError): 128s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 128s > await device.update() 128s 128s tests/test_aiomodernforms.py:568: 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 128s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 128s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 128s ret = await target(*args, **kwargs) 128s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 128s 128s self = 128s commands = {'queryStaticShadowData': True} 128s 128s @backoff.on_exception( 128s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 128s ) 128s async def _request(self, commands: Optional[dict] = None) -> Any: 128s """Handle a request to a Modern Forms Fan device.""" 128s scheme = "https" if self._tls else "http" 128s url = URL.build( 128s scheme=scheme, 128s host=self._host, 128s port=self._port, 128s path=self._base_path, 128s ) 128s 128s auth = None 128s if self._username and self._password: 128s auth = aiohttp.BasicAuth(self._username, self._password) 128s 128s headers = { 128s "User-Agent": self._user_agent, 128s "Accept": "application/json", 128s } 128s 128s if self._session is None: 128s self._session = aiohttp.ClientSession() 128s self._close_session = True 128s 128s # If updating the state, always request for a state response 128s if commands is None: 128s commands = {COMMAND_QUERY_STATUS: True} 128s 128s try: 128s > with async_timeout.timeout(self._request_timeout): 128s E TypeError: 'Timeout' object does not support the context manager protocol 128s 128s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 128s =========================== short test summary info ============================ 128s FAILED tests/test_aiomodernforms.py::test_basic_status - TypeError: 'Timeout'... 128s FAILED tests/test_aiomodernforms.py::test_command - TypeError: 'Timeout' obje... 128s FAILED tests/test_aiomodernforms.py::test_light - TypeError: 'Timeout' object... 128s FAILED tests/test_aiomodernforms.py::test_light_sleep_datetime - TypeError: '... 128s FAILED tests/test_aiomodernforms.py::test_light_sleep_int - TypeError: 'Timeo... 128s FAILED tests/test_aiomodernforms.py::test_light_sleep_clear - TypeError: 'Tim... 128s FAILED tests/test_aiomodernforms.py::test_fan - TypeError: 'Timeout' object d... 128s FAILED tests/test_aiomodernforms.py::test_fan_sleep_datetime - TypeError: 'Ti... 128s FAILED tests/test_aiomodernforms.py::test_fan_sleep_int - TypeError: 'Timeout... 128s FAILED tests/test_aiomodernforms.py::test_fan_sleep_clear - TypeError: 'Timeo... 128s FAILED tests/test_aiomodernforms.py::test_away - TypeError: 'Timeout' object ... 128s FAILED tests/test_aiomodernforms.py::test_adaptive_learning - TypeError: 'Tim... 128s FAILED tests/test_aiomodernforms.py::test_invalid_setting - TypeError: 'Timeo... 128s FAILED tests/test_aiomodernforms.py::test_connection_error - TypeError: 'Time... 128s FAILED tests/test_aiomodernforms.py::test_server_error - TypeError: 'Timeout'... 128s FAILED tests/test_aiomodernforms.py::test_reboot - TypeError: 'Timeout' objec... 128s FAILED tests/test_aiomodernforms.py::test_empty_response - TypeError: 'Timeou... 128s ========================= 17 failed, 2 passed in 0.58s ========================= 128s autopkgtest [17:15:05]: test pybuild-autopkgtest: -----------------------] 130s pybuild-autopkgtest FAIL non-zero exit status 25 130s autopkgtest [17:15:07]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 130s autopkgtest [17:15:07]: @@@@@@@@@@@@@@@@@@@@ summary 130s pybuild-autopkgtest FAIL non-zero exit status 25 134s nova [W] Using flock in prodstack6-ppc64el 134s Creating nova instance adt-plucky-ppc64el-python-aiomodernforms-20241227-171257-juju-7f2275-prod-proposed-migration-environment-20-cb47912e-82ea-409e-84c0-ca9b7dc22dfb from image adt/ubuntu-plucky-ppc64el-server-20241227.img (UUID d18a0f1f-b400-4884-a0ad-b86f0829d4e5)... 134s nova [W] Timed out waiting for ae9baf87-8dc1-4a36-a8f5-b4013caa0e0a to get deleted.