0s autopkgtest [20:31:34]: starting date and time: 2024-11-23 20:31:34+0000 0s autopkgtest [20:31:34]: git checkout: 6408f825 Correct logic in old-systemd fallback code 0s autopkgtest [20:31:34]: host juju-7f2275-prod-proposed-migration-environment-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.c9ehncmj/out --timeout-copy=6000 --setup-commands 'ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_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\n" >> /etc/environment' --apt-pocket=proposed=src:python-aiohttp --apt-upgrade python-aiomodernforms --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=python-aiohttp/3.10.10-2build1 -- lxd -r lxd-armhf-10.145.243.201 lxd-armhf-10.145.243.201:autopkgtest/ubuntu/plucky/armhf 53s autopkgtest [20:32:27]: testbed dpkg architecture: armhf 55s autopkgtest [20:32:29]: testbed apt version: 2.9.8 55s autopkgtest [20:32:29]: @@@@@@@@@@@@@@@@@@@@ test bed setup 62s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [73.9 kB] 63s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [13.6 kB] 63s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [930 kB] 63s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/restricted Sources [9704 B] 63s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [54.8 kB] 63s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf Packages [63.6 kB] 63s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/restricted armhf Packages [756 B] 63s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/universe armhf Packages [727 kB] 63s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse armhf Packages [5924 B] 63s Fetched 1879 kB in 1s (2047 kB/s) 63s Reading package lists... 81s tee: /proc/self/fd/2: Permission denied 102s Hit:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease 102s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 102s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 102s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 104s Reading package lists... 104s Reading package lists... 104s Building dependency tree... 104s Reading state information... 105s Calculating upgrade... 105s The following packages will be upgraded: 105s bash debconf debconf-i18n python3-debconf vim-common vim-tiny xxd 105s 7 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 105s Need to get 2161 kB of archives. 105s After this operation, 4096 B of additional disk space will be used. 105s Get:1 http://ftpmaster.internal/ubuntu plucky/main armhf bash armhf 5.2.32-1ubuntu2 [673 kB] 106s Get:2 http://ftpmaster.internal/ubuntu plucky/main armhf debconf-i18n all 1.5.87ubuntu1 [204 kB] 106s Get:3 http://ftpmaster.internal/ubuntu plucky/main armhf python3-debconf all 1.5.87ubuntu1 [4156 B] 106s Get:4 http://ftpmaster.internal/ubuntu plucky/main armhf debconf all 1.5.87ubuntu1 [124 kB] 106s Get:5 http://ftpmaster.internal/ubuntu plucky/main armhf vim-tiny armhf 2:9.1.0861-1ubuntu1 [694 kB] 106s Get:6 http://ftpmaster.internal/ubuntu plucky/main armhf vim-common all 2:9.1.0861-1ubuntu1 [395 kB] 106s Get:7 http://ftpmaster.internal/ubuntu plucky/main armhf xxd armhf 2:9.1.0861-1ubuntu1 [67.0 kB] 106s Preconfiguring packages ... 106s Fetched 2161 kB in 1s (3320 kB/s) 106s (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 ... 59616 files and directories currently installed.) 107s Preparing to unpack .../bash_5.2.32-1ubuntu2_armhf.deb ... 107s Unpacking bash (5.2.32-1ubuntu2) over (5.2.32-1ubuntu1) ... 107s Setting up bash (5.2.32-1ubuntu2) ... 107s update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode 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 ... 59616 files and directories currently installed.) 107s Preparing to unpack .../debconf-i18n_1.5.87ubuntu1_all.deb ... 107s Unpacking debconf-i18n (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 107s Preparing to unpack .../python3-debconf_1.5.87ubuntu1_all.deb ... 107s Unpacking python3-debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 107s Preparing to unpack .../debconf_1.5.87ubuntu1_all.deb ... 107s Unpacking debconf (1.5.87ubuntu1) over (1.5.86ubuntu1) ... 107s Setting up debconf (1.5.87ubuntu1) ... 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 ... 59616 files and directories currently installed.) 107s Preparing to unpack .../vim-tiny_2%3a9.1.0861-1ubuntu1_armhf.deb ... 107s Unpacking vim-tiny (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 107s Preparing to unpack .../vim-common_2%3a9.1.0861-1ubuntu1_all.deb ... 107s Unpacking vim-common (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 107s Preparing to unpack .../xxd_2%3a9.1.0861-1ubuntu1_armhf.deb ... 107s Unpacking xxd (2:9.1.0861-1ubuntu1) over (2:9.1.0777-1ubuntu1) ... 107s Setting up python3-debconf (1.5.87ubuntu1) ... 107s Setting up debconf-i18n (1.5.87ubuntu1) ... 107s Setting up xxd (2:9.1.0861-1ubuntu1) ... 107s Setting up vim-common (2:9.1.0861-1ubuntu1) ... 107s Setting up vim-tiny (2:9.1.0861-1ubuntu1) ... 107s Processing triggers for debianutils (5.21) ... 108s Processing triggers for install-info (7.1.1-1) ... 108s Processing triggers for man-db (2.13.0-1) ... 109s Reading package lists... 109s Building dependency tree... 109s Reading state information... 110s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 113s autopkgtest [20:33:27]: rebooting testbed after setup commands that affected boot 193s autopkgtest [20:34:47]: testbed running kernel: Linux 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 18:12:14 UTC 2 221s autopkgtest [20:35:15]: @@@@@@@@@@@@@@@@@@@@ apt-source python-aiomodernforms 231s Get:1 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (dsc) [2407 B] 231s Get:2 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (tar) [34.5 kB] 231s Get:3 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (diff) [2120 B] 231s gpgv: Signature made Wed Aug 14 20:49:59 2024 UTC 231s gpgv: using RSA key A0B1A9F3508956130E7A425CD416AD15AC6B43FE 231s gpgv: Can't check signature: No public key 231s dpkg-source: warning: cannot verify inline signature for ./python-aiomodernforms_0.1.8-2.dsc: no acceptable signature found 231s autopkgtest [20:35:25]: testing package python-aiomodernforms version 0.1.8-2 234s autopkgtest [20:35:28]: build not needed 236s autopkgtest [20:35:30]: test pybuild-autopkgtest: preparing testbed 249s Reading package lists... 249s Building dependency tree... 249s Reading state information... 250s Starting pkgProblemResolver with broken count: 1 250s Starting 2 pkgProblemResolver with broken count: 1 250s Investigating (0) python3-aiohttp:armhf < none -> 3.10.10-2build1 @un puN Ib > 250s Broken python3-aiohttp:armhf Depends on python3-yarl:armhf < none -> 1.9.4-1 @un puN > (>= 1.12.0) 250s Considering python3-yarl:armhf 3 as a solution to python3-aiohttp:armhf 2 250s Re-Instated python3-yarl:armhf 250s Broken python3-aiohttp:armhf Depends on python3-async-timeout:armhf < none | 4.0.3-1 @un uH > (>= 4.0.1) 250s Considering python3-async-timeout:armhf 0 as a solution to python3-aiohttp:armhf 2 250s Re-Instated python3-async-timeout:armhf 250s Broken python3-aiohttp:armhf Depends on python3-aiohappyeyeballs:armhf < none | 2.4.3-1 @un uH > 250s Considering python3-aiohappyeyeballs:armhf 1 as a solution to python3-aiohttp:armhf 2 250s Re-Instated python3-aiohappyeyeballs:armhf 250s Broken python3-aiohttp:armhf Depends on python3-aiosignal:armhf < none | 1.3.1-1 @un uH > 250s Considering python3-aiosignal:armhf 1 as a solution to python3-aiohttp:armhf 2 250s Re-Instated python3-frozenlist:armhf 250s Re-Instated python3-aiosignal:armhf 250s Done 250s Some packages could not be installed. This may mean that you have 250s requested an impossible situation or if you are using the unstable 250s distribution that some required packages have not yet been created 250s or been moved out of Incoming. 250s The following information may help to resolve the situation: 250s 250s The following packages have unmet dependencies: 250s python3-aiohttp : Depends: python3-yarl (>= 1.12.0) but 1.9.4-1 is to be installed 250s E: Unable to correct problems, you have held broken packages. 250s autopkgtest: WARNING: Test dependencies are unsatisfiable with using apt pinning. Retrying with using all packages from plucky-proposed 256s Reading package lists... 257s Building dependency tree... 257s Reading state information... 257s Starting pkgProblemResolver with broken count: 0 257s Starting 2 pkgProblemResolver with broken count: 0 257s Done 258s The following additional packages will be installed: 258s autoconf automake autopoint autotools-dev build-essential cpp cpp-14 258s cpp-14-arm-linux-gnueabihf cpp-arm-linux-gnueabihf debhelper debugedit 258s dh-autoreconf dh-python dh-strip-nondeterminism dwz g++ g++-14 258s g++-14-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-14 258s gcc-14-arm-linux-gnueabihf gcc-arm-linux-gnueabihf gettext intltool-debian 258s libarchive-zip-perl libasan8 libc-dev-bin libc6-dev libcc1-0 libcrypt-dev 258s libdebhelper-perl libfile-stripnondeterminism-perl libgcc-14-dev libgomp1 258s libisl23 libjs-jquery libjs-jquery-hotkeys libjs-jquery-isonscreen 258s libjs-jquery-metadata libjs-jquery-tablesorter 258s libjs-jquery-throttle-debounce libmpc3 libpython3-stdlib 258s libpython3.13-minimal libpython3.13-stdlib libstdc++-14-dev libtool 258s libubsan1 linux-libc-dev m4 openstack-pkg-tools po-debconf 258s pybuild-plugin-pyproject python3 python3-aiohappyeyeballs python3-aiohttp 258s python3-aiomodernforms python3-aiosignal python3-all python3-aresponses 258s python3-async-generator python3-async-timeout python3-backoff python3-build 258s python3-coverage python3-frozenlist python3-iniconfig python3-installer 258s python3-minimal python3-multidict python3-mypy python3-mypy-extensions 258s python3-packaging python3-pip python3-pluggy python3-psutil 258s python3-pyproject-hooks python3-pytest python3-pytest-asyncio 258s python3-pytest-cov python3-toml python3-wheel python3-yarl python3.13 258s python3.13-minimal rpcsvc-proto 258s Suggested packages: 258s autoconf-archive gnu-standards autoconf-doc cpp-doc gcc-14-locales 258s cpp-14-doc dh-make flit gcc-14-doc gcc-multilib manpages-dev flex bison gdb 258s gcc-doc gdb-arm-linux-gnueabihf gettext-doc libasprintf-dev libgettextpo-dev 258s libc-devtools glibc-doc libstdc++-14-doc libtool-doc gfortran 258s | fortran95-compiler gcj-jdk m4-doc libmail-box-perl python3-venv 258s python-build-doc python-coverage-doc python-installer-doc python3.13-venv 258s python3.13-doc binfmt-support 258s Recommended packages: 258s manpages manpages-dev libarchive-cpio-perl javascript-common libltdl-dev 258s autopkgtest madison-lite pristine-tar libmail-sendmail-perl python3-aiodns 258s python3-lxml python3-orjson python3-dev libjs-sphinxdoc 258s The following NEW packages will be installed: 258s autoconf automake autopkgtest-satdep autopoint autotools-dev build-essential 258s cpp cpp-14 cpp-14-arm-linux-gnueabihf cpp-arm-linux-gnueabihf debhelper 258s debugedit dh-autoreconf dh-python dh-strip-nondeterminism dwz g++ g++-14 258s g++-14-arm-linux-gnueabihf g++-arm-linux-gnueabihf gcc gcc-14 258s gcc-14-arm-linux-gnueabihf gcc-arm-linux-gnueabihf gettext intltool-debian 258s libarchive-zip-perl libasan8 libc-dev-bin libc6-dev libcc1-0 libcrypt-dev 258s libdebhelper-perl libfile-stripnondeterminism-perl libgcc-14-dev libgomp1 258s libisl23 libjs-jquery libjs-jquery-hotkeys libjs-jquery-isonscreen 258s libjs-jquery-metadata libjs-jquery-tablesorter 258s libjs-jquery-throttle-debounce libmpc3 libpython3.13-minimal 258s libpython3.13-stdlib libstdc++-14-dev libtool libubsan1 linux-libc-dev m4 258s openstack-pkg-tools po-debconf pybuild-plugin-pyproject 258s python3-aiohappyeyeballs python3-aiohttp python3-aiomodernforms 258s python3-aiosignal python3-all python3-aresponses python3-async-generator 258s python3-async-timeout python3-backoff python3-build python3-coverage 258s python3-frozenlist python3-iniconfig python3-installer python3-multidict 258s python3-mypy python3-mypy-extensions python3-packaging python3-pip 258s python3-pluggy python3-psutil python3-pyproject-hooks python3-pytest 258s python3-pytest-asyncio python3-pytest-cov python3-toml python3-wheel 258s python3-yarl python3.13 python3.13-minimal rpcsvc-proto 258s The following packages will be upgraded: 258s libpython3-stdlib python3 python3-minimal 258s 3 upgraded, 85 newly installed, 0 to remove and 40 not upgraded. 258s Need to get 79.0 MB/79.0 MB of archives. 258s After this operation, 248 MB of additional disk space will be used. 258s Get:1 /tmp/autopkgtest.AUdN7y/1-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [856 B] 258s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf python3-minimal armhf 3.12.7-1 [27.4 kB] 259s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf python3 armhf 3.12.7-1 [24.0 kB] 259s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf libpython3-stdlib armhf 3.12.7-1 [10.0 kB] 259s Get:5 http://ftpmaster.internal/ubuntu plucky/main armhf libpython3.13-minimal armhf 3.13.0-2 [866 kB] 259s Get:6 http://ftpmaster.internal/ubuntu plucky/main armhf python3.13-minimal armhf 3.13.0-2 [1854 kB] 260s Get:7 http://ftpmaster.internal/ubuntu plucky/main armhf libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 260s Get:8 http://ftpmaster.internal/ubuntu plucky/universe armhf libjs-jquery-hotkeys all 0~20130707+git2d51e3a9+dfsg-2.1 [11.5 kB] 260s Get:9 http://ftpmaster.internal/ubuntu plucky/main armhf m4 armhf 1.4.19-4build1 [235 kB] 260s Get:10 http://ftpmaster.internal/ubuntu plucky/main armhf autoconf all 2.72-3 [382 kB] 260s Get:11 http://ftpmaster.internal/ubuntu plucky/main armhf autotools-dev all 20220109.1 [44.9 kB] 260s Get:12 http://ftpmaster.internal/ubuntu plucky/main armhf automake all 1:1.16.5-1.3ubuntu1 [558 kB] 260s Get:13 http://ftpmaster.internal/ubuntu plucky/main armhf autopoint all 0.22.5-2 [616 kB] 260s Get:14 http://ftpmaster.internal/ubuntu plucky/main armhf libc-dev-bin armhf 2.40-1ubuntu3 [19.2 kB] 260s Get:15 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf linux-libc-dev armhf 6.11.0-9.9 [1627 kB] 261s Get:16 http://ftpmaster.internal/ubuntu plucky/main armhf libcrypt-dev armhf 1:4.4.36-5 [119 kB] 261s Get:17 http://ftpmaster.internal/ubuntu plucky/main armhf rpcsvc-proto armhf 1.4.2-0ubuntu7 [62.2 kB] 261s Get:18 http://ftpmaster.internal/ubuntu plucky/main armhf libc6-dev armhf 2.40-1ubuntu3 [1370 kB] 261s Get:19 http://ftpmaster.internal/ubuntu plucky/main armhf libisl23 armhf 0.27-1 [546 kB] 261s Get:20 http://ftpmaster.internal/ubuntu plucky/main armhf libmpc3 armhf 1.3.1-1build2 [47.1 kB] 261s Get:21 http://ftpmaster.internal/ubuntu plucky/main armhf cpp-14-arm-linux-gnueabihf armhf 14.2.0-8ubuntu1 [9219 kB] 262s Get:22 http://ftpmaster.internal/ubuntu plucky/main armhf cpp-14 armhf 14.2.0-8ubuntu1 [1032 B] 262s Get:23 http://ftpmaster.internal/ubuntu plucky/main armhf cpp-arm-linux-gnueabihf armhf 4:14.1.0-2ubuntu1 [5464 B] 262s Get:24 http://ftpmaster.internal/ubuntu plucky/main armhf cpp armhf 4:14.1.0-2ubuntu1 [22.4 kB] 262s Get:25 http://ftpmaster.internal/ubuntu plucky/main armhf libcc1-0 armhf 14.2.0-8ubuntu1 [43.3 kB] 262s Get:26 http://ftpmaster.internal/ubuntu plucky/main armhf libgomp1 armhf 14.2.0-8ubuntu1 [125 kB] 262s Get:27 http://ftpmaster.internal/ubuntu plucky/main armhf libasan8 armhf 14.2.0-8ubuntu1 [2901 kB] 262s Get:28 http://ftpmaster.internal/ubuntu plucky/main armhf libubsan1 armhf 14.2.0-8ubuntu1 [1150 kB] 262s Get:29 http://ftpmaster.internal/ubuntu plucky/main armhf libgcc-14-dev armhf 14.2.0-8ubuntu1 [897 kB] 262s Get:30 http://ftpmaster.internal/ubuntu plucky/main armhf gcc-14-arm-linux-gnueabihf armhf 14.2.0-8ubuntu1 [18.0 MB] 263s Get:31 http://ftpmaster.internal/ubuntu plucky/main armhf gcc-14 armhf 14.2.0-8ubuntu1 [498 kB] 263s Get:32 http://ftpmaster.internal/ubuntu plucky/main armhf gcc-arm-linux-gnueabihf armhf 4:14.1.0-2ubuntu1 [1222 B] 263s Get:33 http://ftpmaster.internal/ubuntu plucky/main armhf gcc armhf 4:14.1.0-2ubuntu1 [5002 B] 263s Get:34 http://ftpmaster.internal/ubuntu plucky/main armhf libstdc++-14-dev armhf 14.2.0-8ubuntu1 [2569 kB] 263s Get:35 http://ftpmaster.internal/ubuntu plucky/main armhf g++-14-arm-linux-gnueabihf armhf 14.2.0-8ubuntu1 [10.5 MB] 263s Get:36 http://ftpmaster.internal/ubuntu plucky/main armhf g++-14 armhf 14.2.0-8ubuntu1 [19.9 kB] 263s Get:37 http://ftpmaster.internal/ubuntu plucky/main armhf g++-arm-linux-gnueabihf armhf 4:14.1.0-2ubuntu1 [968 B] 263s Get:38 http://ftpmaster.internal/ubuntu plucky/main armhf g++ armhf 4:14.1.0-2ubuntu1 [1084 B] 263s Get:39 http://ftpmaster.internal/ubuntu plucky/main armhf build-essential armhf 12.10ubuntu1 [4928 B] 263s Get:40 http://ftpmaster.internal/ubuntu plucky/main armhf libdebhelper-perl all 13.20ubuntu1 [94.2 kB] 263s Get:41 http://ftpmaster.internal/ubuntu plucky/main armhf libtool all 2.4.7-8 [166 kB] 263s Get:42 http://ftpmaster.internal/ubuntu plucky/main armhf dh-autoreconf all 20 [16.1 kB] 263s Get:43 http://ftpmaster.internal/ubuntu plucky/main armhf libarchive-zip-perl all 1.68-1 [90.2 kB] 263s Get:44 http://ftpmaster.internal/ubuntu plucky/main armhf libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 263s Get:45 http://ftpmaster.internal/ubuntu plucky/main armhf dh-strip-nondeterminism all 1.14.0-1 [5058 B] 263s Get:46 http://ftpmaster.internal/ubuntu plucky/main armhf debugedit armhf 1:5.1-1 [46.5 kB] 263s Get:47 http://ftpmaster.internal/ubuntu plucky/main armhf dwz armhf 0.15-1build6 [116 kB] 263s Get:48 http://ftpmaster.internal/ubuntu plucky/main armhf gettext armhf 0.22.5-2 [995 kB] 263s Get:49 http://ftpmaster.internal/ubuntu plucky/main armhf intltool-debian all 0.35.0+20060710.6 [23.2 kB] 263s Get:50 http://ftpmaster.internal/ubuntu plucky/main armhf po-debconf all 1.0.21+nmu1 [233 kB] 263s Get:51 http://ftpmaster.internal/ubuntu plucky/main armhf debhelper all 13.20ubuntu1 [893 kB] 263s Get:52 http://ftpmaster.internal/ubuntu plucky/universe armhf dh-python all 6.20241024 [112 kB] 263s Get:53 http://ftpmaster.internal/ubuntu plucky/universe armhf libjs-jquery-metadata all 12-4 [6582 B] 263s Get:54 http://ftpmaster.internal/ubuntu plucky/universe armhf libjs-jquery-tablesorter all 1:2.31.3+dfsg1-4 [192 kB] 263s Get:55 http://ftpmaster.internal/ubuntu plucky/universe armhf libjs-jquery-throttle-debounce all 1.1+dfsg.1-2 [12.5 kB] 263s Get:56 http://ftpmaster.internal/ubuntu plucky/main armhf libpython3.13-stdlib armhf 3.13.0-2 [1972 kB] 263s Get:57 http://ftpmaster.internal/ubuntu plucky/main armhf python3-packaging all 24.2-1 [51.5 kB] 263s Get:58 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 263s Get:59 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-toml all 0.10.2-1 [16.5 kB] 263s Get:60 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-wheel all 0.45.0-1 [57.7 kB] 263s Get:61 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-build all 1.2.2-1 [31.0 kB] 263s Get:62 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 263s Get:63 http://ftpmaster.internal/ubuntu plucky/universe armhf pybuild-plugin-pyproject all 6.20241024 [1728 B] 263s Get:64 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-aiohappyeyeballs all 2.4.3-1 [10.5 kB] 264s Get:65 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-multidict armhf 6.1.0-1build1 [34.6 kB] 264s Get:66 http://ftpmaster.internal/ubuntu plucky-proposed/universe armhf python3-yarl armhf 1.13.1-1build1 [111 kB] 264s Get:67 http://ftpmaster.internal/ubuntu plucky-proposed/universe armhf python3-async-timeout all 5.0.1-1 [6830 B] 264s Get:68 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-frozenlist armhf 1.5.0-1build1 [56.1 kB] 264s Get:69 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-aiosignal all 1.3.1-1 [5172 B] 264s Get:70 http://ftpmaster.internal/ubuntu plucky-proposed/universe armhf python3-aiohttp armhf 3.10.10-2build1 [330 kB] 264s Get:71 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-backoff all 2.2.1-2 [17.9 kB] 264s Get:72 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-aiomodernforms all 0.1.8-2 [8106 B] 264s Get:73 http://ftpmaster.internal/ubuntu plucky/main armhf python3.13 armhf 3.13.0-2 [719 kB] 264s Get:74 http://ftpmaster.internal/ubuntu plucky-proposed/main armhf python3-all armhf 3.12.7-1 [890 B] 264s Get:75 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-async-generator all 1.10-4 [17.5 kB] 264s Get:76 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-iniconfig all 1.1.1-2 [6024 B] 264s Get:77 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-pluggy all 1.5.0-1 [21.0 kB] 264s Get:78 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-pytest all 8.3.3-1 [251 kB] 264s Get:79 http://ftpmaster.internal/ubuntu plucky-proposed/universe armhf python3-pytest-asyncio all 0.24.0a1-1 [15.8 kB] 264s Get:80 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-aresponses all 3.0.0-2 [13.8 kB] 264s Get:81 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-coverage armhf 7.4.4+dfsg1-0ubuntu3 [148 kB] 264s Get:82 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-mypy-extensions all 1.0.0-1 [6148 B] 264s Get:83 http://ftpmaster.internal/ubuntu plucky/main armhf python3-psutil armhf 5.9.8-2build3 [194 kB] 264s Get:84 http://ftpmaster.internal/ubuntu plucky-proposed/universe armhf python3-mypy armhf 1.13.0-2 [15.7 MB] 264s Get:85 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-pip all 24.3.1+dfsg-1 [1404 kB] 264s Get:86 http://ftpmaster.internal/ubuntu plucky/universe armhf libjs-jquery-isonscreen all 1.2.0-1.1 [3244 B] 264s Get:87 http://ftpmaster.internal/ubuntu plucky/universe armhf python3-pytest-cov all 5.0.0-1 [21.3 kB] 264s Get:88 http://ftpmaster.internal/ubuntu plucky/universe armhf openstack-pkg-tools all 123ubuntu2 [94.5 kB] 265s Fetched 79.0 MB in 6s (13.3 MB/s) 265s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 59616 files and directories currently installed.) 265s Preparing to unpack .../python3-minimal_3.12.7-1_armhf.deb ... 265s Unpacking python3-minimal (3.12.7-1) over (3.12.6-0ubuntu1) ... 265s Setting up python3-minimal (3.12.7-1) ... 265s (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 59616 files and directories currently installed.) 265s Preparing to unpack .../00-python3_3.12.7-1_armhf.deb ... 265s Unpacking python3 (3.12.7-1) over (3.12.6-0ubuntu1) ... 265s Preparing to unpack .../01-libpython3-stdlib_3.12.7-1_armhf.deb ... 265s Unpacking libpython3-stdlib:armhf (3.12.7-1) over (3.12.6-0ubuntu1) ... 265s Selecting previously unselected package libpython3.13-minimal:armhf. 265s Preparing to unpack .../02-libpython3.13-minimal_3.13.0-2_armhf.deb ... 265s Unpacking libpython3.13-minimal:armhf (3.13.0-2) ... 265s Selecting previously unselected package python3.13-minimal. 265s Preparing to unpack .../03-python3.13-minimal_3.13.0-2_armhf.deb ... 265s Unpacking python3.13-minimal (3.13.0-2) ... 265s Selecting previously unselected package libjs-jquery. 265s Preparing to unpack .../04-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 265s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 265s Selecting previously unselected package libjs-jquery-hotkeys. 265s Preparing to unpack .../05-libjs-jquery-hotkeys_0~20130707+git2d51e3a9+dfsg-2.1_all.deb ... 265s Unpacking libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... 265s Selecting previously unselected package m4. 266s Preparing to unpack .../06-m4_1.4.19-4build1_armhf.deb ... 266s Unpacking m4 (1.4.19-4build1) ... 266s Selecting previously unselected package autoconf. 266s Preparing to unpack .../07-autoconf_2.72-3_all.deb ... 266s Unpacking autoconf (2.72-3) ... 266s Selecting previously unselected package autotools-dev. 266s Preparing to unpack .../08-autotools-dev_20220109.1_all.deb ... 266s Unpacking autotools-dev (20220109.1) ... 266s Selecting previously unselected package automake. 266s Preparing to unpack .../09-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 266s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 266s Selecting previously unselected package autopoint. 266s Preparing to unpack .../10-autopoint_0.22.5-2_all.deb ... 266s Unpacking autopoint (0.22.5-2) ... 266s Selecting previously unselected package libc-dev-bin. 266s Preparing to unpack .../11-libc-dev-bin_2.40-1ubuntu3_armhf.deb ... 266s Unpacking libc-dev-bin (2.40-1ubuntu3) ... 266s Selecting previously unselected package linux-libc-dev:armhf. 266s Preparing to unpack .../12-linux-libc-dev_6.11.0-9.9_armhf.deb ... 266s Unpacking linux-libc-dev:armhf (6.11.0-9.9) ... 266s Selecting previously unselected package libcrypt-dev:armhf. 266s Preparing to unpack .../13-libcrypt-dev_1%3a4.4.36-5_armhf.deb ... 266s Unpacking libcrypt-dev:armhf (1:4.4.36-5) ... 266s Selecting previously unselected package rpcsvc-proto. 266s Preparing to unpack .../14-rpcsvc-proto_1.4.2-0ubuntu7_armhf.deb ... 266s Unpacking rpcsvc-proto (1.4.2-0ubuntu7) ... 266s Selecting previously unselected package libc6-dev:armhf. 266s Preparing to unpack .../15-libc6-dev_2.40-1ubuntu3_armhf.deb ... 266s Unpacking libc6-dev:armhf (2.40-1ubuntu3) ... 266s Selecting previously unselected package libisl23:armhf. 266s Preparing to unpack .../16-libisl23_0.27-1_armhf.deb ... 266s Unpacking libisl23:armhf (0.27-1) ... 266s Selecting previously unselected package libmpc3:armhf. 266s Preparing to unpack .../17-libmpc3_1.3.1-1build2_armhf.deb ... 266s Unpacking libmpc3:armhf (1.3.1-1build2) ... 266s Selecting previously unselected package cpp-14-arm-linux-gnueabihf. 266s Preparing to unpack .../18-cpp-14-arm-linux-gnueabihf_14.2.0-8ubuntu1_armhf.deb ... 266s Unpacking cpp-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package cpp-14. 267s Preparing to unpack .../19-cpp-14_14.2.0-8ubuntu1_armhf.deb ... 267s Unpacking cpp-14 (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package cpp-arm-linux-gnueabihf. 267s Preparing to unpack .../20-cpp-arm-linux-gnueabihf_4%3a14.1.0-2ubuntu1_armhf.deb ... 267s Unpacking cpp-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 267s Selecting previously unselected package cpp. 267s Preparing to unpack .../21-cpp_4%3a14.1.0-2ubuntu1_armhf.deb ... 267s Unpacking cpp (4:14.1.0-2ubuntu1) ... 267s Selecting previously unselected package libcc1-0:armhf. 267s Preparing to unpack .../22-libcc1-0_14.2.0-8ubuntu1_armhf.deb ... 267s Unpacking libcc1-0:armhf (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package libgomp1:armhf. 267s Preparing to unpack .../23-libgomp1_14.2.0-8ubuntu1_armhf.deb ... 267s Unpacking libgomp1:armhf (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package libasan8:armhf. 267s Preparing to unpack .../24-libasan8_14.2.0-8ubuntu1_armhf.deb ... 267s Unpacking libasan8:armhf (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package libubsan1:armhf. 267s Preparing to unpack .../25-libubsan1_14.2.0-8ubuntu1_armhf.deb ... 267s Unpacking libubsan1:armhf (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package libgcc-14-dev:armhf. 267s Preparing to unpack .../26-libgcc-14-dev_14.2.0-8ubuntu1_armhf.deb ... 267s Unpacking libgcc-14-dev:armhf (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package gcc-14-arm-linux-gnueabihf. 267s Preparing to unpack .../27-gcc-14-arm-linux-gnueabihf_14.2.0-8ubuntu1_armhf.deb ... 267s Unpacking gcc-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package gcc-14. 267s Preparing to unpack .../28-gcc-14_14.2.0-8ubuntu1_armhf.deb ... 267s Unpacking gcc-14 (14.2.0-8ubuntu1) ... 267s Selecting previously unselected package gcc-arm-linux-gnueabihf. 268s Preparing to unpack .../29-gcc-arm-linux-gnueabihf_4%3a14.1.0-2ubuntu1_armhf.deb ... 268s Unpacking gcc-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 268s Selecting previously unselected package gcc. 268s Preparing to unpack .../30-gcc_4%3a14.1.0-2ubuntu1_armhf.deb ... 268s Unpacking gcc (4:14.1.0-2ubuntu1) ... 268s Selecting previously unselected package libstdc++-14-dev:armhf. 268s Preparing to unpack .../31-libstdc++-14-dev_14.2.0-8ubuntu1_armhf.deb ... 268s Unpacking libstdc++-14-dev:armhf (14.2.0-8ubuntu1) ... 268s Selecting previously unselected package g++-14-arm-linux-gnueabihf. 268s Preparing to unpack .../32-g++-14-arm-linux-gnueabihf_14.2.0-8ubuntu1_armhf.deb ... 268s Unpacking g++-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 268s Selecting previously unselected package g++-14. 268s Preparing to unpack .../33-g++-14_14.2.0-8ubuntu1_armhf.deb ... 268s Unpacking g++-14 (14.2.0-8ubuntu1) ... 268s Selecting previously unselected package g++-arm-linux-gnueabihf. 268s Preparing to unpack .../34-g++-arm-linux-gnueabihf_4%3a14.1.0-2ubuntu1_armhf.deb ... 268s Unpacking g++-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 268s Selecting previously unselected package g++. 268s Preparing to unpack .../35-g++_4%3a14.1.0-2ubuntu1_armhf.deb ... 268s Unpacking g++ (4:14.1.0-2ubuntu1) ... 268s Selecting previously unselected package build-essential. 268s Preparing to unpack .../36-build-essential_12.10ubuntu1_armhf.deb ... 268s Unpacking build-essential (12.10ubuntu1) ... 268s Selecting previously unselected package libdebhelper-perl. 268s Preparing to unpack .../37-libdebhelper-perl_13.20ubuntu1_all.deb ... 268s Unpacking libdebhelper-perl (13.20ubuntu1) ... 268s Selecting previously unselected package libtool. 268s Preparing to unpack .../38-libtool_2.4.7-8_all.deb ... 268s Unpacking libtool (2.4.7-8) ... 268s Selecting previously unselected package dh-autoreconf. 268s Preparing to unpack .../39-dh-autoreconf_20_all.deb ... 268s Unpacking dh-autoreconf (20) ... 268s Selecting previously unselected package libarchive-zip-perl. 269s Preparing to unpack .../40-libarchive-zip-perl_1.68-1_all.deb ... 269s Unpacking libarchive-zip-perl (1.68-1) ... 269s Selecting previously unselected package libfile-stripnondeterminism-perl. 269s Preparing to unpack .../41-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 269s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 269s Selecting previously unselected package dh-strip-nondeterminism. 269s Preparing to unpack .../42-dh-strip-nondeterminism_1.14.0-1_all.deb ... 269s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 269s Selecting previously unselected package debugedit. 269s Preparing to unpack .../43-debugedit_1%3a5.1-1_armhf.deb ... 269s Unpacking debugedit (1:5.1-1) ... 269s Selecting previously unselected package dwz. 269s Preparing to unpack .../44-dwz_0.15-1build6_armhf.deb ... 269s Unpacking dwz (0.15-1build6) ... 269s Selecting previously unselected package gettext. 269s Preparing to unpack .../45-gettext_0.22.5-2_armhf.deb ... 269s Unpacking gettext (0.22.5-2) ... 269s Selecting previously unselected package intltool-debian. 269s Preparing to unpack .../46-intltool-debian_0.35.0+20060710.6_all.deb ... 269s Unpacking intltool-debian (0.35.0+20060710.6) ... 269s Selecting previously unselected package po-debconf. 269s Preparing to unpack .../47-po-debconf_1.0.21+nmu1_all.deb ... 269s Unpacking po-debconf (1.0.21+nmu1) ... 269s Selecting previously unselected package debhelper. 269s Preparing to unpack .../48-debhelper_13.20ubuntu1_all.deb ... 269s Unpacking debhelper (13.20ubuntu1) ... 269s Selecting previously unselected package dh-python. 269s Preparing to unpack .../49-dh-python_6.20241024_all.deb ... 269s Unpacking dh-python (6.20241024) ... 269s Selecting previously unselected package libjs-jquery-metadata. 269s Preparing to unpack .../50-libjs-jquery-metadata_12-4_all.deb ... 269s Unpacking libjs-jquery-metadata (12-4) ... 269s Selecting previously unselected package libjs-jquery-tablesorter. 269s Preparing to unpack .../51-libjs-jquery-tablesorter_1%3a2.31.3+dfsg1-4_all.deb ... 269s Unpacking libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 269s Selecting previously unselected package libjs-jquery-throttle-debounce. 269s Preparing to unpack .../52-libjs-jquery-throttle-debounce_1.1+dfsg.1-2_all.deb ... 269s Unpacking libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 269s Selecting previously unselected package libpython3.13-stdlib:armhf. 269s Preparing to unpack .../53-libpython3.13-stdlib_3.13.0-2_armhf.deb ... 269s Unpacking libpython3.13-stdlib:armhf (3.13.0-2) ... 269s Selecting previously unselected package python3-packaging. 269s Preparing to unpack .../54-python3-packaging_24.2-1_all.deb ... 269s Unpacking python3-packaging (24.2-1) ... 269s Selecting previously unselected package python3-pyproject-hooks. 269s Preparing to unpack .../55-python3-pyproject-hooks_1.2.0-1_all.deb ... 269s Unpacking python3-pyproject-hooks (1.2.0-1) ... 269s Selecting previously unselected package python3-toml. 269s Preparing to unpack .../56-python3-toml_0.10.2-1_all.deb ... 269s Unpacking python3-toml (0.10.2-1) ... 269s Selecting previously unselected package python3-wheel. 269s Preparing to unpack .../57-python3-wheel_0.45.0-1_all.deb ... 269s Unpacking python3-wheel (0.45.0-1) ... 269s Selecting previously unselected package python3-build. 269s Preparing to unpack .../58-python3-build_1.2.2-1_all.deb ... 269s Unpacking python3-build (1.2.2-1) ... 269s Selecting previously unselected package python3-installer. 269s Preparing to unpack .../59-python3-installer_0.7.0+dfsg1-3_all.deb ... 269s Unpacking python3-installer (0.7.0+dfsg1-3) ... 269s Selecting previously unselected package pybuild-plugin-pyproject. 269s Preparing to unpack .../60-pybuild-plugin-pyproject_6.20241024_all.deb ... 269s Unpacking pybuild-plugin-pyproject (6.20241024) ... 269s Selecting previously unselected package python3-aiohappyeyeballs. 269s Preparing to unpack .../61-python3-aiohappyeyeballs_2.4.3-1_all.deb ... 269s Unpacking python3-aiohappyeyeballs (2.4.3-1) ... 269s Selecting previously unselected package python3-multidict. 269s Preparing to unpack .../62-python3-multidict_6.1.0-1build1_armhf.deb ... 269s Unpacking python3-multidict (6.1.0-1build1) ... 270s Selecting previously unselected package python3-yarl. 270s Preparing to unpack .../63-python3-yarl_1.13.1-1build1_armhf.deb ... 270s Unpacking python3-yarl (1.13.1-1build1) ... 270s Selecting previously unselected package python3-async-timeout. 270s Preparing to unpack .../64-python3-async-timeout_5.0.1-1_all.deb ... 270s Unpacking python3-async-timeout (5.0.1-1) ... 270s Selecting previously unselected package python3-frozenlist. 270s Preparing to unpack .../65-python3-frozenlist_1.5.0-1build1_armhf.deb ... 270s Unpacking python3-frozenlist (1.5.0-1build1) ... 270s Selecting previously unselected package python3-aiosignal. 270s Preparing to unpack .../66-python3-aiosignal_1.3.1-1_all.deb ... 270s Unpacking python3-aiosignal (1.3.1-1) ... 270s Selecting previously unselected package python3-aiohttp. 270s Preparing to unpack .../67-python3-aiohttp_3.10.10-2build1_armhf.deb ... 270s Unpacking python3-aiohttp (3.10.10-2build1) ... 270s Selecting previously unselected package python3-backoff. 270s Preparing to unpack .../68-python3-backoff_2.2.1-2_all.deb ... 270s Unpacking python3-backoff (2.2.1-2) ... 270s Selecting previously unselected package python3-aiomodernforms. 270s Preparing to unpack .../69-python3-aiomodernforms_0.1.8-2_all.deb ... 270s Unpacking python3-aiomodernforms (0.1.8-2) ... 270s Selecting previously unselected package python3.13. 270s Preparing to unpack .../70-python3.13_3.13.0-2_armhf.deb ... 270s Unpacking python3.13 (3.13.0-2) ... 270s Selecting previously unselected package python3-all. 270s Preparing to unpack .../71-python3-all_3.12.7-1_armhf.deb ... 270s Unpacking python3-all (3.12.7-1) ... 270s Selecting previously unselected package python3-async-generator. 270s Preparing to unpack .../72-python3-async-generator_1.10-4_all.deb ... 270s Unpacking python3-async-generator (1.10-4) ... 270s Selecting previously unselected package python3-iniconfig. 270s Preparing to unpack .../73-python3-iniconfig_1.1.1-2_all.deb ... 270s Unpacking python3-iniconfig (1.1.1-2) ... 270s Selecting previously unselected package python3-pluggy. 270s Preparing to unpack .../74-python3-pluggy_1.5.0-1_all.deb ... 270s Unpacking python3-pluggy (1.5.0-1) ... 270s Selecting previously unselected package python3-pytest. 270s Preparing to unpack .../75-python3-pytest_8.3.3-1_all.deb ... 270s Unpacking python3-pytest (8.3.3-1) ... 270s Selecting previously unselected package python3-pytest-asyncio. 270s Preparing to unpack .../76-python3-pytest-asyncio_0.24.0a1-1_all.deb ... 270s Unpacking python3-pytest-asyncio (0.24.0a1-1) ... 270s Selecting previously unselected package python3-aresponses. 270s Preparing to unpack .../77-python3-aresponses_3.0.0-2_all.deb ... 270s Unpacking python3-aresponses (3.0.0-2) ... 270s Selecting previously unselected package python3-coverage. 270s Preparing to unpack .../78-python3-coverage_7.4.4+dfsg1-0ubuntu3_armhf.deb ... 270s Unpacking python3-coverage (7.4.4+dfsg1-0ubuntu3) ... 270s Selecting previously unselected package python3-mypy-extensions. 270s Preparing to unpack .../79-python3-mypy-extensions_1.0.0-1_all.deb ... 270s Unpacking python3-mypy-extensions (1.0.0-1) ... 270s Selecting previously unselected package python3-psutil. 270s Preparing to unpack .../80-python3-psutil_5.9.8-2build3_armhf.deb ... 270s Unpacking python3-psutil (5.9.8-2build3) ... 270s Selecting previously unselected package python3-mypy. 270s Preparing to unpack .../81-python3-mypy_1.13.0-2_armhf.deb ... 270s Unpacking python3-mypy (1.13.0-2) ... 271s Selecting previously unselected package python3-pip. 271s Preparing to unpack .../82-python3-pip_24.3.1+dfsg-1_all.deb ... 271s Unpacking python3-pip (24.3.1+dfsg-1) ... 271s Selecting previously unselected package libjs-jquery-isonscreen. 271s Preparing to unpack .../83-libjs-jquery-isonscreen_1.2.0-1.1_all.deb ... 271s Unpacking libjs-jquery-isonscreen (1.2.0-1.1) ... 271s Selecting previously unselected package python3-pytest-cov. 271s Preparing to unpack .../84-python3-pytest-cov_5.0.0-1_all.deb ... 271s Unpacking python3-pytest-cov (5.0.0-1) ... 271s Selecting previously unselected package openstack-pkg-tools. 271s Preparing to unpack .../85-openstack-pkg-tools_123ubuntu2_all.deb ... 271s Unpacking openstack-pkg-tools (123ubuntu2) ... 271s Selecting previously unselected package autopkgtest-satdep. 271s Preparing to unpack .../86-1-autopkgtest-satdep.deb ... 271s Unpacking autopkgtest-satdep (0) ... 271s Setting up libarchive-zip-perl (1.68-1) ... 271s Setting up libdebhelper-perl (13.20ubuntu1) ... 271s Setting up linux-libc-dev:armhf (6.11.0-9.9) ... 271s Setting up m4 (1.4.19-4build1) ... 271s Setting up libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 271s Setting up libgomp1:armhf (14.2.0-8ubuntu1) ... 271s Setting up libpython3.13-minimal:armhf (3.13.0-2) ... 271s Setting up autotools-dev (20220109.1) ... 271s Setting up rpcsvc-proto (1.4.2-0ubuntu7) ... 271s Setting up libmpc3:armhf (1.3.1-1build2) ... 271s Setting up autopoint (0.22.5-2) ... 271s Setting up autoconf (2.72-3) ... 271s Setting up libubsan1:armhf (14.2.0-8ubuntu1) ... 271s Setting up dwz (0.15-1build6) ... 271s Setting up libcrypt-dev:armhf (1:4.4.36-5) ... 271s Setting up libasan8:armhf (14.2.0-8ubuntu1) ... 271s Setting up debugedit (1:5.1-1) ... 271s Setting up python3.13-minimal (3.13.0-2) ... 272s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 272s Setting up libgcc-14-dev:armhf (14.2.0-8ubuntu1) ... 272s Setting up libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... 272s Setting up libisl23:armhf (0.27-1) ... 272s Setting up libc-dev-bin (2.40-1ubuntu3) ... 272s Setting up libpython3.13-stdlib:armhf (3.13.0-2) ... 272s Setting up libcc1-0:armhf (14.2.0-8ubuntu1) ... 272s Setting up libpython3-stdlib:armhf (3.12.7-1) ... 272s Setting up cpp-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 272s Setting up automake (1:1.16.5-1.3ubuntu1) ... 272s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 272s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 272s Setting up gettext (0.22.5-2) ... 272s Setting up python3.13 (3.13.0-2) ... 274s Setting up gcc-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 274s Setting up python3 (3.12.7-1) ... 274s Setting up python3-wheel (0.45.0-1) ... 275s Setting up python3-psutil (5.9.8-2build3) ... 275s Setting up python3-multidict (6.1.0-1build1) ... 275s Setting up python3-frozenlist (1.5.0-1build1) ... 276s Setting up python3-aiosignal (1.3.1-1) ... 276s Setting up intltool-debian (0.35.0+20060710.6) ... 276s Setting up python3-async-timeout (5.0.1-1) ... 276s Setting up python3-packaging (24.2-1) ... 276s Setting up python3-pyproject-hooks (1.2.0-1) ... 276s Setting up libjs-jquery-metadata (12-4) ... 276s Setting up libjs-jquery-isonscreen (1.2.0-1.1) ... 276s Setting up python3-aiohappyeyeballs (2.4.3-1) ... 277s Setting up python3-pip (24.3.1+dfsg-1) ... 279s Setting up python3-toml (0.10.2-1) ... 279s Setting up python3-installer (0.7.0+dfsg1-3) ... 279s Setting up cpp-14 (14.2.0-8ubuntu1) ... 279s Setting up python3-pluggy (1.5.0-1) ... 279s Setting up dh-strip-nondeterminism (1.14.0-1) ... 279s Setting up libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 279s Setting up python3-backoff (2.2.1-2) ... 280s Setting up libc6-dev:armhf (2.40-1ubuntu3) ... 280s Setting up python3-build (1.2.2-1) ... 280s Setting up libstdc++-14-dev:armhf (14.2.0-8ubuntu1) ... 280s Setting up python3-yarl (1.13.1-1build1) ... 280s Setting up cpp-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 280s Setting up gcc-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 280s Setting up dh-python (6.20241024) ... 280s Setting up python3-iniconfig (1.1.1-2) ... 280s Setting up g++-14-arm-linux-gnueabihf (14.2.0-8ubuntu1) ... 280s Setting up python3-async-generator (1.10-4) ... 281s Setting up pybuild-plugin-pyproject (6.20241024) ... 281s Setting up python3-pytest (8.3.3-1) ... 282s Setting up python3-mypy-extensions (1.0.0-1) ... 282s Setting up po-debconf (1.0.21+nmu1) ... 282s Setting up python3-aiohttp (3.10.10-2build1) ... 282s Setting up python3-all (3.12.7-1) ... 282s Setting up python3-coverage (7.4.4+dfsg1-0ubuntu3) ... 283s Setting up python3-pytest-cov (5.0.0-1) ... 283s Setting up python3-aiomodernforms (0.1.8-2) ... 283s Setting up openstack-pkg-tools (123ubuntu2) ... 283s Setting up gcc-14 (14.2.0-8ubuntu1) ... 283s Setting up python3-mypy (1.13.0-2) ... 286s Setting up python3-pytest-asyncio (0.24.0a1-1) ... 287s Setting up cpp (4:14.1.0-2ubuntu1) ... 287s Setting up g++-14 (14.2.0-8ubuntu1) ... 287s Setting up g++-arm-linux-gnueabihf (4:14.1.0-2ubuntu1) ... 287s Setting up python3-aresponses (3.0.0-2) ... 287s Setting up libtool (2.4.7-8) ... 287s Setting up gcc (4:14.1.0-2ubuntu1) ... 287s Setting up dh-autoreconf (20) ... 287s Setting up g++ (4:14.1.0-2ubuntu1) ... 287s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 287s Setting up build-essential (12.10ubuntu1) ... 287s Setting up debhelper (13.20ubuntu1) ... 287s Setting up autopkgtest-satdep (0) ... 287s Processing triggers for systemd (256.5-2ubuntu4) ... 287s Processing triggers for man-db (2.13.0-1) ... 288s Processing triggers for install-info (7.1.1-1) ... 288s Processing triggers for libc-bin (2.40-1ubuntu3) ... 307s (Reading database ... 67495 files and directories currently installed.) 307s Removing autopkgtest-satdep (0) ... 313s autopkgtest [20:36:47]: test pybuild-autopkgtest: pybuild-autopkgtest 313s autopkgtest [20:36:47]: test pybuild-autopkgtest: [----------------------- 315s make: pyversions: No such file or directory 315s py3versions: no X-Python3-Version in control file, using supported versions 315s pybuild-autopkgtest 316s I: pybuild base:311: cd /tmp/autopkgtest.AUdN7y/autopkgtest_tmp/build; python3.13 -m pytest -v 316s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:208: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. 316s 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" 316s 316s warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) 316s ============================= test session starts ============================== 316s platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.13 316s cachedir: .pytest_cache 316s rootdir: /tmp/autopkgtest.AUdN7y/autopkgtest_tmp/build 316s configfile: pytest.ini 316s testpaths: tests 316s plugins: typeguard-4.4.1, asyncio-0.24.0a1, aresponses-3.0.0, cov-5.0.0 316s asyncio: mode=Mode.STRICT, default_loop_scope=None 316s collecting ... collected 19 items 316s 316s tests/test_aiomodernforms.py::test_basic_status FAILED [ 5%] 316s tests/test_aiomodernforms.py::test_command FAILED [ 10%] 316s tests/test_aiomodernforms.py::test_light FAILED [ 15%] 316s tests/test_aiomodernforms.py::test_light_sleep_datetime FAILED [ 21%] 316s tests/test_aiomodernforms.py::test_light_sleep_int FAILED [ 26%] 316s tests/test_aiomodernforms.py::test_light_sleep_clear FAILED [ 31%] 316s tests/test_aiomodernforms.py::test_fan FAILED [ 36%] 316s tests/test_aiomodernforms.py::test_fan_sleep_datetime FAILED [ 42%] 316s tests/test_aiomodernforms.py::test_fan_sleep_int FAILED [ 47%] 317s tests/test_aiomodernforms.py::test_fan_sleep_clear FAILED [ 52%] 317s tests/test_aiomodernforms.py::test_away FAILED [ 57%] 317s tests/test_aiomodernforms.py::test_adaptive_learning FAILED [ 63%] 317s tests/test_aiomodernforms.py::test_invalid_setting FAILED [ 68%] 317s tests/test_aiomodernforms.py::test_connection_error FAILED [ 73%] 317s tests/test_aiomodernforms.py::test_server_error FAILED [ 78%] 317s tests/test_aiomodernforms.py::test_reboot FAILED [ 84%] 317s tests/test_aiomodernforms.py::test_status_not_initialized_response PASSED [ 89%] 317s tests/test_aiomodernforms.py::test_info_not_initialized_response PASSED [ 94%] 317s tests/test_aiomodernforms.py::test_empty_response FAILED [100%] 317s 317s =================================== FAILURES =================================== 317s ______________________________ test_basic_status _______________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_basic_status(aresponses): 317s """Test JSON response is handled correctly.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add( 317s "fan.local", 317s "/mf", 317s "POST", 317s response=basic_response, 317s repeat=2, 317s ) 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:79: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s _________________________________ test_command _________________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_command(aresponses): 317s """Test to make sure setting lights works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_LIGHT_POWER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:108: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s __________________________________ test_light __________________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_light(aresponses): 317s """Test to make sure setting lights works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_LIGHT_POWER in data 317s assert aiomodernforms.COMMAND_LIGHT_BRIGHTNESS in data 317s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 317s modified_response[STATE_LIGHT_BRIGHTNESS] = data[ 317s aiomodernforms.COMMAND_LIGHT_BRIGHTNESS 317s ] 317s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 317s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:143: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s __________________________ test_light_sleep_datetime ___________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_light_sleep_datetime(aresponses): 317s """Test to make sure setting light sleep works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 317s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s sleep_time = datetime.now() + timedelta(minutes=2) 317s > await device.light( 317s sleep=sleep_time, 317s ) 317s 317s tests/test_aiomodernforms.py:180: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 317s await self.request(commands=commands) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 317s await self.update() 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s _____________________________ test_light_sleep_int _____________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_light_sleep_int(aresponses): 317s """Test to make sure setting light sleep works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 317s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s sleep_time = datetime.now() + timedelta(seconds=120) 317s > await device.light( 317s sleep=120, 317s ) 317s 317s tests/test_aiomodernforms.py:209: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 317s await self.request(commands=commands) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 317s await self.update() 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s ____________________________ test_light_sleep_clear ____________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_light_sleep_clear(aresponses): 317s """Test to make sure setting light sleep works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 317s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s # check to clear timer 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.light( 317s sleep=0, 317s ) 317s 317s tests/test_aiomodernforms.py:238: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 317s await self.request(commands=commands) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 317s await self.update() 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s ___________________________________ test_fan ___________________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_fan(aresponses): 317s """Test to make sure setting fan works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_FAN_POWER in data 317s assert aiomodernforms.COMMAND_FAN_SPEED in data 317s assert aiomodernforms.COMMAND_FAN_DIRECTION in data 317s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_FAN_POWER] = data[aiomodernforms.COMMAND_FAN_POWER] 317s modified_response[STATE_FAN_SPEED] = data[aiomodernforms.COMMAND_FAN_SPEED] 317s modified_response[STATE_FAN_DIRECTION] = data[ 317s aiomodernforms.COMMAND_FAN_DIRECTION 317s ] 317s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 317s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:274: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s ___________________________ test_fan_sleep_datetime ____________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_fan_sleep_datetime(aresponses): 317s """Test to make sure setting light sleep works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 317s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s sleep_time = datetime.now() + timedelta(minutes=2) 317s > await device.fan( 317s sleep=sleep_time, 317s ) 317s 317s tests/test_aiomodernforms.py:311: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 317s await self.request(commands=commands) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 317s await self.update() 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s ______________________________ test_fan_sleep_int ______________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_fan_sleep_int(aresponses): 317s """Test to make sure setting light sleep works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 317s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s sleep_time = datetime.now() + timedelta(seconds=120) 317s > await device.fan( 317s sleep=120, 317s ) 317s 317s tests/test_aiomodernforms.py:340: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 317s await self.request(commands=commands) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 317s await self.update() 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s _____________________________ test_fan_sleep_clear _____________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_fan_sleep_clear(aresponses): 317s """Test to make sure setting light sleep works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 317s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s # check to clear timer 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.fan( 317s sleep=0, 317s ) 317s 317s tests/test_aiomodernforms.py:369: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 317s await self.request(commands=commands) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 317s await self.update() 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s __________________________________ test_away ___________________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_away(aresponses): 317s """Test to make sure setting away mode works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_AWAY_MODE in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_AWAY_MODE] = data[aiomodernforms.COMMAND_AWAY_MODE] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:395: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s ____________________________ test_adaptive_learning ____________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_adaptive_learning(aresponses): 317s """Test to make sure setting adaptive learning mode works.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async def evaluate_request(request): 317s data = await request.json() 317s assert aiomodernforms.COMMAND_ADAPTIVE_LEARNING in data 317s modified_response = basic_response.copy() 317s modified_response[STATE_ADAPTIVE_LEARNING] = data[ 317s aiomodernforms.COMMAND_ADAPTIVE_LEARNING 317s ] 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text=json.dumps(modified_response), 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:422: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s _____________________________ test_invalid_setting _____________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_invalid_setting(aresponses): 317s """Test to make sure setting invalid settings are rejected.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:434: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s ____________________________ test_connection_error _____________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_connection_error(aresponses): 317s """Test to make validate proper connection error handling.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s with pytest.raises(aiomodernforms.ModernFormsConnectionError): 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:502: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s ______________________________ test_server_error _______________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_server_error(aresponses): 317s """Test to make validate proper server error handling.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add( 317s "fan.local", 317s "/mf", 317s "POST", 317s response=aresponses.Response(text="error", status=500), 317s ) 317s 317s with pytest.raises(aiomodernforms.ModernFormsError): 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:518: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s _________________________________ test_reboot __________________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_reboot(aresponses): 317s """Test how reboot is handled.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 317s 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:528: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s _____________________________ test_empty_response ______________________________ 317s 317s aresponses = 317s 317s @pytest.mark.asyncio 317s async def test_empty_response(aresponses): 317s """Test for an Empty Response.""" 317s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 317s 317s async def send_empty_state(request): 317s await request.json() 317s return aresponses.Response( 317s status=200, 317s content_type="application/json", 317s text="{}", 317s ) 317s 317s aresponses.add("fan.local", "/mf", "POST", response=send_empty_state) 317s with pytest.raises(ModernFormsConnectionError): 317s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 317s > await device.update() 317s 317s tests/test_aiomodernforms.py:568: 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 317s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 317s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 317s ret = await target(*args, **kwargs) 317s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 317s 317s self = 317s commands = {'queryStaticShadowData': True} 317s 317s @backoff.on_exception( 317s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 317s ) 317s async def _request(self, commands: Optional[dict] = None) -> Any: 317s """Handle a request to a Modern Forms Fan device.""" 317s scheme = "https" if self._tls else "http" 317s url = URL.build( 317s scheme=scheme, 317s host=self._host, 317s port=self._port, 317s path=self._base_path, 317s ) 317s 317s auth = None 317s if self._username and self._password: 317s auth = aiohttp.BasicAuth(self._username, self._password) 317s 317s headers = { 317s "User-Agent": self._user_agent, 317s "Accept": "application/json", 317s } 317s 317s if self._session is None: 317s self._session = aiohttp.ClientSession() 317s self._close_session = True 317s 317s # If updating the state, always request for a state response 317s if commands is None: 317s commands = {COMMAND_QUERY_STATUS: True} 317s 317s try: 317s > with async_timeout.timeout(self._request_timeout): 317s E TypeError: 'Timeout' object does not support the context manager protocol 317s 317s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 317s =========================== short test summary info ============================ 317s FAILED tests/test_aiomodernforms.py::test_basic_status - TypeError: 'Timeout'... 317s FAILED tests/test_aiomodernforms.py::test_command - TypeError: 'Timeout' obje... 317s FAILED tests/test_aiomodernforms.py::test_light - TypeError: 'Timeout' object... 317s FAILED tests/test_aiomodernforms.py::test_light_sleep_datetime - TypeError: '... 317s FAILED tests/test_aiomodernforms.py::test_light_sleep_int - TypeError: 'Timeo... 317s FAILED tests/test_aiomodernforms.py::test_light_sleep_clear - TypeError: 'Tim... 317s FAILED tests/test_aiomodernforms.py::test_fan - TypeError: 'Timeout' object d... 317s FAILED tests/test_aiomodernforms.py::test_fan_sleep_datetime - TypeError: 'Ti... 317s FAILED tests/test_aiomodernforms.py::test_fan_sleep_int - TypeError: 'Timeout... 317s FAILED tests/test_aiomodernforms.py::test_fan_sleep_clear - TypeError: 'Timeo... 317s FAILED tests/test_aiomodernforms.py::test_away - TypeError: 'Timeout' object ... 317s FAILED tests/test_aiomodernforms.py::test_adaptive_learning - TypeError: 'Tim... 317s FAILED tests/test_aiomodernforms.py::test_invalid_setting - TypeError: 'Timeo... 317s FAILED tests/test_aiomodernforms.py::test_connection_error - TypeError: 'Time... 317s FAILED tests/test_aiomodernforms.py::test_server_error - TypeError: 'Timeout'... 317s FAILED tests/test_aiomodernforms.py::test_reboot - TypeError: 'Timeout' objec... 317s FAILED tests/test_aiomodernforms.py::test_empty_response - TypeError: 'Timeou... 317s ========================= 17 failed, 2 passed in 0.54s ========================= 317s E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.AUdN7y/autopkgtest_tmp/build; python3.13 -m pytest -v 317s I: pybuild base:311: cd /tmp/autopkgtest.AUdN7y/autopkgtest_tmp/build; python3.12 -m pytest -v 317s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:208: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. 317s 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" 317s 317s warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) 317s ============================= test session starts ============================== 317s platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.12 317s cachedir: .pytest_cache 317s rootdir: /tmp/autopkgtest.AUdN7y/autopkgtest_tmp/build 317s configfile: pytest.ini 317s testpaths: tests 317s plugins: typeguard-4.4.1, asyncio-0.24.0a1, aresponses-3.0.0, cov-5.0.0 317s asyncio: mode=Mode.STRICT, default_loop_scope=None 317s collecting ... collected 19 items 317s 317s tests/test_aiomodernforms.py::test_basic_status FAILED [ 5%] 318s tests/test_aiomodernforms.py::test_command FAILED [ 10%] 318s tests/test_aiomodernforms.py::test_light FAILED [ 15%] 318s tests/test_aiomodernforms.py::test_light_sleep_datetime FAILED [ 21%] 318s tests/test_aiomodernforms.py::test_light_sleep_int FAILED [ 26%] 318s tests/test_aiomodernforms.py::test_light_sleep_clear FAILED [ 31%] 318s tests/test_aiomodernforms.py::test_fan FAILED [ 36%] 318s tests/test_aiomodernforms.py::test_fan_sleep_datetime FAILED [ 42%] 318s tests/test_aiomodernforms.py::test_fan_sleep_int FAILED [ 47%] 318s tests/test_aiomodernforms.py::test_fan_sleep_clear FAILED [ 52%] 318s tests/test_aiomodernforms.py::test_away FAILED [ 57%] 318s tests/test_aiomodernforms.py::test_adaptive_learning FAILED [ 63%] 318s tests/test_aiomodernforms.py::test_invalid_setting FAILED [ 68%] 318s tests/test_aiomodernforms.py::test_connection_error FAILED [ 73%] 318s tests/test_aiomodernforms.py::test_server_error FAILED [ 78%] 318s tests/test_aiomodernforms.py::test_reboot FAILED [ 84%] 318s tests/test_aiomodernforms.py::test_status_not_initialized_response PASSED [ 89%] 318s tests/test_aiomodernforms.py::test_info_not_initialized_response PASSED [ 94%] 318s tests/test_aiomodernforms.py::test_empty_response FAILED [100%] 318s 318s =================================== FAILURES =================================== 318s ______________________________ test_basic_status _______________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_basic_status(aresponses): 318s """Test JSON response is handled correctly.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add( 318s "fan.local", 318s "/mf", 318s "POST", 318s response=basic_response, 318s repeat=2, 318s ) 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:79: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s _________________________________ test_command _________________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_command(aresponses): 318s """Test to make sure setting lights works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_LIGHT_POWER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:108: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s __________________________________ test_light __________________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_light(aresponses): 318s """Test to make sure setting lights works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_LIGHT_POWER in data 318s assert aiomodernforms.COMMAND_LIGHT_BRIGHTNESS in data 318s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 318s modified_response[STATE_LIGHT_BRIGHTNESS] = data[ 318s aiomodernforms.COMMAND_LIGHT_BRIGHTNESS 318s ] 318s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 318s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:143: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s __________________________ test_light_sleep_datetime ___________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_light_sleep_datetime(aresponses): 318s """Test to make sure setting light sleep works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 318s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s sleep_time = datetime.now() + timedelta(minutes=2) 318s > await device.light( 318s sleep=sleep_time, 318s ) 318s 318s tests/test_aiomodernforms.py:180: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 318s await self.request(commands=commands) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 318s await self.update() 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s _____________________________ test_light_sleep_int _____________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_light_sleep_int(aresponses): 318s """Test to make sure setting light sleep works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 318s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s sleep_time = datetime.now() + timedelta(seconds=120) 318s > await device.light( 318s sleep=120, 318s ) 318s 318s tests/test_aiomodernforms.py:209: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 318s await self.request(commands=commands) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 318s await self.update() 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s ____________________________ test_light_sleep_clear ____________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_light_sleep_clear(aresponses): 318s """Test to make sure setting light sleep works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 318s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s # check to clear timer 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.light( 318s sleep=0, 318s ) 318s 318s tests/test_aiomodernforms.py:238: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 318s await self.request(commands=commands) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 318s await self.update() 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s ___________________________________ test_fan ___________________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_fan(aresponses): 318s """Test to make sure setting fan works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_FAN_POWER in data 318s assert aiomodernforms.COMMAND_FAN_SPEED in data 318s assert aiomodernforms.COMMAND_FAN_DIRECTION in data 318s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_FAN_POWER] = data[aiomodernforms.COMMAND_FAN_POWER] 318s modified_response[STATE_FAN_SPEED] = data[aiomodernforms.COMMAND_FAN_SPEED] 318s modified_response[STATE_FAN_DIRECTION] = data[ 318s aiomodernforms.COMMAND_FAN_DIRECTION 318s ] 318s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 318s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:274: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s ___________________________ test_fan_sleep_datetime ____________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_fan_sleep_datetime(aresponses): 318s """Test to make sure setting light sleep works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 318s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s sleep_time = datetime.now() + timedelta(minutes=2) 318s > await device.fan( 318s sleep=sleep_time, 318s ) 318s 318s tests/test_aiomodernforms.py:311: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 318s await self.request(commands=commands) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 318s await self.update() 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s ______________________________ test_fan_sleep_int ______________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_fan_sleep_int(aresponses): 318s """Test to make sure setting light sleep works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 318s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s sleep_time = datetime.now() + timedelta(seconds=120) 318s > await device.fan( 318s sleep=120, 318s ) 318s 318s tests/test_aiomodernforms.py:340: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 318s await self.request(commands=commands) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 318s await self.update() 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s _____________________________ test_fan_sleep_clear _____________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_fan_sleep_clear(aresponses): 318s """Test to make sure setting light sleep works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 318s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s # check to clear timer 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.fan( 318s sleep=0, 318s ) 318s 318s tests/test_aiomodernforms.py:369: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 318s await self.request(commands=commands) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 318s await self.update() 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s __________________________________ test_away ___________________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_away(aresponses): 318s """Test to make sure setting away mode works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_AWAY_MODE in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_AWAY_MODE] = data[aiomodernforms.COMMAND_AWAY_MODE] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:395: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s ____________________________ test_adaptive_learning ____________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_adaptive_learning(aresponses): 318s """Test to make sure setting adaptive learning mode works.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async def evaluate_request(request): 318s data = await request.json() 318s assert aiomodernforms.COMMAND_ADAPTIVE_LEARNING in data 318s modified_response = basic_response.copy() 318s modified_response[STATE_ADAPTIVE_LEARNING] = data[ 318s aiomodernforms.COMMAND_ADAPTIVE_LEARNING 318s ] 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text=json.dumps(modified_response), 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:422: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s _____________________________ test_invalid_setting _____________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_invalid_setting(aresponses): 318s """Test to make sure setting invalid settings are rejected.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:434: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s ____________________________ test_connection_error _____________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_connection_error(aresponses): 318s """Test to make validate proper connection error handling.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s with pytest.raises(aiomodernforms.ModernFormsConnectionError): 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:502: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s ______________________________ test_server_error _______________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_server_error(aresponses): 318s """Test to make validate proper server error handling.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add( 318s "fan.local", 318s "/mf", 318s "POST", 318s response=aresponses.Response(text="error", status=500), 318s ) 318s 318s with pytest.raises(aiomodernforms.ModernFormsError): 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:518: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s _________________________________ test_reboot __________________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_reboot(aresponses): 318s """Test how reboot is handled.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 318s 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:528: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s _____________________________ test_empty_response ______________________________ 318s 318s aresponses = 318s 318s @pytest.mark.asyncio 318s async def test_empty_response(aresponses): 318s """Test for an Empty Response.""" 318s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 318s 318s async def send_empty_state(request): 318s await request.json() 318s return aresponses.Response( 318s status=200, 318s content_type="application/json", 318s text="{}", 318s ) 318s 318s aresponses.add("fan.local", "/mf", "POST", response=send_empty_state) 318s with pytest.raises(ModernFormsConnectionError): 318s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 318s > await device.update() 318s 318s tests/test_aiomodernforms.py:568: 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 318s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 318s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 318s ret = await target(*args, **kwargs) 318s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 318s 318s self = 318s commands = {'queryStaticShadowData': True} 318s 318s @backoff.on_exception( 318s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 318s ) 318s async def _request(self, commands: Optional[dict] = None) -> Any: 318s """Handle a request to a Modern Forms Fan device.""" 318s scheme = "https" if self._tls else "http" 318s url = URL.build( 318s scheme=scheme, 318s host=self._host, 318s port=self._port, 318s path=self._base_path, 318s ) 318s 318s auth = None 318s if self._username and self._password: 318s auth = aiohttp.BasicAuth(self._username, self._password) 318s 318s headers = { 318s "User-Agent": self._user_agent, 318s "Accept": "application/json", 318s } 318s 318s if self._session is None: 318s self._session = aiohttp.ClientSession() 318s self._close_session = True 318s 318s # If updating the state, always request for a state response 318s if commands is None: 318s commands = {COMMAND_QUERY_STATUS: True} 318s 318s try: 318s > with async_timeout.timeout(self._request_timeout): 318s E TypeError: 'Timeout' object does not support the context manager protocol 318s 318s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 318s =========================== short test summary info ============================ 318s FAILED tests/test_aiomodernforms.py::test_basic_status - TypeError: 'Timeout'... 318s FAILED tests/test_aiomodernforms.py::test_command - TypeError: 'Timeout' obje... 318s FAILED tests/test_aiomodernforms.py::test_light - TypeError: 'Timeout' object... 318s FAILED tests/test_aiomodernforms.py::test_light_sleep_datetime - TypeError: '... 318s FAILED tests/test_aiomodernforms.py::test_light_sleep_int - TypeError: 'Timeo... 318s FAILED tests/test_aiomodernforms.py::test_light_sleep_clear - TypeError: 'Tim... 318s FAILED tests/test_aiomodernforms.py::test_fan - TypeError: 'Timeout' object d... 318s FAILED tests/test_aiomodernforms.py::test_fan_sleep_datetime - TypeError: 'Ti... 318s FAILED tests/test_aiomodernforms.py::test_fan_sleep_int - TypeError: 'Timeout... 318s FAILED tests/test_aiomodernforms.py::test_fan_sleep_clear - TypeError: 'Timeo... 318s FAILED tests/test_aiomodernforms.py::test_away - TypeError: 'Timeout' object ... 318s FAILED tests/test_aiomodernforms.py::test_adaptive_learning - TypeError: 'Tim... 318s FAILED tests/test_aiomodernforms.py::test_invalid_setting - TypeError: 'Timeo... 318s FAILED tests/test_aiomodernforms.py::test_connection_error - TypeError: 'Time... 318s FAILED tests/test_aiomodernforms.py::test_server_error - TypeError: 'Timeout'... 318s FAILED tests/test_aiomodernforms.py::test_reboot - TypeError: 'Timeout' objec... 318s FAILED tests/test_aiomodernforms.py::test_empty_response - TypeError: 'Timeou... 318s ========================= 17 failed, 2 passed in 0.58s ========================= 318s E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.AUdN7y/autopkgtest_tmp/build; python3.12 -m pytest -v 318s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13 318s make: *** [/tmp/ldKaNQ2kW4/run:4: pybuild-autopkgtest] Error 25 318s pybuild-autopkgtest: error: /tmp/ldKaNQ2kW4/run pybuild-autopkgtest returned exit code 2 318s autopkgtest [20:36:52]: test pybuild-autopkgtest: -----------------------] 322s autopkgtest [20:36:56]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 322s pybuild-autopkgtest FAIL non-zero exit status 25 326s autopkgtest [20:37:00]: @@@@@@@@@@@@@@@@@@@@ summary 326s pybuild-autopkgtest FAIL non-zero exit status 25