0s autopkgtest [23:35:42]: starting date and time: 2024-11-15 23:35:42+0000 0s autopkgtest [23:35:42]: git checkout: 6f3be7a8 Fix armhf LXD image generation for plucky 0s autopkgtest [23:35:42]: host juju-7f2275-prod-proposed-migration-environment-15; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.1lhjwty7/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --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 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor builder-cpu2-ram4-disk20 --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-15@bos03-27.secgroup --name adt-plucky-amd64-python-aiomodernforms-20241115-230038-juju-7f2275-prod-proposed-migration-environment-15-0e100778-244b-447b-9e55-2336f3a06462 --image adt/ubuntu-plucky-amd64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-15 --net-id=net_prod-proposed-migration-amd64 -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 349s autopkgtest [23:41:31]: testbed dpkg architecture: amd64 349s autopkgtest [23:41:31]: testbed apt version: 2.9.8 349s autopkgtest [23:41:31]: @@@@@@@@@@@@@@@@@@@@ test bed setup 350s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [73.9 kB] 350s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [1046 kB] 350s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [15.5 kB] 350s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [93.0 kB] 350s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/restricted Sources [7016 B] 350s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/main i386 Packages [111 kB] 350s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/main amd64 Packages [176 kB] 350s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/restricted amd64 Packages [32.6 kB] 350s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/universe i386 Packages [296 kB] 350s Get:10 http://ftpmaster.internal/ubuntu plucky-proposed/universe amd64 Packages [806 kB] 350s Get:11 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse i386 Packages [740 B] 350s Get:12 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse amd64 Packages [9416 B] 350s Fetched 2666 kB in 1s (3408 kB/s) 350s Reading package lists... 352s Reading package lists... 353s Building dependency tree... 353s Reading state information... 353s Calculating upgrade... 353s The following NEW packages will be installed: 353s libassuan9 353s The following packages will be upgraded: 353s libgpgme11t64 libseccomp2 python3-cffi-backend 353s 3 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 353s Need to get 348 kB of archives. 353s After this operation, 361 kB of additional disk space will be used. 353s Get:1 http://ftpmaster.internal/ubuntu plucky/main amd64 libseccomp2 amd64 2.5.5-1ubuntu5 [53.3 kB] 353s Get:2 http://ftpmaster.internal/ubuntu plucky/main amd64 python3-cffi-backend amd64 1.17.1-2build1 [96.7 kB] 353s Get:3 http://ftpmaster.internal/ubuntu plucky/main amd64 libassuan9 amd64 3.0.1-2 [42.9 kB] 353s Get:4 http://ftpmaster.internal/ubuntu plucky/main amd64 libgpgme11t64 amd64 1.24.0-2ubuntu1 [155 kB] 354s Fetched 348 kB in 0s (743 kB/s) 354s (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 ... 75576 files and directories currently installed.) 354s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu5_amd64.deb ... 354s Unpacking libseccomp2:amd64 (2.5.5-1ubuntu5) over (2.5.5-1ubuntu4) ... 354s Setting up libseccomp2:amd64 (2.5.5-1ubuntu5) ... 354s (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 ... 75576 files and directories currently installed.) 354s Preparing to unpack .../python3-cffi-backend_1.17.1-2build1_amd64.deb ... 354s Unpacking python3-cffi-backend:amd64 (1.17.1-2build1) over (1.17.1-2) ... 354s Selecting previously unselected package libassuan9:amd64. 354s Preparing to unpack .../libassuan9_3.0.1-2_amd64.deb ... 354s Unpacking libassuan9:amd64 (3.0.1-2) ... 354s Preparing to unpack .../libgpgme11t64_1.24.0-2ubuntu1_amd64.deb ... 354s Unpacking libgpgme11t64:amd64 (1.24.0-2ubuntu1) over (1.23.2-5ubuntu4) ... 354s Setting up libassuan9:amd64 (3.0.1-2) ... 354s Setting up libgpgme11t64:amd64 (1.24.0-2ubuntu1) ... 354s Setting up python3-cffi-backend:amd64 (1.17.1-2build1) ... 354s Processing triggers for libc-bin (2.40-1ubuntu3) ... 354s Reading package lists... 354s Building dependency tree... 354s Reading state information... 354s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 355s Hit:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease 355s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 355s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 355s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 356s Reading package lists... 356s Reading package lists... 356s Building dependency tree... 356s Reading state information... 356s Calculating upgrade... 356s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 356s Reading package lists... 356s Building dependency tree... 356s Reading state information... 356s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 359s autopkgtest [23:41:41]: testbed running kernel: Linux 6.11.0-8-generic #8-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 16 13:41:20 UTC 2024 359s autopkgtest [23:41:41]: @@@@@@@@@@@@@@@@@@@@ apt-source python-aiomodernforms 361s Get:1 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (dsc) [2407 B] 361s Get:2 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (tar) [34.5 kB] 361s Get:3 http://ftpmaster.internal/ubuntu plucky/universe python-aiomodernforms 0.1.8-2 (diff) [2120 B] 361s gpgv: Signature made Wed Aug 14 20:49:59 2024 UTC 361s gpgv: using RSA key A0B1A9F3508956130E7A425CD416AD15AC6B43FE 361s gpgv: Can't check signature: No public key 361s dpkg-source: warning: cannot verify inline signature for ./python-aiomodernforms_0.1.8-2.dsc: no acceptable signature found 361s autopkgtest [23:41:43]: testing package python-aiomodernforms version 0.1.8-2 361s autopkgtest [23:41:43]: build not needed 361s autopkgtest [23:41:43]: test pybuild-autopkgtest: preparing testbed 366s Reading package lists... 366s Building dependency tree... 366s Reading state information... 366s Starting pkgProblemResolver with broken count: 1 366s Starting 2 pkgProblemResolver with broken count: 1 366s Investigating (0) python3-aiohttp:amd64 < none -> 3.10.10-2build1 @un puN Ib > 366s Broken python3-aiohttp:amd64 Depends on python3-yarl:amd64 < none -> 1.9.4-1 @un puN > (>= 1.12.0) 366s Considering python3-yarl:amd64 3 as a solution to python3-aiohttp:amd64 2 366s Re-Instated python3-yarl:amd64 366s Broken python3-aiohttp:amd64 Depends on python3-async-timeout:amd64 < none | 4.0.3-1 @un uH > (>= 4.0.1) 366s Considering python3-async-timeout:amd64 0 as a solution to python3-aiohttp:amd64 2 366s Re-Instated python3-async-timeout:amd64 366s Broken python3-aiohttp:amd64 Depends on python3-aiohappyeyeballs:amd64 < none | 2.4.3-1 @un uH > 366s Considering python3-aiohappyeyeballs:amd64 1 as a solution to python3-aiohttp:amd64 2 366s Re-Instated python3-aiohappyeyeballs:amd64 366s Broken python3-aiohttp:amd64 Depends on python3-aiosignal:amd64 < none | 1.3.1-1 @un uH > 366s Considering python3-aiosignal:amd64 1 as a solution to python3-aiohttp:amd64 2 366s Re-Instated python3-frozenlist:amd64 366s Re-Instated python3-aiosignal:amd64 366s Done 366s Some packages could not be installed. This may mean that you have 366s requested an impossible situation or if you are using the unstable 366s distribution that some required packages have not yet been created 366s or been moved out of Incoming. 366s The following information may help to resolve the situation: 366s 366s The following packages have unmet dependencies: 366s python3-aiohttp : Depends: python3-yarl (>= 1.12.0) but 1.9.4-1 is to be installed 366s E: Unable to correct problems, you have held broken packages. 366s autopkgtest: WARNING: Test dependencies are unsatisfiable with using apt pinning. Retrying with using all packages from plucky-proposed 367s Reading package lists... 367s Building dependency tree... 367s Reading state information... 367s Starting pkgProblemResolver with broken count: 0 367s Starting 2 pkgProblemResolver with broken count: 0 367s Done 368s The following additional packages will be installed: 368s autoconf automake autopoint autotools-dev build-essential cpp cpp-14 368s cpp-14-x86-64-linux-gnu cpp-x86-64-linux-gnu debhelper debugedit 368s dh-autoreconf dh-python dh-strip-nondeterminism dwz g++ g++-14 368s g++-14-x86-64-linux-gnu g++-x86-64-linux-gnu gcc gcc-14 368s gcc-14-x86-64-linux-gnu gcc-x86-64-linux-gnu gettext intltool-debian 368s libarchive-zip-perl libasan8 libcc1-0 libdebhelper-perl 368s libfile-stripnondeterminism-perl libgcc-14-dev libgomp1 libhwasan0 libisl23 368s libitm1 libjs-jquery libjs-jquery-hotkeys libjs-jquery-isonscreen 368s libjs-jquery-metadata libjs-jquery-tablesorter 368s libjs-jquery-throttle-debounce liblsan0 libmpc3 libpython3-stdlib 368s libpython3.13-minimal libpython3.13-stdlib libquadmath0 libstdc++-14-dev 368s libtool libtsan2 libubsan1 m4 openstack-pkg-tools po-debconf 368s pybuild-plugin-pyproject python3 python3-aiohappyeyeballs python3-aiohttp 368s python3-aiomodernforms python3-aiosignal python3-all python3-aresponses 368s python3-async-generator python3-async-timeout python3-backoff python3-build 368s python3-coverage python3-frozenlist python3-iniconfig python3-installer 368s python3-minimal python3-multidict python3-mypy python3-mypy-extensions 368s python3-packaging python3-pip python3-pluggy python3-psutil 368s python3-pyproject-hooks python3-pytest python3-pytest-asyncio 368s python3-pytest-cov python3-toml python3-wheel python3-yarl python3.13 368s python3.13-minimal 368s Suggested packages: 368s autoconf-archive gnu-standards autoconf-doc cpp-doc gcc-14-locales 368s cpp-14-doc dh-make flit g++-multilib g++-14-multilib gcc-14-doc gcc-multilib 368s manpages-dev flex bison gdb gcc-doc gcc-14-multilib gdb-x86-64-linux-gnu 368s gettext-doc libasprintf-dev libgettextpo-dev libstdc++-14-doc libtool-doc 368s gfortran | fortran95-compiler gcj-jdk m4-doc libmail-box-perl python3-venv 368s python-build-doc python-coverage-doc python-installer-doc python3.13-venv 368s python3.13-doc binfmt-support 368s Recommended packages: 368s libarchive-cpio-perl javascript-common libltdl-dev autopkgtest madison-lite 368s pristine-tar libmail-sendmail-perl python3-aiodns python3-lxml 368s python3-orjson python3-dev libjs-sphinxdoc 368s The following NEW packages will be installed: 368s autoconf automake autopkgtest-satdep autopoint autotools-dev build-essential 368s cpp cpp-14 cpp-14-x86-64-linux-gnu cpp-x86-64-linux-gnu debhelper debugedit 368s dh-autoreconf dh-python dh-strip-nondeterminism dwz g++ g++-14 368s g++-14-x86-64-linux-gnu g++-x86-64-linux-gnu gcc gcc-14 368s gcc-14-x86-64-linux-gnu gcc-x86-64-linux-gnu gettext intltool-debian 368s libarchive-zip-perl libasan8 libcc1-0 libdebhelper-perl 368s libfile-stripnondeterminism-perl libgcc-14-dev libgomp1 libhwasan0 libisl23 368s libitm1 libjs-jquery libjs-jquery-hotkeys libjs-jquery-isonscreen 368s libjs-jquery-metadata libjs-jquery-tablesorter 368s libjs-jquery-throttle-debounce liblsan0 libmpc3 libpython3.13-minimal 368s libpython3.13-stdlib libquadmath0 libstdc++-14-dev libtool libtsan2 368s libubsan1 m4 openstack-pkg-tools po-debconf pybuild-plugin-pyproject 368s python3-aiohappyeyeballs python3-aiohttp python3-aiomodernforms 368s python3-aiosignal python3-all python3-aresponses python3-async-generator 368s python3-async-timeout python3-backoff python3-build python3-coverage 368s python3-frozenlist python3-iniconfig python3-installer python3-multidict 368s python3-mypy python3-mypy-extensions python3-packaging python3-pip 368s python3-pluggy python3-psutil python3-pyproject-hooks python3-pytest 368s python3-pytest-asyncio python3-pytest-cov python3-toml python3-wheel 368s python3-yarl python3.13 python3.13-minimal 368s The following packages will be upgraded: 368s libpython3-stdlib python3 python3-minimal 368s 3 upgraded, 85 newly installed, 0 to remove and 72 not upgraded. 368s Need to get 95.3 MB/95.3 MB of archives. 368s After this operation, 349 MB of additional disk space will be used. 368s Get:1 /tmp/autopkgtest.linh5x/1-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [852 B] 368s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/main amd64 python3-minimal amd64 3.12.7-1 [27.4 kB] 368s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/main amd64 python3 amd64 3.12.7-1 [24.0 kB] 368s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/main amd64 libpython3-stdlib amd64 3.12.7-1 [10.0 kB] 368s Get:5 http://ftpmaster.internal/ubuntu plucky/main amd64 libpython3.13-minimal amd64 3.13.0-2 [879 kB] 368s Get:6 http://ftpmaster.internal/ubuntu plucky/main amd64 python3.13-minimal amd64 3.13.0-2 [2188 kB] 368s Get:7 http://ftpmaster.internal/ubuntu plucky/main amd64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 368s Get:8 http://ftpmaster.internal/ubuntu plucky/universe amd64 libjs-jquery-hotkeys all 0~20130707+git2d51e3a9+dfsg-2.1 [11.5 kB] 368s Get:9 http://ftpmaster.internal/ubuntu plucky/main amd64 m4 amd64 1.4.19-4build1 [244 kB] 368s Get:10 http://ftpmaster.internal/ubuntu plucky/main amd64 autoconf all 2.72-3 [382 kB] 368s Get:11 http://ftpmaster.internal/ubuntu plucky/main amd64 autotools-dev all 20220109.1 [44.9 kB] 368s Get:12 http://ftpmaster.internal/ubuntu plucky/main amd64 automake all 1:1.16.5-1.3ubuntu1 [558 kB] 368s Get:13 http://ftpmaster.internal/ubuntu plucky/main amd64 autopoint all 0.22.5-2 [616 kB] 368s Get:14 http://ftpmaster.internal/ubuntu plucky/main amd64 libisl23 amd64 0.27-1 [685 kB] 368s Get:15 http://ftpmaster.internal/ubuntu plucky/main amd64 libmpc3 amd64 1.3.1-1build2 [55.3 kB] 368s Get:16 http://ftpmaster.internal/ubuntu plucky/main amd64 cpp-14-x86-64-linux-gnu amd64 14.2.0-8ubuntu1 [11.9 MB] 369s Get:17 http://ftpmaster.internal/ubuntu plucky/main amd64 cpp-14 amd64 14.2.0-8ubuntu1 [1030 B] 369s Get:18 http://ftpmaster.internal/ubuntu plucky/main amd64 cpp-x86-64-linux-gnu amd64 4:14.1.0-2ubuntu1 [5452 B] 369s Get:19 http://ftpmaster.internal/ubuntu plucky/main amd64 cpp amd64 4:14.1.0-2ubuntu1 [22.4 kB] 369s Get:20 http://ftpmaster.internal/ubuntu plucky/main amd64 libcc1-0 amd64 14.2.0-8ubuntu1 [47.6 kB] 369s Get:21 http://ftpmaster.internal/ubuntu plucky/main amd64 libgomp1 amd64 14.2.0-8ubuntu1 [148 kB] 369s Get:22 http://ftpmaster.internal/ubuntu plucky/main amd64 libitm1 amd64 14.2.0-8ubuntu1 [29.1 kB] 369s Get:23 http://ftpmaster.internal/ubuntu plucky/main amd64 libasan8 amd64 14.2.0-8ubuntu1 [2998 kB] 369s Get:24 http://ftpmaster.internal/ubuntu plucky/main amd64 liblsan0 amd64 14.2.0-8ubuntu1 [1317 kB] 369s Get:25 http://ftpmaster.internal/ubuntu plucky/main amd64 libtsan2 amd64 14.2.0-8ubuntu1 [2732 kB] 369s Get:26 http://ftpmaster.internal/ubuntu plucky/main amd64 libubsan1 amd64 14.2.0-8ubuntu1 [1177 kB] 369s Get:27 http://ftpmaster.internal/ubuntu plucky/main amd64 libhwasan0 amd64 14.2.0-8ubuntu1 [1634 kB] 369s Get:28 http://ftpmaster.internal/ubuntu plucky/main amd64 libquadmath0 amd64 14.2.0-8ubuntu1 [153 kB] 369s Get:29 http://ftpmaster.internal/ubuntu plucky/main amd64 libgcc-14-dev amd64 14.2.0-8ubuntu1 [2814 kB] 369s Get:30 http://ftpmaster.internal/ubuntu plucky/main amd64 gcc-14-x86-64-linux-gnu amd64 14.2.0-8ubuntu1 [23.3 MB] 370s Get:31 http://ftpmaster.internal/ubuntu plucky/main amd64 gcc-14 amd64 14.2.0-8ubuntu1 [528 kB] 370s Get:32 http://ftpmaster.internal/ubuntu plucky/main amd64 gcc-x86-64-linux-gnu amd64 4:14.1.0-2ubuntu1 [1214 B] 370s Get:33 http://ftpmaster.internal/ubuntu plucky/main amd64 gcc amd64 4:14.1.0-2ubuntu1 [5000 B] 370s Get:34 http://ftpmaster.internal/ubuntu plucky/main amd64 libstdc++-14-dev amd64 14.2.0-8ubuntu1 [2504 kB] 370s Get:35 http://ftpmaster.internal/ubuntu plucky/main amd64 g++-14-x86-64-linux-gnu amd64 14.2.0-8ubuntu1 [13.3 MB] 370s Get:36 http://ftpmaster.internal/ubuntu plucky/main amd64 g++-14 amd64 14.2.0-8ubuntu1 [19.9 kB] 370s Get:37 http://ftpmaster.internal/ubuntu plucky/main amd64 g++-x86-64-linux-gnu amd64 4:14.1.0-2ubuntu1 [966 B] 370s Get:38 http://ftpmaster.internal/ubuntu plucky/main amd64 g++ amd64 4:14.1.0-2ubuntu1 [1100 B] 370s Get:39 http://ftpmaster.internal/ubuntu plucky/main amd64 build-essential amd64 12.10ubuntu1 [4928 B] 370s Get:40 http://ftpmaster.internal/ubuntu plucky/main amd64 libdebhelper-perl all 13.20ubuntu1 [94.2 kB] 370s Get:41 http://ftpmaster.internal/ubuntu plucky-proposed/main amd64 libtool all 2.4.7-8 [166 kB] 370s Get:42 http://ftpmaster.internal/ubuntu plucky/main amd64 dh-autoreconf all 20 [16.1 kB] 370s Get:43 http://ftpmaster.internal/ubuntu plucky/main amd64 libarchive-zip-perl all 1.68-1 [90.2 kB] 370s Get:44 http://ftpmaster.internal/ubuntu plucky/main amd64 libfile-stripnondeterminism-perl all 1.14.0-1 [20.1 kB] 370s Get:45 http://ftpmaster.internal/ubuntu plucky/main amd64 dh-strip-nondeterminism all 1.14.0-1 [5058 B] 370s Get:46 http://ftpmaster.internal/ubuntu plucky/main amd64 debugedit amd64 1:5.1-1 [46.9 kB] 370s Get:47 http://ftpmaster.internal/ubuntu plucky/main amd64 dwz amd64 0.15-1build6 [115 kB] 370s Get:48 http://ftpmaster.internal/ubuntu plucky/main amd64 gettext amd64 0.22.5-2 [948 kB] 370s Get:49 http://ftpmaster.internal/ubuntu plucky/main amd64 intltool-debian all 0.35.0+20060710.6 [23.2 kB] 370s Get:50 http://ftpmaster.internal/ubuntu plucky/main amd64 po-debconf all 1.0.21+nmu1 [233 kB] 370s Get:51 http://ftpmaster.internal/ubuntu plucky/main amd64 debhelper all 13.20ubuntu1 [893 kB] 370s Get:52 http://ftpmaster.internal/ubuntu plucky/universe amd64 dh-python all 6.20241024 [112 kB] 370s Get:53 http://ftpmaster.internal/ubuntu plucky/universe amd64 libjs-jquery-metadata all 12-4 [6582 B] 370s Get:54 http://ftpmaster.internal/ubuntu plucky/universe amd64 libjs-jquery-tablesorter all 1:2.31.3+dfsg1-4 [192 kB] 370s Get:55 http://ftpmaster.internal/ubuntu plucky/universe amd64 libjs-jquery-throttle-debounce all 1.1+dfsg.1-2 [12.5 kB] 370s Get:56 http://ftpmaster.internal/ubuntu plucky/main amd64 libpython3.13-stdlib amd64 3.13.0-2 [2107 kB] 370s Get:57 http://ftpmaster.internal/ubuntu plucky/main amd64 python3-packaging all 24.1-1 [41.4 kB] 370s Get:58 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-pyproject-hooks all 1.2.0-1 [10.2 kB] 370s Get:59 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-toml all 0.10.2-1 [16.5 kB] 370s Get:60 http://ftpmaster.internal/ubuntu plucky-proposed/universe amd64 python3-wheel all 0.45.0-1 [57.7 kB] 370s Get:61 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-build all 1.2.2-1 [31.0 kB] 370s Get:62 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-installer all 0.7.0+dfsg1-3 [17.4 kB] 370s Get:63 http://ftpmaster.internal/ubuntu plucky/universe amd64 pybuild-plugin-pyproject all 6.20241024 [1728 B] 370s Get:64 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-aiohappyeyeballs all 2.4.3-1 [10.5 kB] 370s Get:65 http://ftpmaster.internal/ubuntu plucky-proposed/universe amd64 python3-multidict amd64 6.1.0-1build1 [38.5 kB] 370s Get:66 http://ftpmaster.internal/ubuntu plucky-proposed/universe amd64 python3-yarl amd64 1.13.1-1build1 [127 kB] 370s Get:67 http://ftpmaster.internal/ubuntu plucky-proposed/universe amd64 python3-async-timeout all 5.0.1-1 [6830 B] 370s Get:68 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-frozenlist amd64 1.5.0-1build1 [67.8 kB] 370s Get:69 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-aiosignal all 1.3.1-1 [5172 B] 370s Get:70 http://ftpmaster.internal/ubuntu plucky-proposed/universe amd64 python3-aiohttp amd64 3.10.10-2build1 [377 kB] 370s Get:71 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-backoff all 2.2.1-2 [17.9 kB] 370s Get:72 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-aiomodernforms all 0.1.8-2 [8106 B] 370s Get:73 http://ftpmaster.internal/ubuntu plucky/main amd64 python3.13 amd64 3.13.0-2 [719 kB] 370s Get:74 http://ftpmaster.internal/ubuntu plucky-proposed/main amd64 python3-all amd64 3.12.7-1 [890 B] 370s Get:75 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-async-generator all 1.10-4 [17.5 kB] 370s Get:76 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-iniconfig all 1.1.1-2 [6024 B] 370s Get:77 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-pluggy all 1.5.0-1 [21.0 kB] 370s Get:78 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-pytest all 8.3.3-1 [251 kB] 370s Get:79 http://ftpmaster.internal/ubuntu plucky-proposed/universe amd64 python3-pytest-asyncio all 0.24.0a1-1 [15.8 kB] 370s Get:80 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-aresponses all 3.0.0-2 [13.8 kB] 370s Get:81 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-coverage amd64 7.4.4+dfsg1-0ubuntu3 [150 kB] 370s Get:82 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-mypy-extensions all 1.0.0-1 [6148 B] 370s Get:83 http://ftpmaster.internal/ubuntu plucky-proposed/main amd64 python3-psutil amd64 5.9.8-2build3 [196 kB] 370s Get:84 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-mypy amd64 1.13.0-1build1 [15.7 MB] 371s Get:85 http://ftpmaster.internal/ubuntu plucky-proposed/universe amd64 python3-pip all 24.2+dfsg-1ubuntu0.1 [1398 kB] 371s Get:86 http://ftpmaster.internal/ubuntu plucky/universe amd64 libjs-jquery-isonscreen all 1.2.0-1.1 [3244 B] 371s Get:87 http://ftpmaster.internal/ubuntu plucky/universe amd64 python3-pytest-cov all 5.0.0-1 [21.3 kB] 371s Get:88 http://ftpmaster.internal/ubuntu plucky/universe amd64 openstack-pkg-tools all 123ubuntu2 [94.5 kB] 371s Fetched 95.3 MB in 3s (28.2 MB/s) 371s (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 ... 75582 files and directories currently installed.) 371s Preparing to unpack .../python3-minimal_3.12.7-1_amd64.deb ... 371s Unpacking python3-minimal (3.12.7-1) over (3.12.6-0ubuntu1) ... 371s Setting up python3-minimal (3.12.7-1) ... 372s (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 ... 75582 files and directories currently installed.) 372s Preparing to unpack .../00-python3_3.12.7-1_amd64.deb ... 372s Unpacking python3 (3.12.7-1) over (3.12.6-0ubuntu1) ... 372s Preparing to unpack .../01-libpython3-stdlib_3.12.7-1_amd64.deb ... 372s Unpacking libpython3-stdlib:amd64 (3.12.7-1) over (3.12.6-0ubuntu1) ... 372s Selecting previously unselected package libpython3.13-minimal:amd64. 372s Preparing to unpack .../02-libpython3.13-minimal_3.13.0-2_amd64.deb ... 372s Unpacking libpython3.13-minimal:amd64 (3.13.0-2) ... 372s Selecting previously unselected package python3.13-minimal. 372s Preparing to unpack .../03-python3.13-minimal_3.13.0-2_amd64.deb ... 372s Unpacking python3.13-minimal (3.13.0-2) ... 372s Selecting previously unselected package libjs-jquery. 372s Preparing to unpack .../04-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 372s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 372s Selecting previously unselected package libjs-jquery-hotkeys. 372s Preparing to unpack .../05-libjs-jquery-hotkeys_0~20130707+git2d51e3a9+dfsg-2.1_all.deb ... 372s Unpacking libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... 372s Selecting previously unselected package m4. 372s Preparing to unpack .../06-m4_1.4.19-4build1_amd64.deb ... 372s Unpacking m4 (1.4.19-4build1) ... 372s Selecting previously unselected package autoconf. 372s Preparing to unpack .../07-autoconf_2.72-3_all.deb ... 372s Unpacking autoconf (2.72-3) ... 372s Selecting previously unselected package autotools-dev. 372s Preparing to unpack .../08-autotools-dev_20220109.1_all.deb ... 372s Unpacking autotools-dev (20220109.1) ... 372s Selecting previously unselected package automake. 372s Preparing to unpack .../09-automake_1%3a1.16.5-1.3ubuntu1_all.deb ... 372s Unpacking automake (1:1.16.5-1.3ubuntu1) ... 372s Selecting previously unselected package autopoint. 372s Preparing to unpack .../10-autopoint_0.22.5-2_all.deb ... 372s Unpacking autopoint (0.22.5-2) ... 372s Selecting previously unselected package libisl23:amd64. 372s Preparing to unpack .../11-libisl23_0.27-1_amd64.deb ... 372s Unpacking libisl23:amd64 (0.27-1) ... 372s Selecting previously unselected package libmpc3:amd64. 372s Preparing to unpack .../12-libmpc3_1.3.1-1build2_amd64.deb ... 372s Unpacking libmpc3:amd64 (1.3.1-1build2) ... 372s Selecting previously unselected package cpp-14-x86-64-linux-gnu. 372s Preparing to unpack .../13-cpp-14-x86-64-linux-gnu_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking cpp-14-x86-64-linux-gnu (14.2.0-8ubuntu1) ... 372s Selecting previously unselected package cpp-14. 372s Preparing to unpack .../14-cpp-14_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking cpp-14 (14.2.0-8ubuntu1) ... 372s Selecting previously unselected package cpp-x86-64-linux-gnu. 372s Preparing to unpack .../15-cpp-x86-64-linux-gnu_4%3a14.1.0-2ubuntu1_amd64.deb ... 372s Unpacking cpp-x86-64-linux-gnu (4:14.1.0-2ubuntu1) ... 372s Selecting previously unselected package cpp. 372s Preparing to unpack .../16-cpp_4%3a14.1.0-2ubuntu1_amd64.deb ... 372s Unpacking cpp (4:14.1.0-2ubuntu1) ... 372s Selecting previously unselected package libcc1-0:amd64. 372s Preparing to unpack .../17-libcc1-0_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking libcc1-0:amd64 (14.2.0-8ubuntu1) ... 372s Selecting previously unselected package libgomp1:amd64. 372s Preparing to unpack .../18-libgomp1_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking libgomp1:amd64 (14.2.0-8ubuntu1) ... 372s Selecting previously unselected package libitm1:amd64. 372s Preparing to unpack .../19-libitm1_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking libitm1:amd64 (14.2.0-8ubuntu1) ... 372s Selecting previously unselected package libasan8:amd64. 372s Preparing to unpack .../20-libasan8_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking libasan8:amd64 (14.2.0-8ubuntu1) ... 372s Selecting previously unselected package liblsan0:amd64. 372s Preparing to unpack .../21-liblsan0_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking liblsan0:amd64 (14.2.0-8ubuntu1) ... 372s Selecting previously unselected package libtsan2:amd64. 372s Preparing to unpack .../22-libtsan2_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking libtsan2:amd64 (14.2.0-8ubuntu1) ... 372s Selecting previously unselected package libubsan1:amd64. 372s Preparing to unpack .../23-libubsan1_14.2.0-8ubuntu1_amd64.deb ... 372s Unpacking libubsan1:amd64 (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package libhwasan0:amd64. 373s Preparing to unpack .../24-libhwasan0_14.2.0-8ubuntu1_amd64.deb ... 373s Unpacking libhwasan0:amd64 (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package libquadmath0:amd64. 373s Preparing to unpack .../25-libquadmath0_14.2.0-8ubuntu1_amd64.deb ... 373s Unpacking libquadmath0:amd64 (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package libgcc-14-dev:amd64. 373s Preparing to unpack .../26-libgcc-14-dev_14.2.0-8ubuntu1_amd64.deb ... 373s Unpacking libgcc-14-dev:amd64 (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package gcc-14-x86-64-linux-gnu. 373s Preparing to unpack .../27-gcc-14-x86-64-linux-gnu_14.2.0-8ubuntu1_amd64.deb ... 373s Unpacking gcc-14-x86-64-linux-gnu (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package gcc-14. 373s Preparing to unpack .../28-gcc-14_14.2.0-8ubuntu1_amd64.deb ... 373s Unpacking gcc-14 (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package gcc-x86-64-linux-gnu. 373s Preparing to unpack .../29-gcc-x86-64-linux-gnu_4%3a14.1.0-2ubuntu1_amd64.deb ... 373s Unpacking gcc-x86-64-linux-gnu (4:14.1.0-2ubuntu1) ... 373s Selecting previously unselected package gcc. 373s Preparing to unpack .../30-gcc_4%3a14.1.0-2ubuntu1_amd64.deb ... 373s Unpacking gcc (4:14.1.0-2ubuntu1) ... 373s Selecting previously unselected package libstdc++-14-dev:amd64. 373s Preparing to unpack .../31-libstdc++-14-dev_14.2.0-8ubuntu1_amd64.deb ... 373s Unpacking libstdc++-14-dev:amd64 (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package g++-14-x86-64-linux-gnu. 373s Preparing to unpack .../32-g++-14-x86-64-linux-gnu_14.2.0-8ubuntu1_amd64.deb ... 373s Unpacking g++-14-x86-64-linux-gnu (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package g++-14. 373s Preparing to unpack .../33-g++-14_14.2.0-8ubuntu1_amd64.deb ... 373s Unpacking g++-14 (14.2.0-8ubuntu1) ... 373s Selecting previously unselected package g++-x86-64-linux-gnu. 373s Preparing to unpack .../34-g++-x86-64-linux-gnu_4%3a14.1.0-2ubuntu1_amd64.deb ... 373s Unpacking g++-x86-64-linux-gnu (4:14.1.0-2ubuntu1) ... 373s Selecting previously unselected package g++. 373s Preparing to unpack .../35-g++_4%3a14.1.0-2ubuntu1_amd64.deb ... 373s Unpacking g++ (4:14.1.0-2ubuntu1) ... 373s Selecting previously unselected package build-essential. 373s Preparing to unpack .../36-build-essential_12.10ubuntu1_amd64.deb ... 373s Unpacking build-essential (12.10ubuntu1) ... 373s Selecting previously unselected package libdebhelper-perl. 373s Preparing to unpack .../37-libdebhelper-perl_13.20ubuntu1_all.deb ... 373s Unpacking libdebhelper-perl (13.20ubuntu1) ... 373s Selecting previously unselected package libtool. 373s Preparing to unpack .../38-libtool_2.4.7-8_all.deb ... 373s Unpacking libtool (2.4.7-8) ... 374s Selecting previously unselected package dh-autoreconf. 374s Preparing to unpack .../39-dh-autoreconf_20_all.deb ... 374s Unpacking dh-autoreconf (20) ... 374s Selecting previously unselected package libarchive-zip-perl. 374s Preparing to unpack .../40-libarchive-zip-perl_1.68-1_all.deb ... 374s Unpacking libarchive-zip-perl (1.68-1) ... 374s Selecting previously unselected package libfile-stripnondeterminism-perl. 374s Preparing to unpack .../41-libfile-stripnondeterminism-perl_1.14.0-1_all.deb ... 374s Unpacking libfile-stripnondeterminism-perl (1.14.0-1) ... 374s Selecting previously unselected package dh-strip-nondeterminism. 374s Preparing to unpack .../42-dh-strip-nondeterminism_1.14.0-1_all.deb ... 374s Unpacking dh-strip-nondeterminism (1.14.0-1) ... 374s Selecting previously unselected package debugedit. 374s Preparing to unpack .../43-debugedit_1%3a5.1-1_amd64.deb ... 374s Unpacking debugedit (1:5.1-1) ... 374s Selecting previously unselected package dwz. 374s Preparing to unpack .../44-dwz_0.15-1build6_amd64.deb ... 374s Unpacking dwz (0.15-1build6) ... 374s Selecting previously unselected package gettext. 374s Preparing to unpack .../45-gettext_0.22.5-2_amd64.deb ... 374s Unpacking gettext (0.22.5-2) ... 374s Selecting previously unselected package intltool-debian. 374s Preparing to unpack .../46-intltool-debian_0.35.0+20060710.6_all.deb ... 374s Unpacking intltool-debian (0.35.0+20060710.6) ... 374s Selecting previously unselected package po-debconf. 374s Preparing to unpack .../47-po-debconf_1.0.21+nmu1_all.deb ... 374s Unpacking po-debconf (1.0.21+nmu1) ... 374s Selecting previously unselected package debhelper. 374s Preparing to unpack .../48-debhelper_13.20ubuntu1_all.deb ... 374s Unpacking debhelper (13.20ubuntu1) ... 374s Selecting previously unselected package dh-python. 374s Preparing to unpack .../49-dh-python_6.20241024_all.deb ... 374s Unpacking dh-python (6.20241024) ... 374s Selecting previously unselected package libjs-jquery-metadata. 374s Preparing to unpack .../50-libjs-jquery-metadata_12-4_all.deb ... 374s Unpacking libjs-jquery-metadata (12-4) ... 374s Selecting previously unselected package libjs-jquery-tablesorter. 374s Preparing to unpack .../51-libjs-jquery-tablesorter_1%3a2.31.3+dfsg1-4_all.deb ... 374s Unpacking libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 374s Selecting previously unselected package libjs-jquery-throttle-debounce. 374s Preparing to unpack .../52-libjs-jquery-throttle-debounce_1.1+dfsg.1-2_all.deb ... 374s Unpacking libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 374s Selecting previously unselected package libpython3.13-stdlib:amd64. 374s Preparing to unpack .../53-libpython3.13-stdlib_3.13.0-2_amd64.deb ... 374s Unpacking libpython3.13-stdlib:amd64 (3.13.0-2) ... 374s Selecting previously unselected package python3-packaging. 374s Preparing to unpack .../54-python3-packaging_24.1-1_all.deb ... 374s Unpacking python3-packaging (24.1-1) ... 374s Selecting previously unselected package python3-pyproject-hooks. 374s Preparing to unpack .../55-python3-pyproject-hooks_1.2.0-1_all.deb ... 374s Unpacking python3-pyproject-hooks (1.2.0-1) ... 374s Selecting previously unselected package python3-toml. 374s Preparing to unpack .../56-python3-toml_0.10.2-1_all.deb ... 374s Unpacking python3-toml (0.10.2-1) ... 374s Selecting previously unselected package python3-wheel. 374s Preparing to unpack .../57-python3-wheel_0.45.0-1_all.deb ... 374s Unpacking python3-wheel (0.45.0-1) ... 374s Selecting previously unselected package python3-build. 374s Preparing to unpack .../58-python3-build_1.2.2-1_all.deb ... 374s Unpacking python3-build (1.2.2-1) ... 374s Selecting previously unselected package python3-installer. 374s Preparing to unpack .../59-python3-installer_0.7.0+dfsg1-3_all.deb ... 374s Unpacking python3-installer (0.7.0+dfsg1-3) ... 374s Selecting previously unselected package pybuild-plugin-pyproject. 374s Preparing to unpack .../60-pybuild-plugin-pyproject_6.20241024_all.deb ... 374s Unpacking pybuild-plugin-pyproject (6.20241024) ... 374s Selecting previously unselected package python3-aiohappyeyeballs. 374s Preparing to unpack .../61-python3-aiohappyeyeballs_2.4.3-1_all.deb ... 374s Unpacking python3-aiohappyeyeballs (2.4.3-1) ... 374s Selecting previously unselected package python3-multidict. 374s Preparing to unpack .../62-python3-multidict_6.1.0-1build1_amd64.deb ... 374s Unpacking python3-multidict (6.1.0-1build1) ... 374s Selecting previously unselected package python3-yarl. 374s Preparing to unpack .../63-python3-yarl_1.13.1-1build1_amd64.deb ... 374s Unpacking python3-yarl (1.13.1-1build1) ... 374s Selecting previously unselected package python3-async-timeout. 374s Preparing to unpack .../64-python3-async-timeout_5.0.1-1_all.deb ... 374s Unpacking python3-async-timeout (5.0.1-1) ... 374s Selecting previously unselected package python3-frozenlist. 374s Preparing to unpack .../65-python3-frozenlist_1.5.0-1build1_amd64.deb ... 374s Unpacking python3-frozenlist (1.5.0-1build1) ... 374s Selecting previously unselected package python3-aiosignal. 374s Preparing to unpack .../66-python3-aiosignal_1.3.1-1_all.deb ... 374s Unpacking python3-aiosignal (1.3.1-1) ... 374s Selecting previously unselected package python3-aiohttp. 374s Preparing to unpack .../67-python3-aiohttp_3.10.10-2build1_amd64.deb ... 374s Unpacking python3-aiohttp (3.10.10-2build1) ... 374s Selecting previously unselected package python3-backoff. 374s Preparing to unpack .../68-python3-backoff_2.2.1-2_all.deb ... 374s Unpacking python3-backoff (2.2.1-2) ... 374s Selecting previously unselected package python3-aiomodernforms. 374s Preparing to unpack .../69-python3-aiomodernforms_0.1.8-2_all.deb ... 374s Unpacking python3-aiomodernforms (0.1.8-2) ... 374s Selecting previously unselected package python3.13. 374s Preparing to unpack .../70-python3.13_3.13.0-2_amd64.deb ... 374s Unpacking python3.13 (3.13.0-2) ... 374s Selecting previously unselected package python3-all. 374s Preparing to unpack .../71-python3-all_3.12.7-1_amd64.deb ... 374s Unpacking python3-all (3.12.7-1) ... 374s Selecting previously unselected package python3-async-generator. 374s Preparing to unpack .../72-python3-async-generator_1.10-4_all.deb ... 374s Unpacking python3-async-generator (1.10-4) ... 374s Selecting previously unselected package python3-iniconfig. 374s Preparing to unpack .../73-python3-iniconfig_1.1.1-2_all.deb ... 374s Unpacking python3-iniconfig (1.1.1-2) ... 374s Selecting previously unselected package python3-pluggy. 374s Preparing to unpack .../74-python3-pluggy_1.5.0-1_all.deb ... 374s Unpacking python3-pluggy (1.5.0-1) ... 374s Selecting previously unselected package python3-pytest. 375s Preparing to unpack .../75-python3-pytest_8.3.3-1_all.deb ... 375s Unpacking python3-pytest (8.3.3-1) ... 375s Selecting previously unselected package python3-pytest-asyncio. 375s Preparing to unpack .../76-python3-pytest-asyncio_0.24.0a1-1_all.deb ... 375s Unpacking python3-pytest-asyncio (0.24.0a1-1) ... 375s Selecting previously unselected package python3-aresponses. 375s Preparing to unpack .../77-python3-aresponses_3.0.0-2_all.deb ... 375s Unpacking python3-aresponses (3.0.0-2) ... 375s Selecting previously unselected package python3-coverage. 375s Preparing to unpack .../78-python3-coverage_7.4.4+dfsg1-0ubuntu3_amd64.deb ... 375s Unpacking python3-coverage (7.4.4+dfsg1-0ubuntu3) ... 375s Selecting previously unselected package python3-mypy-extensions. 375s Preparing to unpack .../79-python3-mypy-extensions_1.0.0-1_all.deb ... 375s Unpacking python3-mypy-extensions (1.0.0-1) ... 375s Selecting previously unselected package python3-psutil. 375s Preparing to unpack .../80-python3-psutil_5.9.8-2build3_amd64.deb ... 375s Unpacking python3-psutil (5.9.8-2build3) ... 375s Selecting previously unselected package python3-mypy. 375s Preparing to unpack .../81-python3-mypy_1.13.0-1build1_amd64.deb ... 375s Unpacking python3-mypy (1.13.0-1build1) ... 375s Selecting previously unselected package python3-pip. 375s Preparing to unpack .../82-python3-pip_24.2+dfsg-1ubuntu0.1_all.deb ... 375s Unpacking python3-pip (24.2+dfsg-1ubuntu0.1) ... 375s Selecting previously unselected package libjs-jquery-isonscreen. 375s Preparing to unpack .../83-libjs-jquery-isonscreen_1.2.0-1.1_all.deb ... 375s Unpacking libjs-jquery-isonscreen (1.2.0-1.1) ... 375s Selecting previously unselected package python3-pytest-cov. 375s Preparing to unpack .../84-python3-pytest-cov_5.0.0-1_all.deb ... 375s Unpacking python3-pytest-cov (5.0.0-1) ... 375s Selecting previously unselected package openstack-pkg-tools. 375s Preparing to unpack .../85-openstack-pkg-tools_123ubuntu2_all.deb ... 375s Unpacking openstack-pkg-tools (123ubuntu2) ... 375s Selecting previously unselected package autopkgtest-satdep. 375s Preparing to unpack .../86-1-autopkgtest-satdep.deb ... 375s Unpacking autopkgtest-satdep (0) ... 375s Setting up libarchive-zip-perl (1.68-1) ... 375s Setting up libdebhelper-perl (13.20ubuntu1) ... 375s Setting up m4 (1.4.19-4build1) ... 375s Setting up libjs-jquery-throttle-debounce (1.1+dfsg.1-2) ... 375s Setting up libgomp1:amd64 (14.2.0-8ubuntu1) ... 375s Setting up libpython3.13-minimal:amd64 (3.13.0-2) ... 375s Setting up autotools-dev (20220109.1) ... 375s Setting up libquadmath0:amd64 (14.2.0-8ubuntu1) ... 375s Setting up libmpc3:amd64 (1.3.1-1build2) ... 375s Setting up autopoint (0.22.5-2) ... 375s Setting up autoconf (2.72-3) ... 375s Setting up libubsan1:amd64 (14.2.0-8ubuntu1) ... 375s Setting up dwz (0.15-1build6) ... 375s Setting up libhwasan0:amd64 (14.2.0-8ubuntu1) ... 375s Setting up libasan8:amd64 (14.2.0-8ubuntu1) ... 375s Setting up debugedit (1:5.1-1) ... 375s Setting up python3.13-minimal (3.13.0-2) ... 376s Setting up libtsan2:amd64 (14.2.0-8ubuntu1) ... 376s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 376s Setting up libjs-jquery-hotkeys (0~20130707+git2d51e3a9+dfsg-2.1) ... 376s Setting up libisl23:amd64 (0.27-1) ... 376s Setting up libpython3.13-stdlib:amd64 (3.13.0-2) ... 376s Setting up libcc1-0:amd64 (14.2.0-8ubuntu1) ... 376s Setting up liblsan0:amd64 (14.2.0-8ubuntu1) ... 376s Setting up libitm1:amd64 (14.2.0-8ubuntu1) ... 376s Setting up libpython3-stdlib:amd64 (3.12.7-1) ... 376s Setting up automake (1:1.16.5-1.3ubuntu1) ... 376s update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode 376s Setting up libfile-stripnondeterminism-perl (1.14.0-1) ... 376s Setting up gettext (0.22.5-2) ... 376s Setting up python3.13 (3.13.0-2) ... 377s Setting up python3 (3.12.7-1) ... 377s Setting up python3-wheel (0.45.0-1) ... 377s Setting up python3-psutil (5.9.8-2build3) ... 378s Setting up python3-multidict (6.1.0-1build1) ... 378s Setting up python3-frozenlist (1.5.0-1build1) ... 378s Setting up python3-aiosignal (1.3.1-1) ... 378s Setting up intltool-debian (0.35.0+20060710.6) ... 378s Setting up python3-async-timeout (5.0.1-1) ... 378s Setting up python3-packaging (24.1-1) ... 379s Setting up python3-pyproject-hooks (1.2.0-1) ... 379s Setting up libjs-jquery-metadata (12-4) ... 379s Setting up libjs-jquery-isonscreen (1.2.0-1.1) ... 379s Setting up cpp-14-x86-64-linux-gnu (14.2.0-8ubuntu1) ... 379s Setting up python3-aiohappyeyeballs (2.4.3-1) ... 379s Setting up python3-pip (24.2+dfsg-1ubuntu0.1) ... 380s Setting up python3-toml (0.10.2-1) ... 381s Setting up python3-installer (0.7.0+dfsg1-3) ... 381s Setting up cpp-14 (14.2.0-8ubuntu1) ... 381s Setting up python3-pluggy (1.5.0-1) ... 381s Setting up dh-strip-nondeterminism (1.14.0-1) ... 381s Setting up libjs-jquery-tablesorter (1:2.31.3+dfsg1-4) ... 381s Setting up python3-backoff (2.2.1-2) ... 381s Setting up libgcc-14-dev:amd64 (14.2.0-8ubuntu1) ... 381s Setting up python3-build (1.2.2-1) ... 381s Setting up libstdc++-14-dev:amd64 (14.2.0-8ubuntu1) ... 381s Setting up python3-yarl (1.13.1-1build1) ... 381s Setting up cpp-x86-64-linux-gnu (4:14.1.0-2ubuntu1) ... 381s Setting up dh-python (6.20241024) ... 381s Setting up python3-iniconfig (1.1.1-2) ... 382s Setting up python3-async-generator (1.10-4) ... 382s Setting up pybuild-plugin-pyproject (6.20241024) ... 382s Setting up python3-pytest (8.3.3-1) ... 382s Setting up python3-mypy-extensions (1.0.0-1) ... 382s Setting up po-debconf (1.0.21+nmu1) ... 382s Setting up python3-aiohttp (3.10.10-2build1) ... 383s Setting up python3-all (3.12.7-1) ... 383s Setting up python3-coverage (7.4.4+dfsg1-0ubuntu3) ... 383s Setting up python3-pytest-cov (5.0.0-1) ... 383s Setting up python3-aiomodernforms (0.1.8-2) ... 383s Setting up openstack-pkg-tools (123ubuntu2) ... 383s Setting up python3-mypy (1.13.0-1build1) ... 385s Setting up python3-pytest-asyncio (0.24.0a1-1) ... 385s Setting up cpp (4:14.1.0-2ubuntu1) ... 385s Setting up gcc-14-x86-64-linux-gnu (14.2.0-8ubuntu1) ... 385s Setting up gcc-x86-64-linux-gnu (4:14.1.0-2ubuntu1) ... 385s Setting up python3-aresponses (3.0.0-2) ... 385s Setting up gcc-14 (14.2.0-8ubuntu1) ... 385s Setting up g++-14-x86-64-linux-gnu (14.2.0-8ubuntu1) ... 385s Setting up g++-x86-64-linux-gnu (4:14.1.0-2ubuntu1) ... 385s Setting up g++-14 (14.2.0-8ubuntu1) ... 385s Setting up libtool (2.4.7-8) ... 385s Setting up gcc (4:14.1.0-2ubuntu1) ... 385s Setting up dh-autoreconf (20) ... 385s Setting up g++ (4:14.1.0-2ubuntu1) ... 385s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 385s Setting up build-essential (12.10ubuntu1) ... 385s Setting up debhelper (13.20ubuntu1) ... 385s Setting up autopkgtest-satdep (0) ... 385s Processing triggers for systemd (256.5-2ubuntu4) ... 386s Processing triggers for man-db (2.13.0-1) ... 387s Processing triggers for install-info (7.1.1-1) ... 387s Processing triggers for libc-bin (2.40-1ubuntu3) ... 390s (Reading database ... 82003 files and directories currently installed.) 390s Removing autopkgtest-satdep (0) ... 390s autopkgtest [23:42:12]: test pybuild-autopkgtest: pybuild-autopkgtest 390s autopkgtest [23:42:12]: test pybuild-autopkgtest: [----------------------- 391s make: pyversions: No such file or directory 391s py3versions: no X-Python3-Version in control file, using supported versions 391s pybuild-autopkgtest 391s I: pybuild base:311: cd /tmp/autopkgtest.linh5x/autopkgtest_tmp/build; python3.13 -m pytest -v 391s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:208: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. 391s 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" 391s 391s warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) 391s ============================= test session starts ============================== 391s platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.13 391s cachedir: .pytest_cache 391s rootdir: /tmp/autopkgtest.linh5x/autopkgtest_tmp/build 391s configfile: pytest.ini 391s testpaths: tests 391s plugins: typeguard-4.4.1, aresponses-3.0.0, asyncio-0.24.0a1, cov-5.0.0 391s asyncio: mode=Mode.STRICT, default_loop_scope=None 391s collecting ... collected 19 items 391s 391s tests/test_aiomodernforms.py::test_basic_status FAILED [ 5%] 391s tests/test_aiomodernforms.py::test_command FAILED [ 10%] 392s tests/test_aiomodernforms.py::test_light FAILED [ 15%] 392s tests/test_aiomodernforms.py::test_light_sleep_datetime FAILED [ 21%] 392s tests/test_aiomodernforms.py::test_light_sleep_int FAILED [ 26%] 392s tests/test_aiomodernforms.py::test_light_sleep_clear FAILED [ 31%] 392s tests/test_aiomodernforms.py::test_fan FAILED [ 36%] 392s tests/test_aiomodernforms.py::test_fan_sleep_datetime FAILED [ 42%] 392s tests/test_aiomodernforms.py::test_fan_sleep_int FAILED [ 47%] 392s tests/test_aiomodernforms.py::test_fan_sleep_clear FAILED [ 52%] 392s tests/test_aiomodernforms.py::test_away FAILED [ 57%] 392s tests/test_aiomodernforms.py::test_adaptive_learning FAILED [ 63%] 392s tests/test_aiomodernforms.py::test_invalid_setting FAILED [ 68%] 392s tests/test_aiomodernforms.py::test_connection_error FAILED [ 73%] 392s tests/test_aiomodernforms.py::test_server_error FAILED [ 78%] 392s tests/test_aiomodernforms.py::test_reboot FAILED [ 84%] 392s tests/test_aiomodernforms.py::test_status_not_initialized_response PASSED [ 89%] 392s tests/test_aiomodernforms.py::test_info_not_initialized_response PASSED [ 94%] 392s tests/test_aiomodernforms.py::test_empty_response FAILED [100%] 392s 392s =================================== FAILURES =================================== 392s ______________________________ test_basic_status _______________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_basic_status(aresponses): 392s """Test JSON response is handled correctly.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add( 392s "fan.local", 392s "/mf", 392s "POST", 392s response=basic_response, 392s repeat=2, 392s ) 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:79: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _________________________________ test_command _________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_command(aresponses): 392s """Test to make sure setting lights works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_POWER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:108: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s __________________________________ test_light __________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_light(aresponses): 392s """Test to make sure setting lights works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_POWER in data 392s assert aiomodernforms.COMMAND_LIGHT_BRIGHTNESS in data 392s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 392s modified_response[STATE_LIGHT_BRIGHTNESS] = data[ 392s aiomodernforms.COMMAND_LIGHT_BRIGHTNESS 392s ] 392s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:143: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s __________________________ test_light_sleep_datetime ___________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_light_sleep_datetime(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s sleep_time = datetime.now() + timedelta(minutes=2) 392s > await device.light( 392s sleep=sleep_time, 392s ) 392s 392s tests/test_aiomodernforms.py:180: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _____________________________ test_light_sleep_int _____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_light_sleep_int(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s sleep_time = datetime.now() + timedelta(seconds=120) 392s > await device.light( 392s sleep=120, 392s ) 392s 392s tests/test_aiomodernforms.py:209: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ____________________________ test_light_sleep_clear ____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_light_sleep_clear(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s # check to clear timer 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.light( 392s sleep=0, 392s ) 392s 392s tests/test_aiomodernforms.py:238: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ___________________________________ test_fan ___________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_fan(aresponses): 392s """Test to make sure setting fan works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_FAN_POWER in data 392s assert aiomodernforms.COMMAND_FAN_SPEED in data 392s assert aiomodernforms.COMMAND_FAN_DIRECTION in data 392s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_FAN_POWER] = data[aiomodernforms.COMMAND_FAN_POWER] 392s modified_response[STATE_FAN_SPEED] = data[aiomodernforms.COMMAND_FAN_SPEED] 392s modified_response[STATE_FAN_DIRECTION] = data[ 392s aiomodernforms.COMMAND_FAN_DIRECTION 392s ] 392s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:274: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ___________________________ test_fan_sleep_datetime ____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_fan_sleep_datetime(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s sleep_time = datetime.now() + timedelta(minutes=2) 392s > await device.fan( 392s sleep=sleep_time, 392s ) 392s 392s tests/test_aiomodernforms.py:311: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ______________________________ test_fan_sleep_int ______________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_fan_sleep_int(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s sleep_time = datetime.now() + timedelta(seconds=120) 392s > await device.fan( 392s sleep=120, 392s ) 392s 392s tests/test_aiomodernforms.py:340: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _____________________________ test_fan_sleep_clear _____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_fan_sleep_clear(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s # check to clear timer 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.fan( 392s sleep=0, 392s ) 392s 392s tests/test_aiomodernforms.py:369: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s __________________________________ test_away ___________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_away(aresponses): 392s """Test to make sure setting away mode works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_AWAY_MODE in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_AWAY_MODE] = data[aiomodernforms.COMMAND_AWAY_MODE] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:395: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ____________________________ test_adaptive_learning ____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_adaptive_learning(aresponses): 392s """Test to make sure setting adaptive learning mode works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_ADAPTIVE_LEARNING in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_ADAPTIVE_LEARNING] = data[ 392s aiomodernforms.COMMAND_ADAPTIVE_LEARNING 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:422: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _____________________________ test_invalid_setting _____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_invalid_setting(aresponses): 392s """Test to make sure setting invalid settings are rejected.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:434: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ____________________________ test_connection_error _____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_connection_error(aresponses): 392s """Test to make validate proper connection error handling.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s with pytest.raises(aiomodernforms.ModernFormsConnectionError): 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:502: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ______________________________ test_server_error _______________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_server_error(aresponses): 392s """Test to make validate proper server error handling.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add( 392s "fan.local", 392s "/mf", 392s "POST", 392s response=aresponses.Response(text="error", status=500), 392s ) 392s 392s with pytest.raises(aiomodernforms.ModernFormsError): 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:518: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _________________________________ test_reboot __________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_reboot(aresponses): 392s """Test how reboot is handled.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:528: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _____________________________ test_empty_response ______________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_empty_response(aresponses): 392s """Test for an Empty Response.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s 392s async def send_empty_state(request): 392s await request.json() 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text="{}", 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=send_empty_state) 392s with pytest.raises(ModernFormsConnectionError): 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:568: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s =========================== short test summary info ============================ 392s FAILED tests/test_aiomodernforms.py::test_basic_status - TypeError: 'Timeout'... 392s FAILED tests/test_aiomodernforms.py::test_command - TypeError: 'Timeout' obje... 392s FAILED tests/test_aiomodernforms.py::test_light - TypeError: 'Timeout' object... 392s FAILED tests/test_aiomodernforms.py::test_light_sleep_datetime - TypeError: '... 392s FAILED tests/test_aiomodernforms.py::test_light_sleep_int - TypeError: 'Timeo... 392s FAILED tests/test_aiomodernforms.py::test_light_sleep_clear - TypeError: 'Tim... 392s FAILED tests/test_aiomodernforms.py::test_fan - TypeError: 'Timeout' object d... 392s FAILED tests/test_aiomodernforms.py::test_fan_sleep_datetime - TypeError: 'Ti... 392s FAILED tests/test_aiomodernforms.py::test_fan_sleep_int - TypeError: 'Timeout... 392s FAILED tests/test_aiomodernforms.py::test_fan_sleep_clear - TypeError: 'Timeo... 392s FAILED tests/test_aiomodernforms.py::test_away - TypeError: 'Timeout' object ... 392s FAILED tests/test_aiomodernforms.py::test_adaptive_learning - TypeError: 'Tim... 392s FAILED tests/test_aiomodernforms.py::test_invalid_setting - TypeError: 'Timeo... 392s FAILED tests/test_aiomodernforms.py::test_connection_error - TypeError: 'Time... 392s FAILED tests/test_aiomodernforms.py::test_server_error - TypeError: 'Timeout'... 392s FAILED tests/test_aiomodernforms.py::test_reboot - TypeError: 'Timeout' objec... 392s FAILED tests/test_aiomodernforms.py::test_empty_response - TypeError: 'Timeou... 392s ========================= 17 failed, 2 passed in 0.31s ========================= 392s E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.linh5x/autopkgtest_tmp/build; python3.13 -m pytest -v 392s I: pybuild base:311: cd /tmp/autopkgtest.linh5x/autopkgtest_tmp/build; python3.12 -m pytest -v 392s /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:208: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. 392s 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" 392s 392s warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) 392s ============================= test session starts ============================== 392s platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.12 392s cachedir: .pytest_cache 392s rootdir: /tmp/autopkgtest.linh5x/autopkgtest_tmp/build 392s configfile: pytest.ini 392s testpaths: tests 392s plugins: typeguard-4.4.1, aresponses-3.0.0, asyncio-0.24.0a1, cov-5.0.0 392s asyncio: mode=Mode.STRICT, default_loop_scope=None 392s collecting ... collected 19 items 392s 392s tests/test_aiomodernforms.py::test_basic_status FAILED [ 5%] 392s tests/test_aiomodernforms.py::test_command FAILED [ 10%] 392s tests/test_aiomodernforms.py::test_light FAILED [ 15%] 392s tests/test_aiomodernforms.py::test_light_sleep_datetime FAILED [ 21%] 392s tests/test_aiomodernforms.py::test_light_sleep_int FAILED [ 26%] 392s tests/test_aiomodernforms.py::test_light_sleep_clear FAILED [ 31%] 392s tests/test_aiomodernforms.py::test_fan FAILED [ 36%] 392s tests/test_aiomodernforms.py::test_fan_sleep_datetime FAILED [ 42%] 392s tests/test_aiomodernforms.py::test_fan_sleep_int FAILED [ 47%] 392s tests/test_aiomodernforms.py::test_fan_sleep_clear FAILED [ 52%] 392s tests/test_aiomodernforms.py::test_away FAILED [ 57%] 392s tests/test_aiomodernforms.py::test_adaptive_learning FAILED [ 63%] 392s tests/test_aiomodernforms.py::test_invalid_setting FAILED [ 68%] 392s tests/test_aiomodernforms.py::test_connection_error FAILED [ 73%] 392s tests/test_aiomodernforms.py::test_server_error FAILED [ 78%] 392s tests/test_aiomodernforms.py::test_reboot FAILED [ 84%] 392s tests/test_aiomodernforms.py::test_status_not_initialized_response PASSED [ 89%] 392s tests/test_aiomodernforms.py::test_info_not_initialized_response PASSED [ 94%] 392s tests/test_aiomodernforms.py::test_empty_response FAILED [100%] 392s 392s =================================== FAILURES =================================== 392s ______________________________ test_basic_status _______________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_basic_status(aresponses): 392s """Test JSON response is handled correctly.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add( 392s "fan.local", 392s "/mf", 392s "POST", 392s response=basic_response, 392s repeat=2, 392s ) 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:79: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _________________________________ test_command _________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_command(aresponses): 392s """Test to make sure setting lights works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_POWER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:108: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s __________________________________ test_light __________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_light(aresponses): 392s """Test to make sure setting lights works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_POWER in data 392s assert aiomodernforms.COMMAND_LIGHT_BRIGHTNESS in data 392s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_POWER] = data[aiomodernforms.COMMAND_LIGHT_POWER] 392s modified_response[STATE_LIGHT_BRIGHTNESS] = data[ 392s aiomodernforms.COMMAND_LIGHT_BRIGHTNESS 392s ] 392s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:143: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s __________________________ test_light_sleep_datetime ___________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_light_sleep_datetime(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s sleep_time = datetime.now() + timedelta(minutes=2) 392s > await device.light( 392s sleep=sleep_time, 392s ) 392s 392s tests/test_aiomodernforms.py:180: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _____________________________ test_light_sleep_int _____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_light_sleep_int(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s sleep_time = datetime.now() + timedelta(seconds=120) 392s > await device.light( 392s sleep=120, 392s ) 392s 392s tests/test_aiomodernforms.py:209: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ____________________________ test_light_sleep_clear ____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_light_sleep_clear(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_LIGHT_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_LIGHT_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s # check to clear timer 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.light( 392s sleep=0, 392s ) 392s 392s tests/test_aiomodernforms.py:238: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:251: in light 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ___________________________________ test_fan ___________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_fan(aresponses): 392s """Test to make sure setting fan works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_FAN_POWER in data 392s assert aiomodernforms.COMMAND_FAN_SPEED in data 392s assert aiomodernforms.COMMAND_FAN_DIRECTION in data 392s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_FAN_POWER] = data[aiomodernforms.COMMAND_FAN_POWER] 392s modified_response[STATE_FAN_SPEED] = data[aiomodernforms.COMMAND_FAN_SPEED] 392s modified_response[STATE_FAN_DIRECTION] = data[ 392s aiomodernforms.COMMAND_FAN_DIRECTION 392s ] 392s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:274: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ___________________________ test_fan_sleep_datetime ____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_fan_sleep_datetime(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s sleep_time = datetime.now() + timedelta(minutes=2) 392s > await device.fan( 392s sleep=sleep_time, 392s ) 392s 392s tests/test_aiomodernforms.py:311: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ______________________________ test_fan_sleep_int ______________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_fan_sleep_int(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s sleep_time = datetime.now() + timedelta(seconds=120) 392s > await device.fan( 392s sleep=120, 392s ) 392s 392s tests/test_aiomodernforms.py:340: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _____________________________ test_fan_sleep_clear _____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_fan_sleep_clear(aresponses): 392s """Test to make sure setting light sleep works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_FAN_SLEEP_TIMER in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_FAN_SLEEP_TIMER] = data[ 392s aiomodernforms.COMMAND_FAN_SLEEP_TIMER 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s # check to clear timer 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.fan( 392s sleep=0, 392s ) 392s 392s tests/test_aiomodernforms.py:369: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:313: in fan 392s await self.request(commands=commands) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:178: in request 392s await self.update() 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s __________________________________ test_away ___________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_away(aresponses): 392s """Test to make sure setting away mode works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_AWAY_MODE in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_AWAY_MODE] = data[aiomodernforms.COMMAND_AWAY_MODE] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:395: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ____________________________ test_adaptive_learning ____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_adaptive_learning(aresponses): 392s """Test to make sure setting adaptive learning mode works.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async def evaluate_request(request): 392s data = await request.json() 392s assert aiomodernforms.COMMAND_ADAPTIVE_LEARNING in data 392s modified_response = basic_response.copy() 392s modified_response[STATE_ADAPTIVE_LEARNING] = data[ 392s aiomodernforms.COMMAND_ADAPTIVE_LEARNING 392s ] 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text=json.dumps(modified_response), 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=evaluate_request) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:422: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _____________________________ test_invalid_setting _____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_invalid_setting(aresponses): 392s """Test to make sure setting invalid settings are rejected.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:434: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ____________________________ test_connection_error _____________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_connection_error(aresponses): 392s """Test to make validate proper connection error handling.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s with pytest.raises(aiomodernforms.ModernFormsConnectionError): 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:502: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s ______________________________ test_server_error _______________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_server_error(aresponses): 392s """Test to make validate proper server error handling.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add( 392s "fan.local", 392s "/mf", 392s "POST", 392s response=aresponses.Response(text="error", status=500), 392s ) 392s 392s with pytest.raises(aiomodernforms.ModernFormsError): 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:518: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _________________________________ test_reboot __________________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_reboot(aresponses): 392s """Test how reboot is handled.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s aresponses.add("fan.local", "/mf", "POST", response=basic_response) 392s 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:528: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s _____________________________ test_empty_response ______________________________ 392s 392s aresponses = 392s 392s @pytest.mark.asyncio 392s async def test_empty_response(aresponses): 392s """Test for an Empty Response.""" 392s aresponses.add("fan.local", "/mf", "POST", response=basic_info) 392s 392s async def send_empty_state(request): 392s await request.json() 392s return aresponses.Response( 392s status=200, 392s content_type="application/json", 392s text="{}", 392s ) 392s 392s aresponses.add("fan.local", "/mf", "POST", response=send_empty_state) 392s with pytest.raises(ModernFormsConnectionError): 392s async with aiomodernforms.ModernFormsDevice("fan.local") as device: 392s > await device.update() 392s 392s tests/test_aiomodernforms.py:568: 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:96: in update 392s info_data = await self._request({COMMAND_QUERY_STATIC_DATA: True}) 392s /usr/lib/python3/dist-packages/backoff/_async.py:151: in retry 392s ret = await target(*args, **kwargs) 392s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 392s 392s self = 392s commands = {'queryStaticShadowData': True} 392s 392s @backoff.on_exception( 392s backoff.expo, ModernFormsConnectionError, max_tries=3, logger=None 392s ) 392s async def _request(self, commands: Optional[dict] = None) -> Any: 392s """Handle a request to a Modern Forms Fan device.""" 392s scheme = "https" if self._tls else "http" 392s url = URL.build( 392s scheme=scheme, 392s host=self._host, 392s port=self._port, 392s path=self._base_path, 392s ) 392s 392s auth = None 392s if self._username and self._password: 392s auth = aiohttp.BasicAuth(self._username, self._password) 392s 392s headers = { 392s "User-Agent": self._user_agent, 392s "Accept": "application/json", 392s } 392s 392s if self._session is None: 392s self._session = aiohttp.ClientSession() 392s self._close_session = True 392s 392s # If updating the state, always request for a state response 392s if commands is None: 392s commands = {COMMAND_QUERY_STATUS: True} 392s 392s try: 392s > with async_timeout.timeout(self._request_timeout): 392s E TypeError: 'Timeout' object does not support the context manager protocol 392s 392s /usr/lib/python3/dist-packages/aiomodernforms/modernforms.py:139: TypeError 392s =========================== short test summary info ============================ 392s FAILED tests/test_aiomodernforms.py::test_basic_status - TypeError: 'Timeout'... 392s FAILED tests/test_aiomodernforms.py::test_command - TypeError: 'Timeout' obje... 392s FAILED tests/test_aiomodernforms.py::test_light - TypeError: 'Timeout' object... 392s FAILED tests/test_aiomodernforms.py::test_light_sleep_datetime - TypeError: '... 392s FAILED tests/test_aiomodernforms.py::test_light_sleep_int - TypeError: 'Timeo... 392s FAILED tests/test_aiomodernforms.py::test_light_sleep_clear - TypeError: 'Tim... 392s FAILED tests/test_aiomodernforms.py::test_fan - TypeError: 'Timeout' object d... 392s FAILED tests/test_aiomodernforms.py::test_fan_sleep_datetime - TypeError: 'Ti... 392s FAILED tests/test_aiomodernforms.py::test_fan_sleep_int - TypeError: 'Timeout... 392s FAILED tests/test_aiomodernforms.py::test_fan_sleep_clear - TypeError: 'Timeo... 392s FAILED tests/test_aiomodernforms.py::test_away - TypeError: 'Timeout' object ... 392s FAILED tests/test_aiomodernforms.py::test_adaptive_learning - TypeError: 'Tim... 392s FAILED tests/test_aiomodernforms.py::test_invalid_setting - TypeError: 'Timeo... 392s FAILED tests/test_aiomodernforms.py::test_connection_error - TypeError: 'Time... 392s FAILED tests/test_aiomodernforms.py::test_server_error - TypeError: 'Timeout'... 392s FAILED tests/test_aiomodernforms.py::test_reboot - TypeError: 'Timeout' objec... 392s FAILED tests/test_aiomodernforms.py::test_empty_response - TypeError: 'Timeou... 392s ========================= 17 failed, 2 passed in 0.33s ========================= 392s E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /tmp/autopkgtest.linh5x/autopkgtest_tmp/build; python3.12 -m pytest -v 392s pybuild-autopkgtest: error: pybuild --autopkgtest --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13 393s make: *** [/tmp/B5EVRzRViR/run:4: pybuild-autopkgtest] Error 25 393s pybuild-autopkgtest: error: /tmp/B5EVRzRViR/run pybuild-autopkgtest returned exit code 2 393s autopkgtest [23:42:15]: test pybuild-autopkgtest: -----------------------] 393s autopkgtest [23:42:15]: test pybuild-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 393s pybuild-autopkgtest FAIL non-zero exit status 25 394s autopkgtest [23:42:16]: @@@@@@@@@@@@@@@@@@@@ summary 394s pybuild-autopkgtest FAIL non-zero exit status 25 405s nova [W] Skipping flock for amd64 405s Creating nova instance adt-plucky-amd64-python-aiomodernforms-20241115-230038-juju-7f2275-prod-proposed-migration-environment-15-0e100778-244b-447b-9e55-2336f3a06462 from image adt/ubuntu-plucky-amd64-server-20241115.img (UUID 9bb4dd9c-454f-45da-a125-77b9d27ed145)... 405s nova [W] nova quota exceeded (attempt #0)