{"app_name":"Debian Janitor","binary_packages":[],"branch_url":"https://salsa.debian.org/homeassistant-team/deps/python-aioesphomeapi.git/","build_log_highlight_lines":[1458,1515,1545,1575,1605,1635,1665,1695,1725,1755,1785,1815,1845,1875,1905,1935,1965,1995,2025,2055,2085,2115,2145,2175,2205,2235,2265,2295,2325,2355,2385,2415,2445,2475,2505,2535,2565,2595,2625,2655,2685,2715,2745,2775,2805,2835,2865,2895,2925,2955,2985,3015,3045,3075,3105,3135,3165,3195,3225,3255,3285,3315,3345,3375,3405,3435,3465,3495,3525,3555,3585,3615,3645,3675,3705,3735,3765,3795,3825,3855,3885,3915,3945,3975,4005,4035,4065,4095,4125,4155,4185,4215,4245,5877,5907,5937,6100,6171,6242,6294,6346,6400,6467,6975,9166,9202,9238,9274,9310,9346,9382,9418,9454,9490,9695,9740,9785,9858,9931,10004,10065,10126,10187,10248,10309,10374,10426,10478,10504,10518,10523,10524,10529,10530,10531,10532,10533,10534,10535,10536,10537,10538,10539,10540,10541,10542,10543,10544,10545,10546,10547,10548,10549,10550,10551,10552,10553,10554,10557,10558,10559,10560,10561,10562,10563,10564,10565,10566,10567,10568,10569,10570,10571,10572,10573,10574,10575,10576,10577,10578,10579,10580,10581,10582,10588,10589,10594,10595,10596,10597,10598,10599,10600,10601,10602,10603,10604,10608,10609,10610,10611,10639,10640,10641,10650,10705,12827,12898,12969,13021,13073,13127,16085,16086,16087,16127],"build_log_include_lines":[16112,16127],"build_log_line_count":16127,"build_log_name":"build.log","campaign":"lintian-fixes","change_set":"d9490f63-f990-4657-a90b-34e05488bdb7","codebase":"python-aioesphomeapi","codemod_log_name":"codemod.log","command":"DEB_UPDATE_CHANGELOG=auto lintian-brush","current_year":"2026","description":"Missing dependency: a suitable plugin for your async framework, for example:","failure_excerpt":{"full_log_url":"/lintian-fixes/c/python-aioesphomeapi/d9490f63-f990-4657-a90b-34e05488bdb7/logs/build.log","highlighted_indices":[14381],"lines":["","","Unpack source","-------------","","Format: 3.0 (quilt)","Source: python-aioesphomeapi","Binary: python3-aioesphomeapi","Architecture: all","Version: 25.1.0-2.1~jan+lint1","Maintainer: Home Assistant Team <team+homeassistant@tracker.debian.org>","Uploaders: Thomas Goirand <zigo@debian.org>","Homepage: https://github.com/esphome/aioesphomeapi/","Standards-Version: 4.7.4","Vcs-Browser: https://salsa.debian.org/homeassistant-team/deps/python-aioesphomeapi","Vcs-Git: https://salsa.debian.org/homeassistant-team/deps/python-aioesphomeapi.git","Testsuite: autopkgtest","Testsuite-Triggers: @builddeps@, pybuild-plugin-autopkgtest","Build-Depends: debhelper-compat (= 13), dh-python, openstack-pkg-tools, pybuild-plugin-pyproject, python3-all, python3-setuptools","Build-Depends-Indep: python3-aiohappyeyeballs, python3-async-interrupt, python3-async-timeout, python3-chacha20poly1305-reuseable, python3-cryptography, python3-noiseprotocol, python3-protobuf, python3-pytest, python3-pytest-asyncio, python3-pytest-cov, python3-zeroconf","Package-List:"," python3-aioesphomeapi deb python optional arch=all","Checksums-Sha1:"," 3a00226b0465100672df92e905b871cfed36deb3 114460 python-aioesphomeapi_25.1.0.orig.tar.gz"," d591d77f5f694cd78945c6031955965622cb2fbc 2944 python-aioesphomeapi_25.1.0-2.1~jan+lint1.debian.tar.xz","Checksums-Sha256:"," c0dced867faeb577ac7f8bd3293eb2d0534fcde087936656f9f62ba64b9f4024 114460 python-aioesphomeapi_25.1.0.orig.tar.gz"," c1513798b76047c463f7744d53f8dae0dd4b07b2fce68d5a86e1e79c599ad35d 2944 python-aioesphomeapi_25.1.0-2.1~jan+lint1.debian.tar.xz","Files:"," dbcdfe95f82ebfc59587994beb62f68a 114460 python-aioesphomeapi_25.1.0.orig.tar.gz"," 93461eb578e07d82cce660529c6fd178 2944 python-aioesphomeapi_25.1.0-2.1~jan+lint1.debian.tar.xz","","dpkg-source: warning: extracting unsigned source package (python-aioesphomeapi_25.1.0-2.1~jan+lint1.dsc)","dpkg-source: info: extracting python-aioesphomeapi in /build/reproducible-path/python-aioesphomeapi-25.1.0","dpkg-source: info: unpacking python-aioesphomeapi_25.1.0.orig.tar.gz","dpkg-source: info: unpacking python-aioesphomeapi_25.1.0-2.1~jan+lint1.debian.tar.xz","dpkg-source: info: using patch list from debian/patches/series","dpkg-source: info: applying relax-cryptography-depends.patch","dpkg-source: info: applying use-noiseprotocol-not-noise.patch","","clean up apt cache","------------------","","","Check disk space","----------------","","Sufficient free space for build","","User Environment","----------------","","APT_CONFIG=/var/lib/sbuild/apt.conf","HOME=/sbuild-nonexistent","LC_ALL=C.UTF-8","LC_CTYPE=C.UTF-8","LOGNAME=sbuild","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games","SHELL=/bin/sh","SOURCE_DATE_EPOCH=1778626813","USER=sbuild","","dpkg-buildpackage","-----------------","","Command: dpkg-buildpackage --sanitize-env -us -uc","dpkg-buildpackage: info: source package python-aioesphomeapi","dpkg-buildpackage: info: source version 25.1.0-2.1~jan+lint1","dpkg-buildpackage: info: source distribution lintian-fixes","dpkg-buildpackage: info: source changed by Piotr Ożarowski <piotr@debian.org>"," dpkg-source --before-build .","dpkg-buildpackage: info: host architecture amd64","dpkg-source: info: using options from /build/reproducible-path/python-aioesphomeapi-25.1.0/debian/source/options: --extend-diff-ignore=^[^/]*[.]egg-info/"," debian/rules clean","make: pyversions: No such file or directory","py3versions: no X-Python3-Version in control file, using supported versions","dh clean --buildsystem=pybuild --with python3","   dh_auto_clean -O--buildsystem=pybuild","   dh_autoreconf_clean -O--buildsystem=pybuild","   dh_clean -O--buildsystem=pybuild"," dpkg-source -b .","dpkg-source: info: using options from /build/reproducible-path/python-aioesphomeapi-25.1.0/debian/source/options: --extend-diff-ignore=^[^/]*[.]egg-info/","dpkg-source: info: using source format '3.0 (quilt)'","dpkg-source: info: building python-aioesphomeapi using existing ../python-aioesphomeapi_25.1.0.orig.tar.gz","dpkg-source: info: using patch list from debian/patches/series","dpkg-source: info: building python-aioesphomeapi in ../python-aioesphomeapi_25.1.0-2.1~jan+lint1.debian.tar.xz","dpkg-source: info: building python-aioesphomeapi in ../python-aioesphomeapi_25.1.0-2.1~jan+lint1.dsc"," debian/rules binary","make: pyversions: No such file or directory","py3versions: no X-Python3-Version in control file, using supported versions","dh binary --buildsystem=pybuild --with python3","   dh_update_autotools_config -O--buildsystem=pybuild","   dh_autoreconf -O--buildsystem=pybuild","   dh_auto_configure -O--buildsystem=pybuild","   dh_auto_build -O--buildsystem=pybuild","I: pybuild plugin_pyproject:142: Building wheel for python3.14 with \"build\" module","I: pybuild base:385: python3.14 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14  ","* Building wheel...","/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite'","  warnings.warn(msg)","running bdist_wheel","/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:135: SetuptoolsDeprecationWarning: bdist_wheel.universal is deprecated","!!","","        ********************************************************************************","        With Python 2.7 end-of-life, support for building universal wheels","        (i.e., wheels that support both Python 2 and Python 3)","        is being obviated.","        Please discontinue using this option, or if you still need it,","        file an issue with pypa/setuptools describing your use case.","","        This deprecation is overdue, please update your project and remove deprecated","        calls to avoid build errors in the future.","        ********************************************************************************","","!!","  self.finalize_options()","running build","running build_py","creating build/lib/aioesphomeapi","copying aioesphomeapi/zeroconf.py -> build/lib/aioesphomeapi","copying aioesphomeapi/util.py -> build/lib/aioesphomeapi","copying aioesphomeapi/reconnect_logic.py -> build/lib/aioesphomeapi","copying aioesphomeapi/model_conversions.py -> build/lib/aioesphomeapi","copying aioesphomeapi/model.py -> build/lib/aioesphomeapi","copying aioesphomeapi/log_runner.py -> build/lib/aioesphomeapi","copying aioesphomeapi/log_reader.py -> build/lib/aioesphomeapi","copying aioesphomeapi/host_resolver.py -> build/lib/aioesphomeapi","copying aioesphomeapi/discover.py -> build/lib/aioesphomeapi","copying aioesphomeapi/core.py -> build/lib/aioesphomeapi","copying aioesphomeapi/connection.py -> build/lib/aioesphomeapi","copying aioesphomeapi/client_callbacks.py -> build/lib/aioesphomeapi","copying aioesphomeapi/client.py -> build/lib/aioesphomeapi","copying aioesphomeapi/ble_defs.py -> build/lib/aioesphomeapi","copying aioesphomeapi/api_pb2.py -> build/lib/aioesphomeapi","copying aioesphomeapi/api_options_pb2.py -> build/lib/aioesphomeapi","copying aioesphomeapi/__init__.py -> build/lib/aioesphomeapi","creating build/lib/aioesphomeapi/_frame_helper","copying aioesphomeapi/_frame_helper/noise.py -> build/lib/aioesphomeapi/_frame_helper","copying aioesphomeapi/_frame_helper/plain_text.py -> build/lib/aioesphomeapi/_frame_helper","copying aioesphomeapi/_frame_helper/base.py -> build/lib/aioesphomeapi/_frame_helper","copying aioesphomeapi/_frame_helper/__init__.py -> build/lib/aioesphomeapi/_frame_helper","running egg_info","creating aioesphomeapi.egg-info","writing aioesphomeapi.egg-info/PKG-INFO","writing dependency_links to aioesphomeapi.egg-info/dependency_links.txt","writing entry points to aioesphomeapi.egg-info/entry_points.txt","writing requirements to aioesphomeapi.egg-info/requires.txt","writing top-level names to aioesphomeapi.egg-info/top_level.txt","writing manifest file 'aioesphomeapi.egg-info/SOURCES.txt'","reading manifest file 'aioesphomeapi.egg-info/SOURCES.txt'","reading manifest template 'MANIFEST.in'","warning: no previously-included files matching '*.c' found anywhere in distribution","adding license file 'LICENSE'","writing manifest file 'aioesphomeapi.egg-info/SOURCES.txt'","copying aioesphomeapi/py.typed -> build/lib/aioesphomeapi","installing to build/bdist.linux-x86_64/wheel","running install","running install_lib","creating build/bdist.linux-x86_64/wheel","creating build/bdist.linux-x86_64/wheel/aioesphomeapi","copying build/lib/aioesphomeapi/py.typed -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","creating build/bdist.linux-x86_64/wheel/aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/_frame_helper/__init__.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/_frame_helper/base.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/_frame_helper/plain_text.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/_frame_helper/noise.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/__init__.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/api_options_pb2.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/api_pb2.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/ble_defs.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/client.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/client_callbacks.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/connection.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/core.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/discover.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/host_resolver.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/log_reader.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/log_runner.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/model.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/model_conversions.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/reconnect_logic.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/util.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/zeroconf.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","running install_egg_info","Copying aioesphomeapi.egg-info to build/bdist.linux-x86_64/wheel/./aioesphomeapi-25.1.0.egg-info","running install_scripts","creating build/bdist.linux-x86_64/wheel/aioesphomeapi-25.1.0.dist-info/WHEEL","creating '/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/.tmp-_l1qz3my/aioesphomeapi-25.1.0-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it","adding 'aioesphomeapi/__init__.py'","adding 'aioesphomeapi/api_options_pb2.py'","adding 'aioesphomeapi/api_pb2.py'","adding 'aioesphomeapi/ble_defs.py'","adding 'aioesphomeapi/client.py'","adding 'aioesphomeapi/client_callbacks.py'","adding 'aioesphomeapi/connection.py'","adding 'aioesphomeapi/core.py'","adding 'aioesphomeapi/discover.py'","adding 'aioesphomeapi/host_resolver.py'","adding 'aioesphomeapi/log_reader.py'","adding 'aioesphomeapi/log_runner.py'","adding 'aioesphomeapi/model.py'","adding 'aioesphomeapi/model_conversions.py'","adding 'aioesphomeapi/py.typed'","adding 'aioesphomeapi/reconnect_logic.py'","adding 'aioesphomeapi/util.py'","adding 'aioesphomeapi/zeroconf.py'","adding 'aioesphomeapi/_frame_helper/__init__.py'","adding 'aioesphomeapi/_frame_helper/base.py'","adding 'aioesphomeapi/_frame_helper/noise.py'","adding 'aioesphomeapi/_frame_helper/plain_text.py'","adding 'aioesphomeapi-25.1.0.dist-info/licenses/LICENSE'","adding 'aioesphomeapi-25.1.0.dist-info/METADATA'","adding 'aioesphomeapi-25.1.0.dist-info/WHEEL'","adding 'aioesphomeapi-25.1.0.dist-info/entry_points.txt'","adding 'aioesphomeapi-25.1.0.dist-info/top_level.txt'","adding 'aioesphomeapi-25.1.0.dist-info/RECORD'","removing build/bdist.linux-x86_64/wheel","Successfully built aioesphomeapi-25.1.0-py2.py3-none-any.whl","I: pybuild plugin_pyproject:168: Unpacking wheel built for python3.14 with \"installer\" module","I: pybuild plugin_pyproject:142: Building wheel for python3.13 with \"build\" module","I: pybuild base:385: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13  ","* Building wheel...","/usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite'","  warnings.warn(msg)","running bdist_wheel","/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:135: SetuptoolsDeprecationWarning: bdist_wheel.universal is deprecated","!!","","        ********************************************************************************","        With Python 2.7 end-of-life, support for building universal wheels","        (i.e., wheels that support both Python 2 and Python 3)","        is being obviated.","        Please discontinue using this option, or if you still need it,","        file an issue with pypa/setuptools describing your use case.","","        This deprecation is overdue, please update your project and remove deprecated","        calls to avoid build errors in the future.","        ********************************************************************************","","!!","  self.finalize_options()","running build","running build_py","running egg_info","writing aioesphomeapi.egg-info/PKG-INFO","writing dependency_links to aioesphomeapi.egg-info/dependency_links.txt","writing entry points to aioesphomeapi.egg-info/entry_points.txt","writing requirements to aioesphomeapi.egg-info/requires.txt","writing top-level names to aioesphomeapi.egg-info/top_level.txt","reading manifest file 'aioesphomeapi.egg-info/SOURCES.txt'","reading manifest template 'MANIFEST.in'","warning: no previously-included files matching '*.c' found anywhere in distribution","adding license file 'LICENSE'","writing manifest file 'aioesphomeapi.egg-info/SOURCES.txt'","installing to build/bdist.linux-x86_64/wheel","running install","running install_lib","creating build/bdist.linux-x86_64/wheel","creating build/bdist.linux-x86_64/wheel/aioesphomeapi","copying build/lib/aioesphomeapi/py.typed -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","creating build/bdist.linux-x86_64/wheel/aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/_frame_helper/__init__.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/_frame_helper/base.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/_frame_helper/plain_text.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/_frame_helper/noise.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi/_frame_helper","copying build/lib/aioesphomeapi/__init__.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/api_options_pb2.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/api_pb2.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/ble_defs.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/client.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/client_callbacks.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/connection.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/core.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/discover.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/host_resolver.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/log_reader.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/log_runner.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/model.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/model_conversions.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/reconnect_logic.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/util.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","copying build/lib/aioesphomeapi/zeroconf.py -> build/bdist.linux-x86_64/wheel/./aioesphomeapi","running install_egg_info","Copying aioesphomeapi.egg-info to build/bdist.linux-x86_64/wheel/./aioesphomeapi-25.1.0.egg-info","running install_scripts","creating build/bdist.linux-x86_64/wheel/aioesphomeapi-25.1.0.dist-info/WHEEL","creating '/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/.tmp-a2px1ijq/aioesphomeapi-25.1.0-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it","adding 'aioesphomeapi/__init__.py'","adding 'aioesphomeapi/api_options_pb2.py'","adding 'aioesphomeapi/api_pb2.py'","adding 'aioesphomeapi/ble_defs.py'","adding 'aioesphomeapi/client.py'","adding 'aioesphomeapi/client_callbacks.py'","adding 'aioesphomeapi/connection.py'","adding 'aioesphomeapi/core.py'","adding 'aioesphomeapi/discover.py'","adding 'aioesphomeapi/host_resolver.py'","adding 'aioesphomeapi/log_reader.py'","adding 'aioesphomeapi/log_runner.py'","adding 'aioesphomeapi/model.py'","adding 'aioesphomeapi/model_conversions.py'","adding 'aioesphomeapi/py.typed'","adding 'aioesphomeapi/reconnect_logic.py'","adding 'aioesphomeapi/util.py'","adding 'aioesphomeapi/zeroconf.py'","adding 'aioesphomeapi/_frame_helper/__init__.py'","adding 'aioesphomeapi/_frame_helper/base.py'","adding 'aioesphomeapi/_frame_helper/noise.py'","adding 'aioesphomeapi/_frame_helper/plain_text.py'","adding 'aioesphomeapi-25.1.0.dist-info/licenses/LICENSE'","adding 'aioesphomeapi-25.1.0.dist-info/METADATA'","adding 'aioesphomeapi-25.1.0.dist-info/WHEEL'","adding 'aioesphomeapi-25.1.0.dist-info/entry_points.txt'","adding 'aioesphomeapi-25.1.0.dist-info/top_level.txt'","adding 'aioesphomeapi-25.1.0.dist-info/RECORD'","removing build/bdist.linux-x86_64/wheel","Successfully built aioesphomeapi-25.1.0-py2.py3-none-any.whl","I: pybuild plugin_pyproject:168: Unpacking wheel built for python3.13 with \"installer\" module","   dh_auto_test -O--buildsystem=pybuild","I: pybuild base:385: cd /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build; python3.14 -m pytest tests","============================= test session starts ==============================","platform linux -- Python 3.14.5, pytest-9.0.3, pluggy-1.6.0","rootdir: /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build","configfile: pyproject.toml","plugins: cov-5.0.0, asyncio-1.3.0, typeguard-4.4.4","asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function","collected 396 items","","tests/test__frame_helper.py ........FFFFFFFFF......FFFEEFFEEEEE..        [  9%]","tests/test_client.py E.E..EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE [ 22%]","EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE...EEEEEEEEEEEEEEEEEEEEEEE [ 40%]","EEEEEEEEEEEEEEEEEEEEEEE                                                  [ 46%]","tests/test_connection.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE     [ 57%]","tests/test_host_resolver.py ................                             [ 61%]","tests/test_log_runner.py EEE                                             [ 61%]","tests/test_model.py .................................................... [ 75%]","..............................................................           [ 90%]","tests/test_reconnect_logic.py .....EEEEEEEEEEEE                          [ 94%]","tests/test_util.py ..............Fs                                      [ 98%]","tests/test_zeroconf.py ....                                              [100%]","","==================================== ERRORS ====================================","__________ ERROR at setup of test_init_plaintext_with_wrong_preamble ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test__frame_helper.py, line 596","  @pytest.mark.asyncio","  async def test_init_plaintext_with_wrong_preamble(","      conn: APIConnection, aiohappyeyeballs_start_connection","  ):","      loop = asyncio.get_event_loop()","      protocol = get_mock_protocol(conn)","      with patch.object(loop, \"create_connection\") as create_connection:","          create_connection.return_value = (MagicMock(), protocol)","","          conn._socket = MagicMock()","          await conn._connect_init_frame_helper()","          loop.call_soon(conn._frame_helper.ready_future.set_result, None)","          conn.connection_state = ConnectionState.CONNECTED","","      task = asyncio.create_task(conn._connect_hello_login(login=True))","      await asyncio.sleep(0)","      # The preamble should be \\x00 but we send \\x09","      mock_data_received(protocol, b\"\\x09\\x00\\x00\")","","      with pytest.raises(ProtocolAPIError):","          await task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","___________ ERROR at setup of test_init_noise_with_wrong_byte_marker ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test__frame_helper.py, line 619","  @pytest.mark.asyncio","  async def test_init_noise_with_wrong_byte_marker(noise_conn: APIConnection) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      protocol: APINoiseFrameHelper | None = None","","      async def _create_connection(create, sock, *args, **kwargs):","          nonlocal protocol","          protocol = create()","          protocol.connection_made(transport)","          return transport, protocol","","      with patch.object(loop, \"create_connection\", side_effect=_create_connection):","          task = asyncio.create_task(noise_conn._connect_init_frame_helper())","          await asyncio.sleep(0)","","          assert protocol is not None","          assert isinstance(noise_conn._frame_helper, APINoiseFrameHelper)","","          mock_data_received(protocol, b\"\\x00\\x00\\x00\")","","          with pytest.raises(ProtocolAPIError, match=\"Marker byte invalid\"):","              await task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 104","  @pytest.fixture","  def noise_conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:104","_____ ERROR at setup of test_init_noise_attempted_when_esp_uses_plaintext ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test__frame_helper.py, line 687","  @pytest.mark.asyncio","  async def test_init_noise_attempted_when_esp_uses_plaintext(","      noise_conn: APIConnection,","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      protocol: APINoiseFrameHelper | None = None","","      async def _create_connection(create, sock, *args, **kwargs):","          nonlocal protocol","          protocol = create()","          protocol.connection_made(transport)","          return transport, protocol","","      with patch.object(loop, \"create_connection\", side_effect=_create_connection):","          task = asyncio.create_task(noise_conn._connect_init_frame_helper())","          await asyncio.sleep(0)","","          assert isinstance(noise_conn._frame_helper, APINoiseFrameHelper)","          protocol = noise_conn._frame_helper","","          protocol.connection_lost(ConnectionResetError())","","          with pytest.raises(","              APIConnectionError, match=\"The connection dropped immediately\"","          ):","              await task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 104","  @pytest.fixture","  def noise_conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:104","____________ ERROR at setup of test_eof_received_closes_connection _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test__frame_helper.py, line 716","  @pytest.mark.asyncio","  async def test_eof_received_closes_connection(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      assert protocol.eof_received() is False","      assert conn.is_connected is False","      with pytest.raises(SocketClosedAPIError, match=\"EOF received\"):","          await connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_ ERROR at setup of test_connection_lost_closes_connection_and_logs[exception_map0] _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test__frame_helper.py, line 729","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_closes_connection_and_logs(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      exception, raised_exception = exception_map","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      protocol.connection_lost(exception)","      assert conn.is_connected is False","      assert \"original message\" in caplog.text","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_ ERROR at setup of test_connection_lost_closes_connection_and_logs[exception_map1] _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test__frame_helper.py, line 729","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_closes_connection_and_logs(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      exception, raised_exception = exception_map","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      protocol.connection_lost(exception)","      assert conn.is_connected is False","      assert \"original message\" in caplog.text","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_ ERROR at setup of test_connection_lost_closes_connection_and_logs[exception_map2] _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test__frame_helper.py, line 729","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_closes_connection_and_logs(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      exception, raised_exception = exception_map","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      protocol.connection_lost(exception)","      assert conn.is_connected is False","      assert \"original message\" in caplog.text","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_____________________ ERROR at setup of test_expected_name _____________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_ ERROR at setup of test_finish_connection_wraps_exceptions_as_unhandled_api_error _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 208","  @pytest.mark.asyncio","  async def test_finish_connection_wraps_exceptions_as_unhandled_api_error(","      aiohappyeyeballs_start_connection,","  ) -> None:","      \"\"\"Verify finish_connect re-wraps exceptions as UnhandledAPIError.\"\"\"","","      cli = APIClient(\"127.0.0.1\", 1234, None)","      with patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection):","          await cli.start_connection()","","      with patch.object(","          cli._connection,","          \"send_messages_await_response_complex\",","          side_effect=Exception(\"foo\"),","      ):","          with pytest.raises(UnhandledAPIConnectionError, match=\"foo\"):","              await cli.finish_connection(False)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","____________ ERROR at setup of test_connect_while_already_connected ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_____________ ERROR at setup of test_list_entities[input0-output0] _____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_____________ ERROR at setup of test_list_entities[input1-output1] _____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","___________________ ERROR at setup of test_subscribe_states ____________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_subscribe_states_camera ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_cover_command_legacy[cmd0-req0] ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_cover_command_legacy[cmd1-req1] ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_cover_command_legacy[cmd2-req2] ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_cover_command_legacy[cmd3-req3] ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_cover_command[cmd0-req0] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_cover_command[cmd1-req1] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_cover_command[cmd2-req2] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_cover_command[cmd3-req3] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_cover_command[cmd4-req4] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_fan_command[cmd0-req0] _________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_fan_command[cmd1-req1] _________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_fan_command[cmd2-req2] _________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_fan_command[cmd3-req3] _________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_fan_command[cmd4-req4] _________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_fan_command[cmd5-req5] _________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_fan_command[cmd6-req6] _________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd0-req0] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd1-req1] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd2-req2] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd3-req3] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd4-req4] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd5-req5] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd6-req6] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd7-req7] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd8-req8] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_light_command[cmd9-req9] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_light_command[cmd10-req10] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_light_command[cmd11-req11] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_switch_command[cmd0-req0] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_switch_command[cmd1-req1] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","___________ ERROR at setup of test_climate_command_legacy[cmd0-req0] ___________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","___________ ERROR at setup of test_climate_command_legacy[cmd1-req1] ___________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd0-req0] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd1-req1] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd2-req2] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd3-req3] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd4-req4] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd5-req5] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd6-req6] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd7-req7] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd8-req8] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_climate_command[cmd9-req9] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_number_command[cmd0-req0] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_number_command[cmd1-req1] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_date_command[cmd0-req0] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_date_command[cmd1-req1] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_time_command[cmd0-req0] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_time_command[cmd1-req1] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_datetime_command[cmd0-req0] ______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","______________ ERROR at setup of test_datetime_command[cmd1-req1] ______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_lock_command[cmd0-req0] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_lock_command[cmd1-req1] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_lock_command[cmd2-req2] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_lock_command[cmd3-req3] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_valve_command[cmd0-req0] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_valve_command[cmd1-req1] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_valve_command[cmd2-req2] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_valve_command[cmd3-req3] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________ ERROR at setup of test_valve_command_version_1_1[cmd0-req0] __________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________ ERROR at setup of test_valve_command_version_1_1[cmd1-req1] __________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________ ERROR at setup of test_valve_command_version_1_1[cmd2-req2] __________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________ ERROR at setup of test_valve_command_version_1_1[cmd3-req3] __________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________ ERROR at setup of test_valve_command_version_1_1[cmd4-req4] __________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_select_command[cmd0-req0] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_select_command[cmd1-req1] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_media_player_command[cmd0-req0] ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_media_player_command[cmd1-req1] ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_media_player_command[cmd2-req2] ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_media_player_command[cmd3-req3] ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_button_command[cmd0-req0] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_siren_command[cmd0-req0] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_siren_command[cmd1-req1] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_siren_command[cmd2-req2] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_siren_command[cmd3-req3] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_siren_command[cmd4-req4] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_siren_command[cmd5-req5] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_siren_command[cmd6-req6] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________________ ERROR at setup of test_execute_service ____________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________________ ERROR at setup of test_request_single_image __________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________________ ERROR at setup of test_request_image_stream __________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_alarm_panel_command[cmd0-req0] _____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_alarm_panel_command[cmd1-req1] _____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_alarm_panel_command[cmd2-req2] _____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_text_command[cmd0-req0] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_text_command[cmd1-req1] ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_update_command[cmd0-req0] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_update_command[cmd1-req1] _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________________ ERROR at setup of test_bluetooth_disconnect __________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1128","  @pytest.mark.asyncio","  async def test_bluetooth_disconnect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_disconnect.\"\"\"","      client, connection, transport, protocol = api_client","      disconnect_task = asyncio.create_task(client.bluetooth_device_disconnect(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await disconnect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","____________________ ERROR at setup of test_bluetooth_pair _____________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1145","  @pytest.mark.asyncio","  async def test_bluetooth_pair(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_pair.\"\"\"","      client, connection, transport, protocol = api_client","      pair_task = asyncio.create_task(client.bluetooth_device_pair(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDevicePairingResponse(address=4567)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert not pair_task.done()","      response: message.Message = BluetoothDevicePairingResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await pair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","____________ ERROR at setup of test_bluetooth_pair_connection_drops ____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1164","  @pytest.mark.asyncio","  async def test_bluetooth_pair_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_device_pair.\"\"\"","      client, connection, transport, protocol = api_client","      pair_task = asyncio.create_task(client.bluetooth_device_pair(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothDevicePairingResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await pair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___________ ERROR at setup of test_bluetooth_unpair_connection_drops ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1186","  @pytest.mark.asyncio","  async def test_bluetooth_unpair_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_device_unpair.\"\"\"","      client, connection, transport, protocol = api_client","      pair_task = asyncio.create_task(client.bluetooth_device_unpair(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothDeviceUnpairingResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await pair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","________ ERROR at setup of test_bluetooth_clear_cache_connection_drops _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1208","  @pytest.mark.asyncio","  async def test_bluetooth_clear_cache_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_device_clear_cache.\"\"\"","      client, connection, transport, protocol = api_client","      pair_task = asyncio.create_task(client.bluetooth_device_clear_cache(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothDeviceClearCacheResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await pair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___________________ ERROR at setup of test_bluetooth_unpair ____________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1230","  @pytest.mark.asyncio","  async def test_bluetooth_unpair(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_unpair.\"\"\"","      client, connection, transport, protocol = api_client","      unpair_task = asyncio.create_task(client.bluetooth_device_unpair(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceUnpairingResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await unpair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_________________ ERROR at setup of test_bluetooth_clear_cache _________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1245","  @pytest.mark.asyncio","  async def test_bluetooth_clear_cache(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_clear_cache.\"\"\"","      client, connection, transport, protocol = api_client","      clear_task = asyncio.create_task(client.bluetooth_device_clear_cache(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceClearCacheResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await clear_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","______________________ ERROR at setup of test_device_info ______________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1260","  @pytest.mark.asyncio","  async def test_device_info(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test fetching device info.\"\"\"","      client, connection, transport, protocol = api_client","      assert client.log_name == \"fake @ 10.0.0.512\"","      device_info_task = asyncio.create_task(client.device_info())","      await asyncio.sleep(0)","      response: message.Message = DeviceInfoResponse(","          name=\"realname\",","          friendly_name=\"My Device\",","          has_deep_sleep=True,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      device_info = await device_info_task","      assert device_info.name == \"realname\"","      assert device_info.friendly_name == \"My Device\"","      assert device_info.has_deep_sleep","      assert client.log_name == \"realname @ 10.0.0.512\"","      disconnect_task = asyncio.create_task(client.disconnect())","      await asyncio.sleep(0)","      response: message.Message = DisconnectResponse()","      mock_data_received(protocol, generate_plaintext_packet(response))","      await disconnect_task","      with pytest.raises(APIConnectionError, match=\"Not connected\"):","          await client.device_info()","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","__________________ ERROR at setup of test_bluetooth_gatt_read __________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1291","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_read(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_read.\"\"\"","      client, connection, transport, protocol = api_client","      read_task = asyncio.create_task(client.bluetooth_gatt_read(1234, 1234))","      await asyncio.sleep(0)","","      other_response: message.Message = BluetoothGATTReadResponse(","          address=1234, handle=4567, data=b\"4567\"","      )","      mock_data_received(protocol, generate_plaintext_packet(other_response))","","      response: message.Message = BluetoothGATTReadResponse(","          address=1234, handle=1234, data=b\"1234\"","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      assert await read_task == b\"1234\"","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_________ ERROR at setup of test_bluetooth_gatt_read_connection_drops __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1314","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_read_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_gatt_read.\"\"\"","      client, connection, transport, protocol = api_client","      read_task = asyncio.create_task(client.bluetooth_gatt_read(1234, 1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothGATTReadResponse, BluetoothGATTErrorResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await read_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_______________ ERROR at setup of test_bluetooth_gatt_read_error _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1336","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_read_error(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_read that errors.\"\"\"","      client, connection, transport, protocol = api_client","      read_task = asyncio.create_task(client.bluetooth_gatt_read(1234, 1234))","      await asyncio.sleep(0)","      error_response: message.Message = BluetoothGATTErrorResponse(","          address=1234, handle=1234","      )","      mock_data_received(protocol, generate_plaintext_packet(error_response))","      with pytest.raises(BluetoothGATTAPIError):","          await read_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","____________ ERROR at setup of test_bluetooth_gatt_read_descriptor _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1354","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_read_descriptor(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_read_descriptor.\"\"\"","      client, connection, transport, protocol = api_client","      read_task = asyncio.create_task(client.bluetooth_gatt_read_descriptor(1234, 1234))","      await asyncio.sleep(0)","","      other_response: message.Message = BluetoothGATTReadResponse(","          address=1234, handle=4567, data=b\"4567\"","      )","      mock_data_received(protocol, generate_plaintext_packet(other_response))","","      response: message.Message = BluetoothGATTReadResponse(","          address=1234, handle=1234, data=b\"1234\"","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      assert await read_task == b\"1234\"","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_________________ ERROR at setup of test_bluetooth_gatt_write __________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1377","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_write.\"\"\"","      client, connection, transport, protocol = api_client","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write(1234, 1234, b\"1234\", True)","      )","      await asyncio.sleep(0)","","      other_response: message.Message = BluetoothGATTWriteResponse(","          address=1234, handle=4567","      )","      mock_data_received(protocol, generate_plaintext_packet(other_response))","","      response: message.Message = BluetoothGATTWriteResponse(address=1234, handle=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await write_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_________ ERROR at setup of test_bluetooth_gatt_write_connection_drops _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1400","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_gatt_read.\"\"\"","      client, connection, transport, protocol = api_client","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write(1234, 1234, b\"1234\", True)","      )","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothGATTWriteResponse, BluetoothGATTErrorResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await write_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_________ ERROR at setup of test_bluetooth_gatt_write_without_response _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1424","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write_without_response(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_write without response.\"\"\"","      client, connection, transport, protocol = api_client","      transport.reset_mock()","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write(1234, 1234, b\"1234\", False)","      )","      await asyncio.sleep(0)","      await write_task","      assert transport.mock_calls[0][1][0] == b'\\x00\\x0cK\\x08\\xd2\\t\\x10\\xd2\\t\"\\x041234'","","      with pytest.raises(TimeoutAPIError, match=\"BluetoothGATTWriteResponse\"):","          await client.bluetooth_gatt_write(1234, 1234, b\"1234\", True, timeout=0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","____________ ERROR at setup of test_bluetooth_gatt_write_descriptor ____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1444","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write_descriptor(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_write_descriptor.\"\"\"","      client, connection, transport, protocol = api_client","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write_descriptor(1234, 1234, b\"1234\", True)","      )","      await asyncio.sleep(0)","","      other_response: message.Message = BluetoothGATTWriteResponse(","          address=1234, handle=4567","      )","      mock_data_received(protocol, generate_plaintext_packet(other_response))","","      response: message.Message = BluetoothGATTWriteResponse(address=1234, handle=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await write_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___ ERROR at setup of test_bluetooth_gatt_write_descriptor_without_response ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1467","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write_descriptor_without_response(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_write_descriptor without response.\"\"\"","      client, connection, transport, protocol = api_client","      transport.reset_mock()","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write_descriptor(","              1234, 1234, b\"1234\", wait_for_response=False","          )","      )","      await asyncio.sleep(0)","      await write_task","      assert transport.mock_calls[0][1][0] == b\"\\x00\\x0cM\\x08\\xd2\\t\\x10\\xd2\\t\\x1a\\x041234\"","","      with pytest.raises(TimeoutAPIError, match=\"BluetoothGATTWriteResponse\"):","          await client.bluetooth_gatt_write_descriptor(1234, 1234, b\"1234\", timeout=0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_____ ERROR at setup of test_bluetooth_gatt_get_services_connection_drops ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1489","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_get_services_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_gatt_get_services.\"\"\"","      client, connection, transport, protocol = api_client","      services_task = asyncio.create_task(client.bluetooth_gatt_get_services(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothGATTGetServicesResponse, BluetoothGATTGetServicesDoneResponse, \"","          \"BluetoothGATTErrorResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await services_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","______________ ERROR at setup of test_bluetooth_gatt_get_services ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1512","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_get_services(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_get_services success case.\"\"\"","      client, connection, transport, protocol = api_client","      services_task = asyncio.create_task(client.bluetooth_gatt_get_services(1234))","      await asyncio.sleep(0)","      service1: message.Message = BluetoothGATTService(","          uuid=[1, 1],","          handle=1,","          characteristics=[","              BluetoothGATTCharacteristic(","                  uuid=[1, 2],","                  handle=2,","                  properties=1,","                  descriptors=[BluetoothGATTDescriptor(uuid=[1, 3], handle=3)],","              )","          ],","      )","      response: message.Message = BluetoothGATTGetServicesResponse(","          address=1234, services=[service1]","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      done_response: message.Message = BluetoothGATTGetServicesDoneResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(done_response))","","      services = await services_task","      service = BluetoothGATTServiceModel.from_pb(service1)","      assert services == ESPHomeBluetoothGATTServices(","          address=1234,","          services=[service],","      )","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_gatt_get_services_errors ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1549","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_get_services_errors(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_get_services with a failure.\"\"\"","      client, connection, transport, protocol = api_client","      services_task = asyncio.create_task(client.bluetooth_gatt_get_services(1234))","      await asyncio.sleep(0)","      service1: message.Message = BluetoothGATTService(","          uuid=[1, 1], handle=1, characteristics=[]","      )","      response: message.Message = BluetoothGATTGetServicesResponse(","          address=1234, services=[service1]","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      done_response: message.Message = BluetoothGATTErrorResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(done_response))","","      with pytest.raises(BluetoothGATTAPIError):","          await services_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_____ ERROR at setup of test_bluetooth_gatt_start_notify_connection_drops ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1573","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_start_notify_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_gatt_start_notify.\"\"\"","      client, connection, transport, protocol = api_client","      notify_task = asyncio.create_task(","          client.bluetooth_gatt_start_notify(1234, 1, lambda handle, data: None)","      )","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothGATTNotifyResponse, BluetoothGATTErrorResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await notify_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","______________ ERROR at setup of test_bluetooth_gatt_start_notify ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1597","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_start_notify(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_start_notify.\"\"\"","      client, connection, transport, protocol = api_client","      notifies = []","","      handlers_before = len(list(itertools.chain(*connection._message_handlers.values())))","","      def on_bluetooth_gatt_notify(handle: int, data: bytearray) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___________ ERROR at setup of test_bluetooth_gatt_start_notify_fails ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1651","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_start_notify_fails(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_start_notify failure does not leak.\"\"\"","      client, connection, transport, protocol = api_client","      notifies = []","","      def on_bluetooth_gatt_notify(handle: int, data: bytearray) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_________ ERROR at setup of test_subscribe_bluetooth_le_advertisements _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1682","  @pytest.mark.asyncio","  async def test_subscribe_bluetooth_le_advertisements(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_bluetooth_le_advertisements.\"\"\"","      client, connection, transport, protocol = api_client","      advs = []","","      def on_bluetooth_le_advertisements(adv: BluetoothLEAdvertisement) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_______ ERROR at setup of test_subscribe_bluetooth_le_raw_advertisements _______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1796","  @pytest.mark.asyncio","  async def test_subscribe_bluetooth_le_raw_advertisements(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_bluetooth_le_raw_advertisements.\"\"\"","      client, connection, transport, protocol = api_client","      adv_groups = []","","      def on_raw_bluetooth_le_advertisements(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_________ ERROR at setup of test_subscribe_bluetooth_connections_free __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1836","  @pytest.mark.asyncio","  async def test_subscribe_bluetooth_connections_free(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_bluetooth_connections_free.\"\"\"","      client, connection, transport, protocol = api_client","      connections = []","","      def on_bluetooth_connections_free(free: int, limit: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","____________ ERROR at setup of test_subscribe_home_assistant_states ____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1858","  @pytest.mark.asyncio","  async def test_subscribe_home_assistant_states(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_home_assistant_states.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_subscribe_home_assistant_states(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","____________________ ERROR at setup of test_subscribe_logs _____________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_send_home_assistant_state _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________________ ERROR at setup of test_subscribe_service_calls ________________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________________ ERROR at setup of test_set_debug _______________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1915","  @pytest.mark.asyncio","  async def test_set_debug(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test set_debug.\"\"\"","      client, connection, transport, protocol = api_client","      response: message.Message = DeviceInfoResponse(","          name=\"realname\",","          friendly_name=\"My Device\",","          has_deep_sleep=True,","      )","","      caplog.set_level(logging.DEBUG)","","      client.set_debug(True)","      assert client.log_name == \"fake @ 10.0.0.512\"","      device_info_task = asyncio.create_task(client.device_info())","      await asyncio.sleep(0)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await device_info_task","","      assert \"My Device\" in caplog.text","      caplog.clear()","      client.set_debug(False)","      device_info_task = asyncio.create_task(client.device_info())","      await asyncio.sleep(0)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await device_info_task","      assert \"My Device\" not in caplog.text","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___________________ ERROR at setup of test_force_disconnect ____________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1949","  @pytest.mark.asyncio","  async def test_force_disconnect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test force disconnect can be called multiple times.\"\"\"","      client, connection, transport, protocol = api_client","      assert connection.is_connected is True","      assert connection.on_stop is not None","      await client.disconnect(force=True)","      assert client._connection is None","      assert connection.is_connected is False","      await client.disconnect(force=False)","      assert connection.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_device_connect[False-0-0] __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1966","  @pytest.mark.asyncio","  @pytest.mark.parametrize(","      (\"has_cache\", \"feature_flags\", \"method\"),","      [","          (False, BluetoothProxyFeature(0), BluetoothDeviceRequestType.CONNECT),","          (","              False,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITHOUT_CACHE,","          ),","          (","              True,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITH_CACHE,","          ),","      ],","  )","  async def test_bluetooth_device_connect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      has_cache: bool,","      feature_flags: BluetoothProxyFeature,","      method: BluetoothDeviceRequestType,","  ) -> None:","      \"\"\"Test bluetooth_device_connect.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_device_connect[False-4-5] __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1966","  @pytest.mark.asyncio","  @pytest.mark.parametrize(","      (\"has_cache\", \"feature_flags\", \"method\"),","      [","          (False, BluetoothProxyFeature(0), BluetoothDeviceRequestType.CONNECT),","          (","              False,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITHOUT_CACHE,","          ),","          (","              True,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITH_CACHE,","          ),","      ],","  )","  async def test_bluetooth_device_connect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      has_cache: bool,","      feature_flags: BluetoothProxyFeature,","      method: BluetoothDeviceRequestType,","  ) -> None:","      \"\"\"Test bluetooth_device_connect.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_device_connect[True-4-4] ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 1966","  @pytest.mark.asyncio","  @pytest.mark.parametrize(","      (\"has_cache\", \"feature_flags\", \"method\"),","      [","          (False, BluetoothProxyFeature(0), BluetoothDeviceRequestType.CONNECT),","          (","              False,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITHOUT_CACHE,","          ),","          (","              True,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITH_CACHE,","          ),","      ],","  )","  async def test_bluetooth_device_connect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      has_cache: bool,","      feature_flags: BluetoothProxyFeature,","      method: BluetoothDeviceRequestType,","  ) -> None:","      \"\"\"Test bluetooth_device_connect.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___ ERROR at setup of test_bluetooth_device_connect_and_disconnect_times_out ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2053","  @pytest.mark.asyncio","  async def test_bluetooth_device_connect_and_disconnect_times_out(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_connect and disconnect times out.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___ ERROR at setup of test_bluetooth_device_connect_times_out_disconnect_ok ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2082","  @pytest.mark.asyncio","  async def test_bluetooth_device_connect_times_out_disconnect_ok(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_connect and disconnect times out.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_device_connect_cancelled ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2124","  @pytest.mark.asyncio","  async def test_bluetooth_device_connect_cancelled(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_connect handles cancellation.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      handlers_before = len(list(itertools.chain(*connection._message_handlers.values())))","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","______________ ERROR at setup of test_send_voice_assistant_event _______________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_subscribe_voice_assistant _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2193","  @pytest.mark.asyncio","  async def test_subscribe_voice_assistant(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_voice_assistant.\"\"\"","      client, connection, transport, protocol = api_client","      send = patch_send(client)","      starts = []","      stops = []","","      async def handle_start(","          conversation_id: str,","          flags: int,","          audio_settings: VoiceAssistantAudioSettings,","          wake_word_phrase: str | None,","      ) -> int | None:","          starts.append((conversation_id, flags, audio_settings, wake_word_phrase))","          return 42","","      async def handle_stop() -> None:","          stops.append(True)","","      unsub = client.subscribe_voice_assistant(","          handle_start=handle_start, handle_stop=handle_stop","      )","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=True))","      send.reset_mock()","      audio_settings = VoiceAssistantAudioSettings(","          noise_suppression_level=42,","          auto_gain=42,","          volume_multiplier=42,","      )","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=True,","          flags=42,","          audio_settings=audio_settings,","          wake_word_phrase=\"okay nabu\",","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      assert starts == [","          (","              \"theone\",","              42,","              VoiceAssistantAudioSettingsModel(","                  noise_suppression_level=42,","                  auto_gain=42,","                  volume_multiplier=42,","              ),","              \"okay nabu\",","          )","      ]","      assert stops == []","      send.assert_called_once_with(VoiceAssistantResponse(port=42))","      send.reset_mock()","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=False,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert stops == [True]","      send.reset_mock()","      unsub()","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=False))","      send.reset_mock()","      await client.disconnect(force=True)","      # Ensure abort callback is a no-op after disconnect","      # and does not raise","      unsub()","      assert len(send.mock_calls) == 0","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___________ ERROR at setup of test_subscribe_voice_assistant_failure ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2270","  @pytest.mark.asyncio","  async def test_subscribe_voice_assistant_failure(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_voice_assistant failure.\"\"\"","      client, connection, transport, protocol = api_client","      send = patch_send(client)","      starts = []","      stops = []","","      async def handle_start(","          conversation_id: str,","          flags: int,","          audio_settings: VoiceAssistantAudioSettings,","          wake_word_phrase: str | None,","      ) -> int | None:","          starts.append((conversation_id, flags, audio_settings, wake_word_phrase))","          # Return None to indicate failure","          return None","","      async def handle_stop() -> None:","          stops.append(True)","","      unsub = client.subscribe_voice_assistant(","          handle_start=handle_start, handle_stop=handle_stop","      )","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=True))","      send.reset_mock()","      audio_settings = VoiceAssistantAudioSettings(","          noise_suppression_level=42,","          auto_gain=42,","          volume_multiplier=42,","      )","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=True,","          flags=42,","          audio_settings=audio_settings,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      assert starts == [","          (","              \"theone\",","              42,","              VoiceAssistantAudioSettingsModel(","                  noise_suppression_level=42,","                  auto_gain=42,","                  volume_multiplier=42,","              ),","              None,","          )","      ]","      assert stops == []","      send.assert_called_once_with(VoiceAssistantResponse(error=True))","      send.reset_mock()","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=False,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert stops == [True]","      send.reset_mock()","      unsub()","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=False))","      send.reset_mock()","      await client.disconnect(force=True)","      # Ensure abort callback is a no-op after disconnect","      # and does not raise","      unsub()","      assert len(send.mock_calls) == 0","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_ ERROR at setup of test_subscribe_voice_assistant_cancels_long_running_handle_start _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2347","  @pytest.mark.asyncio","  async def test_subscribe_voice_assistant_cancels_long_running_handle_start(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_voice_assistant cancels long running tasks on unsub.\"\"\"","      client, connection, transport, protocol = api_client","      send = patch_send(client)","      starts = []","      stops = []","","      async def handle_start(","          conversation_id: str,","          flags: int,","          audio_settings: VoiceAssistantAudioSettings,","          wake_word_phrase: str | None,","      ) -> int | None:","          starts.append((conversation_id, flags, audio_settings, wake_word_phrase))","          await asyncio.sleep(10)","          # Return None to indicate failure","          starts.append(\"never\")","          return None","","      async def handle_stop() -> None:","          stops.append(True)","","      unsub = client.subscribe_voice_assistant(","          handle_start=handle_start, handle_stop=handle_stop","      )","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=True))","      send.reset_mock()","      audio_settings = VoiceAssistantAudioSettings(","          noise_suppression_level=42,","          auto_gain=42,","          volume_multiplier=42,","      )","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=True,","          flags=42,","          audio_settings=audio_settings,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      unsub()","      await asyncio.sleep(0)","      assert not stops","      assert starts == [","          (","              \"theone\",","              42,","              VoiceAssistantAudioSettingsModel(","                  noise_suppression_level=42,","                  auto_gain=42,","                  volume_multiplier=42,","              ),","              None,","          )","      ]","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","__________ ERROR at setup of test_subscribe_voice_assistant_api_audio __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2410","  @pytest.mark.asyncio","  async def test_subscribe_voice_assistant_api_audio(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_voice_assistant.\"\"\"","      client, connection, transport, protocol = api_client","      send = patch_send(client)","      starts = []","      stops = []","      data_received = 0","","      async def handle_start(","          conversation_id: str,","          flags: int,","          audio_settings: VoiceAssistantAudioSettings,","          wake_word_phrase: str | None,","      ) -> int | None:","          starts.append((conversation_id, flags, audio_settings, wake_word_phrase))","          return 0","","      async def handle_stop() -> None:","          stops.append(True)","","      async def handle_audio(data: bytes) -> None:","          nonlocal data_received","          data_received += len(data)","","      unsub = client.subscribe_voice_assistant(","          handle_start=handle_start, handle_stop=handle_stop, handle_audio=handle_audio","      )","      send.assert_called_once_with(","          SubscribeVoiceAssistantRequest(subscribe=True, flags=4)","      )","      send.reset_mock()","      audio_settings = VoiceAssistantAudioSettings(","          noise_suppression_level=42,","          auto_gain=42,","          volume_multiplier=42,","      )","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=True,","          flags=42,","          audio_settings=audio_settings,","          wake_word_phrase=\"okay nabu\",","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      assert starts == [","          (","              \"theone\",","              42,","              VoiceAssistantAudioSettingsModel(","                  noise_suppression_level=42,","                  auto_gain=42,","                  volume_multiplier=42,","              ),","              \"okay nabu\",","          )","      ]","      assert stops == []","      send.assert_called_once_with(VoiceAssistantResponse(port=0))","      send.reset_mock()","","      response: message.Message = VoiceAssistantAudio(","          data=bytes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert data_received == 10","","      response: message.Message = VoiceAssistantAudio(","          end=True,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert stops == [True]","","      send.reset_mock()","      client.send_voice_assistant_audio(bytes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))","      send.assert_called_once_with(","          VoiceAssistantAudio(data=bytes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))","      )","","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=False,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert stops == [True, True]","      send.reset_mock()","      unsub()","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=False))","      send.reset_mock()","      await client.disconnect(force=True)","      # Ensure abort callback is a no-op after disconnect","      # and does not raise","      unsub()","      assert len(send.mock_calls) == 0","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","___________ ERROR at setup of test_send_voice_assistant_timer_event ____________","","    @pytest.fixture","    def auth_client():",">       client = APIClient(","            address=\"fake.address\",","            port=6052,","            password=None,","        )","","tests/test_client.py:133: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","__________ ERROR at setup of test_api_version_after_connection_closed __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2540","  @pytest.mark.asyncio","  async def test_api_version_after_connection_closed(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test api version is None after connection close.\"\"\"","      client, connection, transport, protocol = api_client","      assert client.api_version == APIVersion(1, 9)","      await client.disconnect(force=True)","      assert client.api_version is None","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_____________ ERROR at setup of test_calls_after_connection_closed _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_client.py, line 2553","  @pytest.mark.asyncio","  async def test_calls_after_connection_closed(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test calls after connection close should raise APIConnectionError.\"\"\"","      client, connection, transport, protocol = api_client","      assert client.api_version == APIVersion(1, 9)","      await client.disconnect(force=True)","      assert client.api_version is None","      service = UserService(","          name=\"my_service\",","          key=1,","          args=[],","      )","      with pytest.raises(APIConnectionError):","          client.execute_service(service, {})","      for method in (","          client.button_command,","          client.climate_command,","          client.cover_command,","          client.fan_command,","          client.light_command,","          client.valve_command,","          client.media_player_command,","          client.siren_command,","      ):","          with pytest.raises(APIConnectionError):","              await method(1)","","      with pytest.raises(APIConnectionError):","          await client.alarm_control_panel_command(1, AlarmControlPanelCommand.ARM_HOME)","","      with pytest.raises(APIConnectionError):","          await client.date_command(1, 1, 1, 1)","","      with pytest.raises(APIConnectionError):","          await client.lock_command(1, LockCommand.LOCK)","","      with pytest.raises(APIConnectionError):","          await client.number_command(1, 1)","","      with pytest.raises(APIConnectionError):","          await client.select_command(1, \"1\")","","      with pytest.raises(APIConnectionError):","          await client.switch_command(1, True)","","      with pytest.raises(APIConnectionError):","          await client.text_command(1, \"1\")","","      with pytest.raises(APIConnectionError):","          await client.update_command(1, True)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","________________________ ERROR at setup of test_connect ________________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 58","  @pytest.mark.asyncio","  async def test_connect(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ]","  ) -> None:","      \"\"\"Test that a plaintext connection works.\"\"\"","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","      mock_data_received(","          protocol,","          bytes.fromhex(","              \"003602080110091a216d6173746572617672656c61792028657\"","              \"370686f6d652076323032332e362e3329220d6d617374657261\"","              \"7672656c6179\"","          ),","      )","      mock_data_received(","          protocol,","          bytes.fromhex(","              \"005b0a120d6d6173746572617672656c61791a1130383a33413a\"","              \"46323a33453a35453a36302208323032332e362e332a154a756e\"","              \"20323820323032332c2031383a31323a3236320965737033322d\"","              \"65766250506209457370726573736966\"","          ),","      )","      await connect_task","      assert conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","________________ ERROR at setup of test_timeout_sending_message ________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 87","  @pytest.mark.asyncio","  async def test_timeout_sending_message(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","","      mock_data_received(","          protocol,","          b'\\x00@\\x02\\x08\\x01\\x10\\x07\\x1a(m5stackatomproxy (esphome v2023.1.0-dev)\"\\x10m'","          b\"5stackatomproxy\"","          b\"\\x00\\x00$\"","          b\"\\x00\\x00\\x04\"","          b'\\x00e\\n\\x12\\x10m5stackatomproxy\\x1a\\x11E8:9F:6D:0A:68:E0\"\\x0c2023.1.0-d'","          b\"ev*\\x15Jan  7 2023, 13:19:532\\x0cm5stack-atomX\\x03b\\tEspressif\",","      )","","      await connect_task","","      with pytest.raises(TimeoutAPIError):","          await conn.send_messages_await_response_complex(","              (PingRequest(),), None, None, (PingResponse,), 0","          )","","      transport.reset_mock()","      with patch(\"aioesphomeapi.connection.DISCONNECT_RESPONSE_TIMEOUT\", 0.0):","          await conn.disconnect()","","      transport.write.assert_called_with(b\"\\x00\\x00\\x05\")","","      assert \"disconnect request failed\" in caplog.text","      assert \" Timeout waiting for DisconnectResponse after 0.0s\" in caplog.text","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","__________ ERROR at setup of test_disconnect_when_not_fully_connected __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 123","  @pytest.mark.asyncio","  async def test_disconnect_when_not_fully_connected(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","","      # Only send the first part of the handshake","      # so we are stuck in the middle of the connection process","      mock_data_received(","          protocol,","          b'\\x00@\\x02\\x08\\x01\\x10\\x07\\x1a(m5stackatomproxy (esphome v2023.1.0-dev)\"\\x10m',","      )","","      await asyncio.sleep(0)","      transport.reset_mock()","","      with (","          patch(\"aioesphomeapi.connection.DISCONNECT_CONNECT_TIMEOUT\", 0.0),","          patch(\"aioesphomeapi.connection.DISCONNECT_RESPONSE_TIMEOUT\", 0.0),","      ):","          await conn.disconnect()","","      with pytest.raises(","          APIConnectionError,","          match=\"Timed out waiting to finish connect before disconnecting\",","      ):","          await connect_task","","      transport.write.assert_called_with(b\"\\x00\\x00\\x05\")","","      assert \"disconnect request failed\" in caplog.text","      assert \" Timeout waiting for DisconnectResponse after 0.0s\" in caplog.text","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","____________ ERROR at setup of test_requires_encryption_propagates _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 160","  @pytest.mark.asyncio","  async def test_requires_encryption_propagates(conn: APIConnection):","      loop = asyncio.get_event_loop()","      protocol = get_mock_protocol(conn)","      with patch.object(loop, \"create_connection\") as create_connection:","          create_connection.return_value = (MagicMock(), protocol)","","          conn._socket = MagicMock()","          await conn._connect_init_frame_helper()","          loop.call_soon(conn._frame_helper.ready_future.set_result, None)","          conn.connection_state = ConnectionState.CONNECTED","","          with pytest.raises(RequiresEncryptionAPIError):","              task = asyncio.create_task(conn._connect_hello_login(login=True))","              await asyncio.sleep(0)","              mock_data_received(protocol, b\"\\x01\\x00\\x00\")","              await task","","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      assert isinstance(conn._fatal_exception, RequiresEncryptionAPIError)","      conn.force_disconnect()","      assert isinstance(conn._fatal_exception, RequiresEncryptionAPIError)","      conn.report_fatal_error(Exception(\"test\"))","      assert isinstance(conn._fatal_exception, RequiresEncryptionAPIError)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_________________ ERROR at setup of test_plaintext_connection __________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 187","  @pytest.mark.asyncio","  async def test_plaintext_connection(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test that a plaintext connection works.\"\"\"","      messages = []","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","","      def on_msg(msg):","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_____________ ERROR at setup of test_start_connection_socket_error _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 228","  @pytest.mark.asyncio","  async def test_start_connection_socket_error(","      conn: APIConnection, resolve_host, aiohappyeyeballs_start_connection","  ):","      \"\"\"Test handling of socket error during start connection.\"\"\"","      loop = asyncio.get_event_loop()","","      with patch.object(loop, \"create_connection\", side_effect=OSError(\"Socket error\")):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","          with pytest.raises(APIConnectionError, match=\"Socket error\"):","              await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_____ ERROR at setup of test_start_connection_cannot_increase_recv_buffer ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 245","  @pytest.mark.asyncio","  async def test_start_connection_cannot_increase_recv_buffer(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection: MagicMock,","      caplog: pytest.LogCaptureFixture,","  ):","      \"\"\"Test failing to increase the recv buffer.\"\"\"","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      tried_sizes = []","","      def _setsockopt(*args, **kwargs):","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_ ERROR at setup of test_start_connection_can_only_increase_buffer_size_to_262144 _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 293","  @pytest.mark.asyncio","  async def test_start_connection_can_only_increase_buffer_size_to_262144(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection: MagicMock,","      caplog: pytest.LogCaptureFixture,","  ):","      \"\"\"Test the receive buffer can only be increased to 262144.\"\"\"","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      tried_sizes = []","","      def _setsockopt(*args, **kwargs):","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","______________ ERROR at setup of test_start_connection_times_out _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 342","  @pytest.mark.asyncio","  async def test_start_connection_times_out(","      conn: APIConnection, resolve_host, aiohappyeyeballs_start_connection","  ):","      \"\"\"Test handling of start connection timing out.\"\"\"","      asyncio.get_event_loop()","","      async def _mock_socket_connect(*args, **kwargs):","          await asyncio.sleep(500)","","      with (","          patch(","              \"aioesphomeapi.connection.aiohappyeyeballs.start_connection\",","              side_effect=_mock_socket_connect,","          ),","          patch(\"aioesphomeapi.connection.TCP_CONNECT_TIMEOUT\", 0.0),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","","          async_fire_time_changed(utcnow() + timedelta(seconds=200))","          await asyncio.sleep(0)","","      with pytest.raises(APIConnectionError, match=\"Timeout while connecting\"):","          await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_______________ ERROR at setup of test_start_connection_os_error _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 372","  @pytest.mark.asyncio","  async def test_start_connection_os_error(conn: APIConnection, resolve_host):","      \"\"\"Test handling of start connection has an OSError.\"\"\"","      asyncio.get_event_loop()","","      with patch(","          \"aioesphomeapi.connection.aiohappyeyeballs.start_connection\",","          side_effect=OSError(\"Socket error\"),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","          with pytest.raises(APIConnectionError, match=\"Socket error\"):","              await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_____________ ERROR at setup of test_start_connection_is_cancelled _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 390","  @pytest.mark.asyncio","  async def test_start_connection_is_cancelled(conn: APIConnection, resolve_host):","      \"\"\"Test handling of start connection is cancelled.\"\"\"","      asyncio.get_event_loop()","","      with patch(","          \"aioesphomeapi.connection.aiohappyeyeballs.start_connection\",","          side_effect=asyncio.CancelledError,","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","          with pytest.raises(APIConnectionError, match=\"Starting connection cancelled\"):","              await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","____________ ERROR at setup of test_finish_connection_is_cancelled _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 408","  @pytest.mark.asyncio","  async def test_finish_connection_is_cancelled(","      conn: APIConnection, resolve_host, aiohappyeyeballs_start_connection","  ):","      \"\"\"Test handling of finishing connection being cancelled.\"\"\"","      loop = asyncio.get_event_loop()","","      with patch.object(loop, \"create_connection\", side_effect=asyncio.CancelledError):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","          with pytest.raises(APIConnectionError, match=\"Finishing connection cancelled\"):","              await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","______________ ERROR at setup of test_finish_connection_times_out ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 425","  @pytest.mark.asyncio","  async def test_finish_connection_times_out(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test handling of finish connection timing out.\"\"\"","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","      messages = []","","      def on_msg(msg):","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map0] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map1] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map2] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map3] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map4] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","________________ ERROR at setup of test_connect_wrong_password _________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 557","  @pytest.mark.asyncio","  async def test_connect_wrong_password(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, True)","","      with pytest.raises(InvalidAuthAPIError):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_______________ ERROR at setup of test_connect_correct_password ________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 574","  @pytest.mark.asyncio","  async def test_connect_correct_password(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","","      assert conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_________________ ERROR at setup of test_connect_wrong_version _________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 590","  @pytest.mark.asyncio","  async def test_connect_wrong_version(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol, 3, 2)","      send_plaintext_connect_response(protocol, False)","","      with pytest.raises(APIConnectionError, match=\"Incompatible API version\"):","          await connect_task","","      assert conn.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","__________________ ERROR at setup of test_connect_wrong_name ___________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 607","  @pytest.mark.asyncio","  async def test_connect_wrong_name(","      plaintext_connect_task_expected_name: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_expected_name","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      with pytest.raises(","          APIConnectionError,","          match=\"Expected 'test' but server sent a different name: 'fake'\",","      ):","          await connect_task","","      assert conn.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 165","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_expected_name\")","  async def plaintext_connect_task_no_login_with_expected_name(","      conn_with_expected_name: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      event_loop = asyncio.get_running_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(","              connect(conn_with_expected_name, login=False)","          )","          await connected.wait()","          yield conn_with_expected_name, transport, conn_with_expected_name._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 114","  @pytest.fixture","  def conn_with_expected_name(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:114","________________ ERROR at setup of test_force_disconnect_fails _________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 626","  @pytest.mark.asyncio","  async def test_force_disconnect_fails(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      assert conn.is_connected","","      with patch.object(protocol, \"_writer\", side_effect=OSError):","          conn.force_disconnect()","      assert \"Failed to send (forced) disconnect request\" in caplog.text","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","___ ERROR at setup of test_connection_lost_while_connecting[exception_map0] ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 647","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_while_connecting(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      exception, raised_exception = exception_map","      protocol.connection_lost(exception)","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","___ ERROR at setup of test_connection_lost_while_connecting[exception_map1] ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 647","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_while_connecting(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      exception, raised_exception = exception_map","      protocol.connection_lost(exception)","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","___ ERROR at setup of test_connection_lost_while_connecting[exception_map2] ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 647","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_while_connecting(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      exception, raised_exception = exception_map","      protocol.connection_lost(exception)","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_____ ERROR at setup of test_connection_error_during_hello[exception_map0] _____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 673","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), SocketAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_error_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", side_effect=exception),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_____ ERROR at setup of test_connection_error_during_hello[exception_map1] _____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 673","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), SocketAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_error_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", side_effect=exception),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_____ ERROR at setup of test_connection_error_during_hello[exception_map2] _____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 673","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), SocketAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_error_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", side_effect=exception),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","___ ERROR at setup of test_connection_cancelled_during_hello[exception_map0] ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 710","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), APIConnectionCancelledError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_cancelled_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      async def _mock_frame_helper_error(*args, **kwargs):","          conn._frame_helper.connection_lost(exception)","          raise asyncio.CancelledError","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", _mock_frame_helper_error),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","___ ERROR at setup of test_connection_cancelled_during_hello[exception_map1] ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 710","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), APIConnectionCancelledError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_cancelled_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      async def _mock_frame_helper_error(*args, **kwargs):","          conn._frame_helper.connection_lost(exception)","          raise asyncio.CancelledError","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", _mock_frame_helper_error),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","___ ERROR at setup of test_connection_cancelled_during_hello[exception_map2] ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 710","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), APIConnectionCancelledError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_cancelled_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      async def _mock_frame_helper_error(*args, **kwargs):","          conn._frame_helper.connection_lost(exception)","          raise asyncio.CancelledError","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", _mock_frame_helper_error),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","______________ ERROR at setup of test_connect_resolver_times_out _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 751","  @pytest.mark.asyncio","  async def test_connect_resolver_times_out(","      conn: APIConnection, aiohappyeyeballs_start_connection","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with (","          patch(","              \"aioesphomeapi.host_resolver.async_resolve_host\",","              side_effect=asyncio.TimeoutError,","          ),","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          pytest.raises(","              ResolveAPIError,","              match=\"Timeout while resolving IP address for fake.address\",","          ),","      ):","          await connect(conn, login=False)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","___________ ERROR at setup of test_disconnect_fails_to_send_response ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 777","  @pytest.mark.asyncio","  async def test_disconnect_fails_to_send_response(","      connection_params: ConnectionParams,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","      expected_disconnect = None","","      async def _on_stop(_expected_disconnect: bool) -> None:","          nonlocal expected_disconnect","          expected_disconnect = _expected_disconnect","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(","              connect_client(client, login=False, on_stop=_on_stop)","          )","          await connected.wait()","          protocol = client._connection._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      assert client._connection.is_connected","","      with patch.object(protocol, \"_writer\", side_effect=OSError):","          disconnect_request = DisconnectRequest()","          mock_data_received(protocol, generate_plaintext_packet(disconnect_request))","","      # Wait one loop iteration for the disconnect to be processed","      await asyncio.sleep(0)","      assert expected_disconnect is True","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 80","  @pytest.fixture","  def connection_params(event_loop: asyncio.AbstractEventLoop) -> ConnectionParams:","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:80","________________ ERROR at setup of test_disconnect_success_case ________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 826","  @pytest.mark.asyncio","  async def test_disconnect_success_case(","      connection_params: ConnectionParams,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> None:","      loop = asyncio.get_running_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","      expected_disconnect = None","","      async def _on_stop(_expected_disconnect: bool) -> None:","          nonlocal expected_disconnect","          expected_disconnect = _expected_disconnect","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(","              connect_client(client, login=False, on_stop=_on_stop)","          )","          await connected.wait()","          protocol = client._connection._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      assert client._connection.is_connected","","      disconnect_request = DisconnectRequest()","      mock_data_received(protocol, generate_plaintext_packet(disconnect_request))","","      # Wait one loop iteration for the disconnect to be processed","      await asyncio.sleep(0)","      assert expected_disconnect is True","      assert not client._connection","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 80","  @pytest.fixture","  def connection_params(event_loop: asyncio.AbstractEventLoop) -> ConnectionParams:","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:80","__________ ERROR at setup of test_ping_disconnects_after_no_responses __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 875","  @pytest.mark.asyncio","  async def test_ping_disconnects_after_no_responses(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","","      ping_request_bytes = b\"\\x00\\x00\\x07\"","","      assert conn.is_connected","      transport.reset_mock()","      expected_calls = []","      start_time = utcnow()","      max_pings_to_disconnect_after = int(KEEP_ALIVE_TIMEOUT_RATIO)","      for count in range(1, max_pings_to_disconnect_after + 1):","          async_fire_time_changed(","              start_time + timedelta(seconds=KEEP_ALIVE_INTERVAL * count)","          )","          assert transport.write.call_count == count","          expected_calls.append(call(ping_request_bytes))","          assert transport.write.mock_calls == expected_calls","","      assert conn.is_connected is True","","      # We should disconnect once we reach more than 4 missed pings","      async_fire_time_changed(","          start_time","          + timedelta(seconds=KEEP_ALIVE_INTERVAL * (max_pings_to_disconnect_after + 1))","      )","      assert transport.write.call_count == max_pings_to_disconnect_after + 1","","      assert conn.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_____ ERROR at setup of test_ping_does_not_disconnect_if_we_get_responses ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 915","  @pytest.mark.asyncio","  async def test_ping_does_not_disconnect_if_we_get_responses(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      ping_request_bytes = b\"\\x00\\x00\\x07\"","","      assert conn.is_connected","      transport.reset_mock()","      start_time = utcnow()","      max_pings_to_disconnect_after = int(KEEP_ALIVE_TIMEOUT_RATIO)","      for count in range(1, max_pings_to_disconnect_after + 2):","          async_fire_time_changed(","              start_time + timedelta(seconds=KEEP_ALIVE_INTERVAL * count)","          )","          send_ping_response(protocol)","","      # We should only send 1 ping request if we are getting responses","      assert transport.write.call_count == 1","      assert transport.write.mock_calls == [call(ping_request_bytes)]","","      # We should disconnect if we are getting ping responses","      assert conn.is_connected is True","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","___ ERROR at setup of test_raise_during_send_messages_when_not_yet_connected ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 947","  def test_raise_during_send_messages_when_not_yet_connected(conn: APIConnection) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","________________ ERROR at setup of test_respond_to_ping_request ________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 953","  @pytest.mark.asyncio","  async def test_respond_to_ping_request(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      assert conn.is_connected","","      transport.reset_mock()","      send_ping_request(protocol)","      # We should respond to ping requests","      ping_response_bytes = b\"\\x00\\x00\\x08\"","      assert transport.write.call_count == 1","      assert transport.write.mock_calls == [call(ping_response_bytes)]","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_________ ERROR at setup of test_unknown_protobuf_message_type_logged __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 976","  @pytest.mark.asyncio","  async def test_unknown_protobuf_message_type_logged(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test unknown protobuf messages are logged but do not cause the connection to collapse.\"\"\"","      client, connection, transport, protocol = api_client","      response: message.Message = DeviceInfoResponse(","          name=\"realname\",","          friendly_name=\"My Device\",","          has_deep_sleep=True,","      )","      caplog.set_level(logging.DEBUG)","      client.set_debug(True)","      bytes_ = response.SerializeToString()","      message_with_invalid_protobuf_number = (","          b\"\\0\"","          + _cached_varuint_to_bytes(len(bytes_))","          + _cached_varuint_to_bytes(16385)","          + bytes_","      )","","      mock_data_received(protocol, message_with_invalid_protobuf_number)","","      assert \"Skipping unknown message type 16385\" in caplog.text","      assert connection.is_connected","      connection.force_disconnect()","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","_________ ERROR at setup of test_bad_protobuf_message_drops_connection _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 1008","  @pytest.mark.asyncio","  async def test_bad_protobuf_message_drops_connection(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test ad bad protobuf messages is logged and causes the connection to collapse.\"\"\"","      client, connection, transport, protocol = api_client","      msg: message.Message = TextSensorStateResponse(","          key=1, state=\"invalid\", missing_state=False","      )","      caplog.clear()","      caplog.set_level(logging.DEBUG)","      client.set_debug(True)","      bytes_ = msg.SerializeToString()","      # Replace the bytes with invalid UTF-8","      bytes_ = bytes.replace(bytes_, b\"invalid\", b\"inval\\xe9 \")","","      message_with_bad_protobuf_data = (","          b\"\\0\"","          + _cached_varuint_to_bytes(len(bytes_))","          + _cached_varuint_to_bytes(27)","          + bytes_","      )","      mock_data_received(protocol, message_with_bad_protobuf_data)","      assert \"Invalid protobuf message: type=TextSensorStateResponse\" in caplog.text","      assert connection.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","______________ ERROR at setup of test_connection_cannot_be_reused ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 1038","  @pytest.mark.asyncio","  async def test_connection_cannot_be_reused(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      \"\"\"Test that we raise when trying to connect when already connected.\"\"\"","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","      await connect_task","      with pytest.raises(RuntimeError):","          await conn.start_connection()","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:96","_______ ERROR at setup of test_attempting_to_finish_unstarted_connection _______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_connection.py, line 1053","  @pytest.mark.asyncio","  async def test_attempting_to_finish_unstarted_connection(","      conn: APIConnection,","  ) -> None:","      \"\"\"Test that we raise when trying to finish an unstarted connection.\"\"\"","      with pytest.raises(RuntimeError):","          await conn.finish_connection(login=False)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","______________________ ERROR at setup of test_log_runner _______________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_log_runner.py, line 32","  @pytest.mark.asyncio","  async def test_log_runner(","      conn: APIConnection,","      aiohappyeyeballs_start_connection,","  ):","      \"\"\"Test the log runner logic.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=Estr(\"127.0.0.1\"),","          port=6052,","          password=None,","          noise_psk=None,","          expected_name=Estr(\"fake\"),","          zeroconf_instance=async_zeroconf.zeroconf,","      )","      messages = []","","      def on_log(msg: SubscribeLogsResponse) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","__________ ERROR at setup of test_log_runner_reconnects_on_disconnect __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_log_runner.py, line 100","  @pytest.mark.asyncio","  async def test_log_runner_reconnects_on_disconnect(","      conn: APIConnection,","      caplog: pytest.LogCaptureFixture,","      aiohappyeyeballs_start_connection,","  ) -> None:","      \"\"\"Test the log runner reconnects on disconnect.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=Estr(\"127.0.0.1\"),","          port=6052,","          password=None,","          noise_psk=None,","          expected_name=Estr(\"fake\"),","          zeroconf_instance=async_zeroconf.zeroconf,","      )","      messages = []","","      def on_log(msg: SubscribeLogsResponse) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","______ ERROR at setup of test_log_runner_reconnects_on_subscribe_failure _______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_log_runner.py, line 180","  @pytest.mark.asyncio","  async def test_log_runner_reconnects_on_subscribe_failure(","      conn: APIConnection,","      caplog: pytest.LogCaptureFixture,","      aiohappyeyeballs_start_connection,","  ) -> None:","      \"\"\"Test the log runner reconnects on subscribe failure.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=Estr(\"127.0.0.1\"),","          port=6052,","          password=None,","          noise_psk=None,","          expected_name=Estr(\"fake\"),","          zeroconf_instance=async_zeroconf.zeroconf,","      )","      messages = []","","      def on_log(msg: SubscribeLogsResponse) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:89","_________________ ERROR at setup of test_reconnect_logic_state _________________","","self = <Coroutine test_reconnect_logic_state>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________________ ERROR at setup of test_reconnect_retry ____________________","","self = <Coroutine test_reconnect_retry>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_ ERROR at setup of test_reconnect_zeroconf[record0-True-ReconnectLogicState.READY-received mDNS record] _","","self = <Coroutine test_reconnect_zeroconf[record0-True-ReconnectLogicState.READY-received mDNS record]>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_ ERROR at setup of test_reconnect_zeroconf[record1-False-ReconnectLogicState.CONNECTING-] _","","self = <Coroutine test_reconnect_zeroconf[record1-False-ReconnectLogicState.CONNECTING-]>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_ ERROR at setup of test_reconnect_zeroconf[record2-True-ReconnectLogicState.READY-received mDNS record] _","","self = <Coroutine test_reconnect_zeroconf[record2-True-ReconnectLogicState.READY-received mDNS record]>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______ ERROR at setup of test_reconnect_zeroconf_not_while_handshaking ________","","self = <Coroutine test_reconnect_zeroconf_not_while_handshaking>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_____ ERROR at setup of test_connect_task_not_cancelled_while_handshaking ______","","self = <Coroutine test_connect_task_not_cancelled_while_handshaking>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_______________ ERROR at setup of test_connect_aborts_if_stopped _______________","","self = <Coroutine test_connect_aborts_if_stopped>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_____________ ERROR at setup of test_reconnect_logic_stop_callback _____________","","self = <Coroutine test_reconnect_logic_stop_callback>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","___ ERROR at setup of test_reconnect_logic_stop_callback_waits_for_handshake ___","","self = <Coroutine test_reconnect_logic_stop_callback_waits_for_handshake>","","    def setup(self) -> None:","        runner_fixture_id = f\"_{self._loop_scope}_scoped_runner\"","        if runner_fixture_id not in self.fixturenames:","            self.fixturenames.append(runner_fixture_id)",">       return super().setup()","               ^^^^^^^^^^^^^^^","","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:458: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","/usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:728: in pytest_fixture_setup","    return (yield)","            ^^^^^","tests/conftest.py:59: in patchable_api_client","    cli = PatchableAPIClient(","aioesphomeapi/client.py:266: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________ ERROR at setup of test_handling_unexpected_disconnect _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_reconnect_logic.py, line 690","  @pytest.mark.asyncio","  async def test_handling_unexpected_disconnect(aiohappyeyeballs_start_connection):","      \"\"\"Test the disconnect callback fires with expected_disconnect=False.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=\"127.0.0.1\",","          port=6052,","          password=None,","          noise_psk=None,","          expected_name=\"fake\",","          zeroconf_instance=async_zeroconf.zeroconf,","      )","","      connected = asyncio.Event()","      on_disconnect_calls = []","","      async def on_disconnect(expected_disconnect: bool) -> None:","          on_disconnect_calls.append(expected_disconnect)","","      async def on_connect() -> None:","          connected.set()","","      logic = ReconnectLogic(","          client=cli,","          on_connect=on_connect,","          on_disconnect=on_disconnect,","          zeroconf_instance=async_zeroconf,","          name=\"fake\",","      )","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          await logic.start()","          await connected.wait()","          protocol = cli._connection._frame_helper","          send_plaintext_hello(protocol)","          send_plaintext_connect_response(protocol, False)","          await asyncio.sleep(0)","          await asyncio.sleep(0)","","      assert cli._connection.is_connected is True","      await asyncio.sleep(0)","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ) as mock_create_connection,","          patch.object(cli, \"start_connection\"),","          patch.object(cli, \"finish_connection\"),","      ):","          protocol.eof_received()","          # Wait for the task to run","          await asyncio.sleep(0)","          # Ensure we try to reconnect immediately","          # since its an unexpected disconnect","          assert mock_create_connection.call_count == 0","","      assert len(on_disconnect_calls) == 1","      expected_disconnect = on_disconnect_calls[-1]","      assert expected_disconnect is False","      await logic.stop()","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","______________ ERROR at setup of test_backoff_on_encryption_error ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/test_reconnect_logic.py, line 767","  @pytest.mark.asyncio","  async def test_backoff_on_encryption_error(","      caplog: pytest.LogCaptureFixture,","      aiohappyeyeballs_start_connection,","  ) -> None:","      \"\"\"Test we backoff on encryption error.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=\"127.0.0.1\",","          port=6052,","          password=None,","          noise_psk=\"\",","          expected_name=\"fake\",","          zeroconf_instance=async_zeroconf.zeroconf,","      )","","      connected = asyncio.Event()","      on_disconnect_calls = []","","      async def on_disconnect(expected_disconnect: bool) -> None:","          on_disconnect_calls.append(expected_disconnect)","","      async def on_connect() -> None:","          connected.set()","","      logic = ReconnectLogic(","          client=cli,","          on_connect=on_connect,","          on_disconnect=on_disconnect,","          zeroconf_instance=async_zeroconf,","          name=\"fake\",","      )","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          await logic.start()","          await connected.wait()","          protocol = cli._connection._frame_helper","          mock_data_received(protocol, b\"\\x01\\x00\\x00\")","","      assert cli._connection.is_connected is False","      await asyncio.sleep(0)","      await asyncio.sleep(0)","","      assert len(on_disconnect_calls) == 0","","      assert \"Scheduling new connect attempt in 60.00 seconds\" in caplog.text","      assert \"Connection requires encryption (RequiresEncryptionAPIError)\" in caplog.text","      now = loop.time()","      assert logic._connect_timer.when() - now == pytest.approx(60, 1)","      assert logic._tries == MAXIMUM_BACKOFF_TRIES","      await logic.stop()","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build/tests/conftest.py:122","=================================== FAILURES ===================================","___________ test_plaintext_frame_helper_protractor_event_loop[bytes] ___________","","byte_type = <class 'bytes'>","","    @pytest.mark.parametrize(","        \"byte_type\",","        (bytes, bytearray, memoryview),","    )","    def test_plaintext_frame_helper_protractor_event_loop(byte_type: Any) -> None:","        \"\"\"Test the plaintext frame helper with the protractor event loop.","    ","        With the protractor event loop, data_received is called with a bytearray","        instead of bytes.","    ","        https://github.com/esphome/issues/issues/5117","        \"\"\"","        for _ in range(3):",">           connection, packets = _make_mock_connection()","                                  ^^^^^^^^^^^^^^^^^^^^^^^","","tests/test__frame_helper.py:246: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:125: in _make_mock_connection","    connection = MockConnection()","                 ^^^^^^^^^^^^^^^^","tests/test__frame_helper.py:118: in __init__","    super().__init__(","aioesphomeapi/connection.py:252: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","_________ test_plaintext_frame_helper_protractor_event_loop[bytearray] _________","","byte_type = <class 'bytearray'>","","    @pytest.mark.parametrize(","        \"byte_type\",","        (bytes, bytearray, memoryview),","    )","    def test_plaintext_frame_helper_protractor_event_loop(byte_type: Any) -> None:","        \"\"\"Test the plaintext frame helper with the protractor event loop.","    ","        With the protractor event loop, data_received is called with a bytearray","        instead of bytes.","    ","        https://github.com/esphome/issues/issues/5117","        \"\"\"","        for _ in range(3):",">           connection, packets = _make_mock_connection()","                                  ^^^^^^^^^^^^^^^^^^^^^^^","","tests/test__frame_helper.py:246: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:125: in _make_mock_connection","    connection = MockConnection()","                 ^^^^^^^^^^^^^^^^","tests/test__frame_helper.py:118: in __init__","    super().__init__(","aioesphomeapi/connection.py:252: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","________ test_plaintext_frame_helper_protractor_event_loop[memoryview] _________","","byte_type = <class 'memoryview'>","","    @pytest.mark.parametrize(","        \"byte_type\",","        (bytes, bytearray, memoryview),","    )","    def test_plaintext_frame_helper_protractor_event_loop(byte_type: Any) -> None:","        \"\"\"Test the plaintext frame helper with the protractor event loop.","    ","        With the protractor event loop, data_received is called with a bytearray","        instead of bytes.","    ","        https://github.com/esphome/issues/issues/5117","        \"\"\"","        for _ in range(3):",">           connection, packets = _make_mock_connection()","                                  ^^^^^^^^^^^^^^^^^^^^^^^","","tests/test__frame_helper.py:246: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:125: in _make_mock_connection","    connection = MockConnection()","                 ^^^^^^^^^^^^^^^^","tests/test__frame_helper.py:118: in __init__","    super().__init__(","aioesphomeapi/connection.py:252: in __init__","    self._loop = asyncio.get_event_loop()","                 ^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7fd26ae98d70>","","    def get_event_loop(self):","        \"\"\"Get the event loop for the current context.","    ","        Returns an instance of EventLoop or raises an exception.","        \"\"\"","        if self._local._loop is None:",">           raise RuntimeError('There is no current event loop in thread %r.'","                               % threading.current_thread().name)","E           RuntimeError: There is no current event loop in thread 'MainThread'.","","/usr/lib/python3.14/asyncio/events.py:715: RuntimeError","____________________ test_noise_protector_event_loop[bytes] ____________________","","byte_type = <class 'bytes'>","","    @pytest.mark.asyncio","    @pytest.mark.parametrize(","        \"byte_type\",","        (bytes, bytearray, memoryview),","    )","    async def test_noise_protector_event_loop(byte_type: Any) -> None:","        \"\"\"Test the noise frame helper with the protractor event loop.","    ","        With the protractor event loop, data_received is called with a bytearray","        instead of bytes.","    ","        https://github.com/esphome/issues/issues/5117","        \"\"\"","        outgoing_packets = [","            \"010000\",  # hello packet","            \"010031001ed7f7bb0b74085418258ed5928931bc36ade7cf06937fcff089044d4ab142643f1b2c9935bb77696f23d930836737a4\",","        ]","        incoming_packets = [","            \"01000d01736572766963657465737400\",","            \"0100160148616e647368616b65204d4143206661696c757265\",","        ]","        connection, _ = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=\"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\",","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","        )","","tests/test__frame_helper.py:296: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26ab2c440>","k = b\"\\xd3\\xdb\\xff\\x8by\\xea\\xdbW\\xe8'/o\\xa5 \\x96\\x03\\xac\\x94!!L\\x8b\\xe4\\x98\\xf5\\xcd\\x96\\x01\\x8a\\xf1)\\xfc\"","n = 0","ad = b\"\\xee\\x1b\\xe6\\xe6\\xb8>\\xb0\\xb3\\xf7\\xf2\\x99Z\\x17\\x96\\xbe\\xacs\\xfa\\xb3\\xef}\\x9df:'\\xbbx\\x9f\\x9f\\xf3\\x03\\x85\"","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","__________________ test_noise_protector_event_loop[bytearray] __________________","","byte_type = <class 'bytearray'>","","    @pytest.mark.asyncio","    @pytest.mark.parametrize(","        \"byte_type\",","        (bytes, bytearray, memoryview),","    )","    async def test_noise_protector_event_loop(byte_type: Any) -> None:","        \"\"\"Test the noise frame helper with the protractor event loop.","    ","        With the protractor event loop, data_received is called with a bytearray","        instead of bytes.","    ","        https://github.com/esphome/issues/issues/5117","        \"\"\"","        outgoing_packets = [","            \"010000\",  # hello packet","            \"010031001ed7f7bb0b74085418258ed5928931bc36ade7cf06937fcff089044d4ab142643f1b2c9935bb77696f23d930836737a4\",","        ]","        incoming_packets = [","            \"01000d01736572766963657465737400\",","            \"0100160148616e647368616b65204d4143206661696c757265\",","        ]","        connection, _ = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=\"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\",","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","        )","","tests/test__frame_helper.py:296: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26aebbd90>","k = b'\\xc0\\x10\\xc2\\xcd\\xd5W\\x85|\\xc6D\\x95*eV<v\\xa3R\\x15\\x8c\\xf4\\xe7L4R\\xa3\\xb8\\xa4\\xc7\\xd85\\xd7'","n = 0","ad = b'\\x1c{\\x02M\\x90\\xf2\\xbf\\xc8\\xe1C\\xfa\\x08\\xfb\\xf8;\\x14P\\xfc\\x01[\\x9a\\x16E\\xab\\xaa\\x80\\xde\\xbckW\\x0c\\xdc'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","_________________ test_noise_protector_event_loop[memoryview] __________________","","byte_type = <class 'memoryview'>","","    @pytest.mark.asyncio","    @pytest.mark.parametrize(","        \"byte_type\",","        (bytes, bytearray, memoryview),","    )","    async def test_noise_protector_event_loop(byte_type: Any) -> None:","        \"\"\"Test the noise frame helper with the protractor event loop.","    ","        With the protractor event loop, data_received is called with a bytearray","        instead of bytes.","    ","        https://github.com/esphome/issues/issues/5117","        \"\"\"","        outgoing_packets = [","            \"010000\",  # hello packet","            \"010031001ed7f7bb0b74085418258ed5928931bc36ade7cf06937fcff089044d4ab142643f1b2c9935bb77696f23d930836737a4\",","        ]","        incoming_packets = [","            \"01000d01736572766963657465737400\",","            \"0100160148616e647368616b65204d4143206661696c757265\",","        ]","        connection, _ = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=\"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\",","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","        )","","tests/test__frame_helper.py:296: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26adc4e10>","k = b'M\\xeb\\x93n\\x88\\x7f\\x90V\\x0e\\x97\\xe1\\xd7\\xed\\x04\\xef\\xb9\\x85\\xe8\\x19a\\xc1\\xe1\\x04\\xe0\\xcc\\xb4\\xc2\\x88\\xa5\\x03\\xa9\\xc6'","n = 0","ad = b'F\\x7fc\\xc4G\\x94-\\xa0\\x19\\xd7y\\xfb\\x7fq\\xb4\\x8f\\x1e\\xe7\\xc3NP\\xb9\\xfb\\xbbP\\xc8\\xcb\\x17\\xc4M\\xcf#'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","____________________ test_noise_frame_helper_incorrect_key _____________________","","    @pytest.mark.asyncio","    async def test_noise_frame_helper_incorrect_key():","        \"\"\"Test that the noise frame helper raises InvalidEncryptionKeyAPIError on bad key.\"\"\"","        outgoing_packets = [","            \"010000\",  # hello packet","            \"010031001ed7f7bb0b74085418258ed5928931bc36ade7cf06937fcff089044d4ab142643f1b2c9935bb77696f23d930836737a4\",","        ]","        incoming_packets = [","            \"01000d01736572766963657465737400\",","            \"0100160148616e647368616b65204d4143206661696c757265\",","        ]","        connection, _ = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=\"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\",","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","        )","","tests/test__frame_helper.py:327: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26ab28fc0>","k = b'\\xed\\xdb \\xf9\\xc5\\x98k1RW\\xe3g:+\\x04\\x8e\\x91\\xd2\\xd0\\xd2\\r\\xe5|r\\x86-\\xc2\\xa4\\xf3\\x0f\\xa2\\x0f'","n = 0","ad = b'\\xc6\\xc9\\x18W\\xa3\\xf8\\xc2\\xedfC\\x89\\x0f~\\x7f\\xd7\\x89\\xc6\\xba\\x8c\\xe7AH\\xa8\\n\\xbf\\x90\\xd4\\x9a\\xbd\\x8f\\xb5V'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","_______________ test_noise_frame_helper_incorrect_key_fragments ________________","","    @pytest.mark.asyncio","    async def test_noise_frame_helper_incorrect_key_fragments():","        \"\"\"Test that the noise frame helper raises InvalidEncryptionKeyAPIError on bad key with fragmented packets.\"\"\"","        outgoing_packets = [","            \"010000\",  # hello packet","            \"010031001ed7f7bb0b74085418258ed5928931bc36ade7cf06937fcff089044d4ab142643f1b2c9935bb77696f23d930836737a4\",","        ]","        incoming_packets = [","            \"01000d01736572766963657465737400\",","            \"0100160148616e647368616b65204d4143206661696c757265\",","        ]","        connection, _ = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=\"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\",","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","        )","","tests/test__frame_helper.py:358: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26ab2b490>","k = b'4\\xc8r\\xa4|\\xf7\\xa5y\\xe0\\xe0\"TS{\\xba\\x83\\x1f\\xa5\\x81\\x0b\\xf7\\x1f\\xc4b;N\\xf9S%!\\x132'","n = 0","ad = b'\\x9a \\x03Foh\\x06M7\\xea]\\xac\\x11\\x1f\\x17\\xc2K\\xf7\\x14\\x00\\x99$\\x86\\x0cT\\xe7}\\xa2qdq\\xf9'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","__________________________ test_noise_incorrect_name ___________________________","","    @pytest.mark.asyncio","    async def test_noise_incorrect_name():","        \"\"\"Test we raise on bad name.\"\"\"","        outgoing_packets = [","            \"010000\",  # hello packet","            \"010031001ed7f7bb0b74085418258ed5928931bc36ade7cf06937fcff089044d4ab142643f1b2c9935bb77696f23d930836737a4\",","        ]","        incoming_packets = [","            \"01000d01736572766963657465737400\",","            \"0100160148616e647368616b65204d4143206661696c757265\",","        ]","        connection, _ = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=\"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\",","            expected_name=\"wrongname\",","            client_info=\"my client\",","            log_name=\"test\",","        )","","tests/test__frame_helper.py:391: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26adcdd90>","k = b'f\\r\\x8a1\\x1e\\xdc!\\x0c\\x8c\\xe4,\\x14\\xba\\x1d\\xe3OC\\xbb \\x1fk\\xfe\\x99\\x94\\x0f\\x12\\xbc\\xeaMK=\\xe4'","n = 0","ad = b'\\xc3\\x0e\\xb4\\xcb\\x98U\\x99\\xdf\\x82Y\\xcd\\x84F\\xe8$F\\x10\\x02\\xb7\\xf2\\xc9\\x1c\\r\\xde4I\\xba\\xf2 \\xae\\x92\\xbf'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","__________________ test_noise_frame_helper_handshake_failure ___________________","","    @pytest.mark.asyncio","    async def test_noise_frame_helper_handshake_failure():","        \"\"\"Test the noise frame helper handshake failure.\"\"\"","        noise_psk = \"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\"","        psk_bytes = base64.b64decode(noise_psk)","        writes = []","    ","        def _writer(data: bytes):","            writes.append(data)","    ","        connection, _ = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=noise_psk,","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","            writer=_writer,","        )","","tests/test__frame_helper.py:437: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26ad56be0>","k = b'U\\xe5\\x9bt;\\x19\\xcf\\xeeD\\xc3\\x17<B\\x0b\\x7f\\xaf\\xda\\xbc\\xb4\\xfa\\xa6Et\\xf1\\xcd \\xc3\\xc8r(\\xb2M'","n = 0","ad = b'a\\xc8\\xf9\\xb1\\x0b\\xc9<\\xf3\\x1d\\x8c\\xe0\\xd4\\n\\xa3\\xd6\\xa9\\xb5\\x15\\x01]\\xd4\\x1c\\xc6L\\xea !\\xf8\\xf7\\x04K\\xd3'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","_________ test_noise_frame_helper_handshake_success_with_single_packet _________","","    @pytest.mark.asyncio","    async def test_noise_frame_helper_handshake_success_with_single_packet():","        \"\"\"Test the noise frame helper handshake success with a single packet.\"\"\"","        noise_psk = \"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\"","        psk_bytes = base64.b64decode(noise_psk)","        writes = []","    ","        def _writer(data: bytes):","            writes.append(data)","    ","        connection, packets = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=noise_psk,","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","            writer=_writer,","        )","","tests/test__frame_helper.py:486: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26ad55480>","k = b'\\x96\\xcd~wM\\x03\\xf527\\x06\\xf5;\\xef\\x8c\\xf0\\xc5\\x91\\n\\xdf\\x84\\x15\"yh\\xe1\\x06\\x9c\\x8dai!\\x0e'","n = 0","ad = b'\\x0e\\xc0\\xc7a\\xe4\\x8b\\xa3\\xe6\\xefP\\x9eBo\\xa8\\xb6Q*O\\xa0\\xc4\\xa0\\x8d\\x1e=@s\\x0e#\\xb9\\xd4\\xc6R'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","____________________ test_noise_frame_helper_bad_encryption ____________________","","caplog = <_pytest.logging.LogCaptureFixture object at 0x7fd26ab2c830>","","    @pytest.mark.asyncio","    async def test_noise_frame_helper_bad_encryption(","        caplog: pytest.LogCaptureFixture,","    ) -> None:","        \"\"\"Test the noise frame helper closes connection on encryption error.\"\"\"","        noise_psk = \"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\"","        psk_bytes = base64.b64decode(noise_psk)","        writes = []","    ","        def _writer(data: bytes):","            writes.append(data)","    ","        connection, packets = _make_mock_connection()","    ",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=noise_psk,","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","            writer=_writer,","        )","","tests/test__frame_helper.py:548: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26ad96150>","k = b'B\\xb6\\x87n\\xfaI9Q\\xb9pc!\\xd0q\\xea\\x01\\x0b[\\xe04\\x89\\x1d\\xb1H\\x02\\xea\\xda6\\x03K\\xf1\\xaa'","n = 0","ad = b\"\\x03\\xcf\\xd1R\\xf7'\\x80\\x88Lh\\xb1zHt\\xeckx\\xb5U\\xe0\\xbf\\x03@\\xc3=\\x9ecp\\x17L#\\xbb\"","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","_____________________ test_noise_frame_helper_empty_hello ______________________","","    @pytest.mark.asyncio","    async def test_noise_frame_helper_empty_hello():","        \"\"\"Test empty hello with noise.\"\"\"","        connection, _ = _make_mock_connection()",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=\"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\",","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","        )","","tests/test__frame_helper.py:648: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26ad97a50>","k = b'\\x17\\xa4=\\xdd\\x87W\\\\6\\x8a\\xe9\\xe4=\\x16\\xd4\\x03\\xd77\\xc1\\xc9\\xe9\\x1d\\xc12D\\x1b\\xe5}\\xff\\xb1\\xbes\\xb7'","n = 0","ad = b'\\xb0\\x9f\\xf5\\xb1w\\x8b\\xb3\\x1a\\xff\\xbc\\xa92\\xc5\\xd2^\\xa5\\xdbC\\xca\\x8ef\\xc8\\xc0\\x1dzA8V\\xe3\\xa1\\xd7\\xa5'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","____________________ test_noise_frame_helper_wrong_protocol ____________________","","    @pytest.mark.asyncio","    async def test_noise_frame_helper_wrong_protocol():","        \"\"\"Test noise with the wrong protocol.\"\"\"","        connection, _ = _make_mock_connection()",">       helper = MockAPINoiseFrameHelper(","            connection=connection,","            noise_psk=\"QRTIErOb/fcE9Ukd/5qA3RGYMn0Y+p06U58SCtOXvPc=\",","            expected_name=\"servicetest\",","            client_info=\"my client\",","            log_name=\"test\",","        )","","tests/test__frame_helper.py:668: ","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","tests/test__frame_helper.py:136: in __init__","    self.connection_made(transport)","tests/test__frame_helper.py:139: in connection_made","    return super().connection_made(self.__transport)","           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","aioesphomeapi/_frame_helper/noise.py:134: in connection_made","    self._send_hello_handshake()","aioesphomeapi/_frame_helper/noise.py:175: in _send_hello_handshake","    handshake_frame = self._proto.write_message()","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/connection.py:110: in write_message","    result = self.noise_protocol.handshake_state.write_message(payload, buffer)","             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:345: in write_message","    message_buffer += self.symmetric_state.encrypt_and_hash(payload)","                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:172: in encrypt_and_hash","    ciphertext = self.cipher_state.encrypt_with_ad(self.h, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","/usr/lib/python3/dist-packages/noiseprotocol/state.py:55: in encrypt_with_ad","    ciphertext = self.cipher.encrypt(self.k, self.n, ad, plaintext)","                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^","_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ","","self = <aioesphomeapi._frame_helper.noise.ChaCha20CipherReuseable object at 0x7fd26ada0050>","k = b'U\\xdf+\\x1b\\x8d\\x00j\\xf5\\xd0Oh\\x9b\\x98\\x08\\xb0\\x1f\\xab<\\x80\\xb3\\xc0gq\\xd6\\x07uJ\\x08d\\xe3R\\xda'","n = 0","ad = b'\\xcc\\xf9\\xa7\\xbcOD\\xc0o\\xf4\\xa09i\\x97\\n\\x1c72\\xeb%\\xeb\\x1dv\\x8d\\x12HT\\xa2\\x8e\\xd5xy1'","plaintext = b''","","    def encrypt(self, k, n, ad, plaintext):",">       return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","                                         ^^^^^^^^^^^^^^^^^^^^","E       struct.error: pack expected 2 items for packing (got 3)","","/usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: error","__________________________ test_create_eager_task_312 __________________________","async def functions are not natively supported.","You need to install a suitable plugin for your async framework, for example:","  - anyio","  - pytest-asyncio","  - pytest-tornasync","  - pytest-trio","  - pytest-twisted","=============================== warnings summary ===============================","../../../../../../usr/lib/python3/dist-packages/google/protobuf/internal/well_known_types.py:91","  /usr/lib/python3/dist-packages/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).","    _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)","","-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html","=========================== short test summary info ============================","FAILED tests/test__frame_helper.py::test_plaintext_frame_helper_protractor_event_loop[bytes]","FAILED tests/test__frame_helper.py::test_plaintext_frame_helper_protractor_event_loop[bytearray]","FAILED tests/test__frame_helper.py::test_plaintext_frame_helper_protractor_event_loop[memoryview]","FAILED tests/test__frame_helper.py::test_noise_protector_event_loop[bytes] - ...","FAILED tests/test__frame_helper.py::test_noise_protector_event_loop[bytearray]","FAILED tests/test__frame_helper.py::test_noise_protector_event_loop[memoryview]","FAILED tests/test__frame_helper.py::test_noise_frame_helper_incorrect_key - s...","FAILED tests/test__frame_helper.py::test_noise_frame_helper_incorrect_key_fragments","FAILED tests/test__frame_helper.py::test_noise_incorrect_name - struct.error:...","FAILED tests/test__frame_helper.py::test_noise_frame_helper_handshake_failure","FAILED tests/test__frame_helper.py::test_noise_frame_helper_handshake_success_with_single_packet","FAILED tests/test__frame_helper.py::test_noise_frame_helper_bad_encryption - ...","FAILED tests/test__frame_helper.py::test_noise_frame_helper_empty_hello - str...","FAILED tests/test__frame_helper.py::test_noise_frame_helper_wrong_protocol - ...","FAILED tests/test_util.py::test_create_eager_task_312 - Failed: async def fun...","ERROR tests/test__frame_helper.py::test_init_plaintext_with_wrong_preamble","ERROR tests/test__frame_helper.py::test_init_noise_with_wrong_byte_marker","ERROR tests/test__frame_helper.py::test_init_noise_attempted_when_esp_uses_plaintext","ERROR tests/test__frame_helper.py::test_eof_received_closes_connection","ERROR tests/test__frame_helper.py::test_connection_lost_closes_connection_and_logs[exception_map0]","ERROR tests/test__frame_helper.py::test_connection_lost_closes_connection_and_logs[exception_map1]","ERROR tests/test__frame_helper.py::test_connection_lost_closes_connection_and_logs[exception_map2]","ERROR tests/test_client.py::test_expected_name - RuntimeError: There is no cu...","ERROR tests/test_client.py::test_finish_connection_wraps_exceptions_as_unhandled_api_error","ERROR tests/test_client.py::test_connect_while_already_connected - RuntimeErr...","ERROR tests/test_client.py::test_list_entities[input0-output0] - RuntimeError...","ERROR tests/test_client.py::test_list_entities[input1-output1] - RuntimeError...","ERROR tests/test_client.py::test_subscribe_states - RuntimeError: There is no...","ERROR tests/test_client.py::test_subscribe_states_camera - RuntimeError: Ther...","ERROR tests/test_client.py::test_cover_command_legacy[cmd0-req0] - RuntimeErr...","ERROR tests/test_client.py::test_cover_command_legacy[cmd1-req1] - RuntimeErr...","ERROR tests/test_client.py::test_cover_command_legacy[cmd2-req2] - RuntimeErr...","ERROR tests/test_client.py::test_cover_command_legacy[cmd3-req3] - RuntimeErr...","ERROR tests/test_client.py::test_cover_command[cmd0-req0] - RuntimeError: The...","ERROR tests/test_client.py::test_cover_command[cmd1-req1] - RuntimeError: The...","ERROR tests/test_client.py::test_cover_command[cmd2-req2] - RuntimeError: The...","ERROR tests/test_client.py::test_cover_command[cmd3-req3] - RuntimeError: The...","ERROR tests/test_client.py::test_cover_command[cmd4-req4] - RuntimeError: The...","ERROR tests/test_client.py::test_fan_command[cmd0-req0] - RuntimeError: There...","ERROR tests/test_client.py::test_fan_command[cmd1-req1] - RuntimeError: There...","ERROR tests/test_client.py::test_fan_command[cmd2-req2] - RuntimeError: There...","ERROR tests/test_client.py::test_fan_command[cmd3-req3] - RuntimeError: There...","ERROR tests/test_client.py::test_fan_command[cmd4-req4] - RuntimeError: There...","ERROR tests/test_client.py::test_fan_command[cmd5-req5] - RuntimeError: There...","ERROR tests/test_client.py::test_fan_command[cmd6-req6] - RuntimeError: There...","ERROR tests/test_client.py::test_light_command[cmd0-req0] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd1-req1] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd2-req2] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd3-req3] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd4-req4] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd5-req5] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd6-req6] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd7-req7] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd8-req8] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd9-req9] - RuntimeError: The...","ERROR tests/test_client.py::test_light_command[cmd10-req10] - RuntimeError: T...","ERROR tests/test_client.py::test_light_command[cmd11-req11] - RuntimeError: T...","ERROR tests/test_client.py::test_switch_command[cmd0-req0] - RuntimeError: Th...","ERROR tests/test_client.py::test_switch_command[cmd1-req1] - RuntimeError: Th...","ERROR tests/test_client.py::test_climate_command_legacy[cmd0-req0] - RuntimeE...","ERROR tests/test_client.py::test_climate_command_legacy[cmd1-req1] - RuntimeE...","ERROR tests/test_client.py::test_climate_command[cmd0-req0] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd1-req1] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd2-req2] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd3-req3] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd4-req4] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd5-req5] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd6-req6] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd7-req7] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd8-req8] - RuntimeError: T...","ERROR tests/test_client.py::test_climate_command[cmd9-req9] - RuntimeError: T...","ERROR tests/test_client.py::test_number_command[cmd0-req0] - RuntimeError: Th...","ERROR tests/test_client.py::test_number_command[cmd1-req1] - RuntimeError: Th...","ERROR tests/test_client.py::test_date_command[cmd0-req0] - RuntimeError: Ther...","ERROR tests/test_client.py::test_date_command[cmd1-req1] - RuntimeError: Ther...","ERROR tests/test_client.py::test_time_command[cmd0-req0] - RuntimeError: Ther...","ERROR tests/test_client.py::test_time_command[cmd1-req1] - RuntimeError: Ther...","ERROR tests/test_client.py::test_datetime_command[cmd0-req0] - RuntimeError: ...","ERROR tests/test_client.py::test_datetime_command[cmd1-req1] - RuntimeError: ...","ERROR tests/test_client.py::test_lock_command[cmd0-req0] - RuntimeError: Ther...","ERROR tests/test_client.py::test_lock_command[cmd1-req1] - RuntimeError: Ther...","ERROR tests/test_client.py::test_lock_command[cmd2-req2] - RuntimeError: Ther...","ERROR tests/test_client.py::test_lock_command[cmd3-req3] - RuntimeError: Ther...","ERROR tests/test_client.py::test_valve_command[cmd0-req0] - RuntimeError: The...","ERROR tests/test_client.py::test_valve_command[cmd1-req1] - RuntimeError: The...","ERROR tests/test_client.py::test_valve_command[cmd2-req2] - RuntimeError: The...","ERROR tests/test_client.py::test_valve_command[cmd3-req3] - RuntimeError: The...","ERROR tests/test_client.py::test_valve_command_version_1_1[cmd0-req0] - Runti...","ERROR tests/test_client.py::test_valve_command_version_1_1[cmd1-req1] - Runti...","ERROR tests/test_client.py::test_valve_command_version_1_1[cmd2-req2] - Runti...","ERROR tests/test_client.py::test_valve_command_version_1_1[cmd3-req3] - Runti...","ERROR tests/test_client.py::test_valve_command_version_1_1[cmd4-req4] - Runti...","ERROR tests/test_client.py::test_select_command[cmd0-req0] - RuntimeError: Th...","ERROR tests/test_client.py::test_select_command[cmd1-req1] - RuntimeError: Th...","ERROR tests/test_client.py::test_media_player_command[cmd0-req0] - RuntimeErr...","ERROR tests/test_client.py::test_media_player_command[cmd1-req1] - RuntimeErr...","ERROR tests/test_client.py::test_media_player_command[cmd2-req2] - RuntimeErr...","ERROR tests/test_client.py::test_media_player_command[cmd3-req3] - RuntimeErr...","ERROR tests/test_client.py::test_button_command[cmd0-req0] - RuntimeError: Th...","ERROR tests/test_client.py::test_siren_command[cmd0-req0] - RuntimeError: The...","ERROR tests/test_client.py::test_siren_command[cmd1-req1] - RuntimeError: The...","ERROR tests/test_client.py::test_siren_command[cmd2-req2] - RuntimeError: The...","ERROR tests/test_client.py::test_siren_command[cmd3-req3] - RuntimeError: The...","ERROR tests/test_client.py::test_siren_command[cmd4-req4] - RuntimeError: The...","ERROR tests/test_client.py::test_siren_command[cmd5-req5] - RuntimeError: The...","ERROR tests/test_client.py::test_siren_command[cmd6-req6] - RuntimeError: The...","ERROR tests/test_client.py::test_execute_service - RuntimeError: There is no ...","ERROR tests/test_client.py::test_request_single_image - RuntimeError: There i...","ERROR tests/test_client.py::test_request_image_stream - RuntimeError: There i...","ERROR tests/test_client.py::test_alarm_panel_command[cmd0-req0] - RuntimeErro...","ERROR tests/test_client.py::test_alarm_panel_command[cmd1-req1] - RuntimeErro...","ERROR tests/test_client.py::test_alarm_panel_command[cmd2-req2] - RuntimeErro...","ERROR tests/test_client.py::test_text_command[cmd0-req0] - RuntimeError: Ther...","ERROR tests/test_client.py::test_text_command[cmd1-req1] - RuntimeError: Ther...","ERROR tests/test_client.py::test_update_command[cmd0-req0] - RuntimeError: Th...","ERROR tests/test_client.py::test_update_command[cmd1-req1] - RuntimeError: Th...","ERROR tests/test_client.py::test_bluetooth_disconnect","ERROR tests/test_client.py::test_bluetooth_pair","ERROR tests/test_client.py::test_bluetooth_pair_connection_drops","ERROR tests/test_client.py::test_bluetooth_unpair_connection_drops","ERROR tests/test_client.py::test_bluetooth_clear_cache_connection_drops","ERROR tests/test_client.py::test_bluetooth_unpair","ERROR tests/test_client.py::test_bluetooth_clear_cache","ERROR tests/test_client.py::test_device_info","ERROR tests/test_client.py::test_bluetooth_gatt_read","ERROR tests/test_client.py::test_bluetooth_gatt_read_connection_drops","ERROR tests/test_client.py::test_bluetooth_gatt_read_error","ERROR tests/test_client.py::test_bluetooth_gatt_read_descriptor","ERROR tests/test_client.py::test_bluetooth_gatt_write","ERROR tests/test_client.py::test_bluetooth_gatt_write_connection_drops","ERROR tests/test_client.py::test_bluetooth_gatt_write_without_response","ERROR tests/test_client.py::test_bluetooth_gatt_write_descriptor","ERROR tests/test_client.py::test_bluetooth_gatt_write_descriptor_without_response","ERROR tests/test_client.py::test_bluetooth_gatt_get_services_connection_drops","ERROR tests/test_client.py::test_bluetooth_gatt_get_services","ERROR tests/test_client.py::test_bluetooth_gatt_get_services_errors","ERROR tests/test_client.py::test_bluetooth_gatt_start_notify_connection_drops","ERROR tests/test_client.py::test_bluetooth_gatt_start_notify","ERROR tests/test_client.py::test_bluetooth_gatt_start_notify_fails","ERROR tests/test_client.py::test_subscribe_bluetooth_le_advertisements","ERROR tests/test_client.py::test_subscribe_bluetooth_le_raw_advertisements","ERROR tests/test_client.py::test_subscribe_bluetooth_connections_free","ERROR tests/test_client.py::test_subscribe_home_assistant_states","ERROR tests/test_client.py::test_subscribe_logs - RuntimeError: There is no c...","ERROR tests/test_client.py::test_send_home_assistant_state - RuntimeError: Th...","ERROR tests/test_client.py::test_subscribe_service_calls - RuntimeError: Ther...","ERROR tests/test_client.py::test_set_debug","ERROR tests/test_client.py::test_force_disconnect","ERROR tests/test_client.py::test_bluetooth_device_connect[False-0-0]","ERROR tests/test_client.py::test_bluetooth_device_connect[False-4-5]","ERROR tests/test_client.py::test_bluetooth_device_connect[True-4-4]","ERROR tests/test_client.py::test_bluetooth_device_connect_and_disconnect_times_out","ERROR tests/test_client.py::test_bluetooth_device_connect_times_out_disconnect_ok","ERROR tests/test_client.py::test_bluetooth_device_connect_cancelled","ERROR tests/test_client.py::test_send_voice_assistant_event - RuntimeError: T...","ERROR tests/test_client.py::test_subscribe_voice_assistant","ERROR tests/test_client.py::test_subscribe_voice_assistant_failure","ERROR tests/test_client.py::test_subscribe_voice_assistant_cancels_long_running_handle_start","ERROR tests/test_client.py::test_subscribe_voice_assistant_api_audio","ERROR tests/test_client.py::test_send_voice_assistant_timer_event - RuntimeEr...","ERROR tests/test_client.py::test_api_version_after_connection_closed","ERROR tests/test_client.py::test_calls_after_connection_closed","ERROR tests/test_connection.py::test_connect","ERROR tests/test_connection.py::test_timeout_sending_message","ERROR tests/test_connection.py::test_disconnect_when_not_fully_connected","ERROR tests/test_connection.py::test_requires_encryption_propagates","ERROR tests/test_connection.py::test_plaintext_connection","ERROR tests/test_connection.py::test_start_connection_socket_error","ERROR tests/test_connection.py::test_start_connection_cannot_increase_recv_buffer","ERROR tests/test_connection.py::test_start_connection_can_only_increase_buffer_size_to_262144","ERROR tests/test_connection.py::test_start_connection_times_out","ERROR tests/test_connection.py::test_start_connection_os_error","ERROR tests/test_connection.py::test_start_connection_is_cancelled","ERROR tests/test_connection.py::test_finish_connection_is_cancelled","ERROR tests/test_connection.py::test_finish_connection_times_out","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map0]","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map1]","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map2]","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map3]","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map4]","ERROR tests/test_connection.py::test_connect_wrong_password","ERROR tests/test_connection.py::test_connect_correct_password","ERROR tests/test_connection.py::test_connect_wrong_version","ERROR tests/test_connection.py::test_connect_wrong_name","ERROR tests/test_connection.py::test_force_disconnect_fails","ERROR tests/test_connection.py::test_connection_lost_while_connecting[exception_map0]","ERROR tests/test_connection.py::test_connection_lost_while_connecting[exception_map1]","ERROR tests/test_connection.py::test_connection_lost_while_connecting[exception_map2]","ERROR tests/test_connection.py::test_connection_error_during_hello[exception_map0]","ERROR tests/test_connection.py::test_connection_error_during_hello[exception_map1]","ERROR tests/test_connection.py::test_connection_error_during_hello[exception_map2]","ERROR tests/test_connection.py::test_connection_cancelled_during_hello[exception_map0]","ERROR tests/test_connection.py::test_connection_cancelled_during_hello[exception_map1]","ERROR tests/test_connection.py::test_connection_cancelled_during_hello[exception_map2]","ERROR tests/test_connection.py::test_connect_resolver_times_out","ERROR tests/test_connection.py::test_disconnect_fails_to_send_response","ERROR tests/test_connection.py::test_disconnect_success_case","ERROR tests/test_connection.py::test_ping_disconnects_after_no_responses","ERROR tests/test_connection.py::test_ping_does_not_disconnect_if_we_get_responses","ERROR tests/test_connection.py::test_raise_during_send_messages_when_not_yet_connected","ERROR tests/test_connection.py::test_respond_to_ping_request","ERROR tests/test_connection.py::test_unknown_protobuf_message_type_logged","ERROR tests/test_connection.py::test_bad_protobuf_message_drops_connection","ERROR tests/test_connection.py::test_connection_cannot_be_reused","ERROR tests/test_connection.py::test_attempting_to_finish_unstarted_connection","ERROR tests/test_log_runner.py::test_log_runner","ERROR tests/test_log_runner.py::test_log_runner_reconnects_on_disconnect","ERROR tests/test_log_runner.py::test_log_runner_reconnects_on_subscribe_failure","ERROR tests/test_reconnect_logic.py::test_reconnect_logic_state - RuntimeErro...","ERROR tests/test_reconnect_logic.py::test_reconnect_retry - RuntimeError: The...","ERROR tests/test_reconnect_logic.py::test_reconnect_zeroconf[record0-True-ReconnectLogicState.READY-received mDNS record]","ERROR tests/test_reconnect_logic.py::test_reconnect_zeroconf[record1-False-ReconnectLogicState.CONNECTING-]","ERROR tests/test_reconnect_logic.py::test_reconnect_zeroconf[record2-True-ReconnectLogicState.READY-received mDNS record]","ERROR tests/test_reconnect_logic.py::test_reconnect_zeroconf_not_while_handshaking","ERROR tests/test_reconnect_logic.py::test_connect_task_not_cancelled_while_handshaking","ERROR tests/test_reconnect_logic.py::test_connect_aborts_if_stopped - Runtime...","ERROR tests/test_reconnect_logic.py::test_reconnect_logic_stop_callback - Run...","ERROR tests/test_reconnect_logic.py::test_reconnect_logic_stop_callback_waits_for_handshake","ERROR tests/test_reconnect_logic.py::test_handling_unexpected_disconnect","ERROR tests/test_reconnect_logic.py::test_backoff_on_encryption_error","======= 15 failed, 175 passed, 1 skipped, 1 warning, 205 errors in 9.95s =======","E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.14/build; python3.14 -m pytest tests","I: pybuild base:385: cd /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build; python3.13 -m pytest tests","============================= test session starts ==============================","platform linux -- Python 3.13.12, pytest-9.0.3, pluggy-1.6.0","rootdir: /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build","configfile: pyproject.toml","plugins: cov-5.0.0, asyncio-1.3.0, typeguard-4.4.4","asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function","collected 396 items","","tests/test__frame_helper.py ..........................EE..EEEEE..        [  9%]","tests/test_client.py ..E................................................ [ 22%]",".................................................EEEEEEEEEEEEEEEEEEEEEEE [ 40%]","EEEE...EEEEEEEE.EEEE.EE                                                  [ 46%]","tests/test_connection.py EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE     [ 57%]","tests/test_host_resolver.py ................                             [ 61%]","tests/test_log_runner.py EEE                                             [ 61%]","tests/test_model.py .................................................... [ 75%]","..............................................................           [ 90%]","tests/test_reconnect_logic.py ...............EE                          [ 94%]","tests/test_util.py ..............Fs                                      [ 98%]","tests/test_zeroconf.py ....                                              [100%]","","==================================== ERRORS ====================================","__________ ERROR at setup of test_init_plaintext_with_wrong_preamble ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test__frame_helper.py, line 596","  @pytest.mark.asyncio","  async def test_init_plaintext_with_wrong_preamble(","      conn: APIConnection, aiohappyeyeballs_start_connection","  ):","      loop = asyncio.get_event_loop()","      protocol = get_mock_protocol(conn)","      with patch.object(loop, \"create_connection\") as create_connection:","          create_connection.return_value = (MagicMock(), protocol)","","          conn._socket = MagicMock()","          await conn._connect_init_frame_helper()","          loop.call_soon(conn._frame_helper.ready_future.set_result, None)","          conn.connection_state = ConnectionState.CONNECTED","","      task = asyncio.create_task(conn._connect_hello_login(login=True))","      await asyncio.sleep(0)","      # The preamble should be \\x00 but we send \\x09","      mock_data_received(protocol, b\"\\x09\\x00\\x00\")","","      with pytest.raises(ProtocolAPIError):","          await task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","___________ ERROR at setup of test_init_noise_with_wrong_byte_marker ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test__frame_helper.py, line 619","  @pytest.mark.asyncio","  async def test_init_noise_with_wrong_byte_marker(noise_conn: APIConnection) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      protocol: APINoiseFrameHelper | None = None","","      async def _create_connection(create, sock, *args, **kwargs):","          nonlocal protocol","          protocol = create()","          protocol.connection_made(transport)","          return transport, protocol","","      with patch.object(loop, \"create_connection\", side_effect=_create_connection):","          task = asyncio.create_task(noise_conn._connect_init_frame_helper())","          await asyncio.sleep(0)","","          assert protocol is not None","          assert isinstance(noise_conn._frame_helper, APINoiseFrameHelper)","","          mock_data_received(protocol, b\"\\x00\\x00\\x00\")","","          with pytest.raises(ProtocolAPIError, match=\"Marker byte invalid\"):","              await task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 104","  @pytest.fixture","  def noise_conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:104","_____ ERROR at setup of test_init_noise_attempted_when_esp_uses_plaintext ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test__frame_helper.py, line 687","  @pytest.mark.asyncio","  async def test_init_noise_attempted_when_esp_uses_plaintext(","      noise_conn: APIConnection,","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      protocol: APINoiseFrameHelper | None = None","","      async def _create_connection(create, sock, *args, **kwargs):","          nonlocal protocol","          protocol = create()","          protocol.connection_made(transport)","          return transport, protocol","","      with patch.object(loop, \"create_connection\", side_effect=_create_connection):","          task = asyncio.create_task(noise_conn._connect_init_frame_helper())","          await asyncio.sleep(0)","","          assert isinstance(noise_conn._frame_helper, APINoiseFrameHelper)","          protocol = noise_conn._frame_helper","","          protocol.connection_lost(ConnectionResetError())","","          with pytest.raises(","              APIConnectionError, match=\"The connection dropped immediately\"","          ):","              await task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 104","  @pytest.fixture","  def noise_conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:104","____________ ERROR at setup of test_eof_received_closes_connection _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test__frame_helper.py, line 716","  @pytest.mark.asyncio","  async def test_eof_received_closes_connection(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      assert protocol.eof_received() is False","      assert conn.is_connected is False","      with pytest.raises(SocketClosedAPIError, match=\"EOF received\"):","          await connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_ ERROR at setup of test_connection_lost_closes_connection_and_logs[exception_map0] _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test__frame_helper.py, line 729","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_closes_connection_and_logs(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      exception, raised_exception = exception_map","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      protocol.connection_lost(exception)","      assert conn.is_connected is False","      assert \"original message\" in caplog.text","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_ ERROR at setup of test_connection_lost_closes_connection_and_logs[exception_map1] _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test__frame_helper.py, line 729","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_closes_connection_and_logs(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      exception, raised_exception = exception_map","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      protocol.connection_lost(exception)","      assert conn.is_connected is False","      assert \"original message\" in caplog.text","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_ ERROR at setup of test_connection_lost_closes_connection_and_logs[exception_map2] _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test__frame_helper.py, line 729","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_closes_connection_and_logs(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      exception, raised_exception = exception_map","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      protocol.connection_lost(exception)","      assert conn.is_connected is False","      assert \"original message\" in caplog.text","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_ ERROR at setup of test_finish_connection_wraps_exceptions_as_unhandled_api_error _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 208","  @pytest.mark.asyncio","  async def test_finish_connection_wraps_exceptions_as_unhandled_api_error(","      aiohappyeyeballs_start_connection,","  ) -> None:","      \"\"\"Verify finish_connect re-wraps exceptions as UnhandledAPIError.\"\"\"","","      cli = APIClient(\"127.0.0.1\", 1234, None)","      with patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection):","          await cli.start_connection()","","      with patch.object(","          cli._connection,","          \"send_messages_await_response_complex\",","          side_effect=Exception(\"foo\"),","      ):","          with pytest.raises(UnhandledAPIConnectionError, match=\"foo\"):","              await cli.finish_connection(False)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________________ ERROR at setup of test_bluetooth_disconnect __________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1128","  @pytest.mark.asyncio","  async def test_bluetooth_disconnect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_disconnect.\"\"\"","      client, connection, transport, protocol = api_client","      disconnect_task = asyncio.create_task(client.bluetooth_device_disconnect(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await disconnect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","____________________ ERROR at setup of test_bluetooth_pair _____________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1145","  @pytest.mark.asyncio","  async def test_bluetooth_pair(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_pair.\"\"\"","      client, connection, transport, protocol = api_client","      pair_task = asyncio.create_task(client.bluetooth_device_pair(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDevicePairingResponse(address=4567)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert not pair_task.done()","      response: message.Message = BluetoothDevicePairingResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await pair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","____________ ERROR at setup of test_bluetooth_pair_connection_drops ____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1164","  @pytest.mark.asyncio","  async def test_bluetooth_pair_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_device_pair.\"\"\"","      client, connection, transport, protocol = api_client","      pair_task = asyncio.create_task(client.bluetooth_device_pair(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothDevicePairingResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await pair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","___________ ERROR at setup of test_bluetooth_unpair_connection_drops ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1186","  @pytest.mark.asyncio","  async def test_bluetooth_unpair_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_device_unpair.\"\"\"","      client, connection, transport, protocol = api_client","      pair_task = asyncio.create_task(client.bluetooth_device_unpair(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothDeviceUnpairingResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await pair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","________ ERROR at setup of test_bluetooth_clear_cache_connection_drops _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1208","  @pytest.mark.asyncio","  async def test_bluetooth_clear_cache_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_device_clear_cache.\"\"\"","      client, connection, transport, protocol = api_client","      pair_task = asyncio.create_task(client.bluetooth_device_clear_cache(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothDeviceClearCacheResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await pair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","___________________ ERROR at setup of test_bluetooth_unpair ____________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1230","  @pytest.mark.asyncio","  async def test_bluetooth_unpair(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_unpair.\"\"\"","      client, connection, transport, protocol = api_client","      unpair_task = asyncio.create_task(client.bluetooth_device_unpair(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceUnpairingResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await unpair_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________________ ERROR at setup of test_bluetooth_clear_cache _________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1245","  @pytest.mark.asyncio","  async def test_bluetooth_clear_cache(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_clear_cache.\"\"\"","      client, connection, transport, protocol = api_client","      clear_task = asyncio.create_task(client.bluetooth_device_clear_cache(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceClearCacheResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await clear_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","______________________ ERROR at setup of test_device_info ______________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1260","  @pytest.mark.asyncio","  async def test_device_info(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test fetching device info.\"\"\"","      client, connection, transport, protocol = api_client","      assert client.log_name == \"fake @ 10.0.0.512\"","      device_info_task = asyncio.create_task(client.device_info())","      await asyncio.sleep(0)","      response: message.Message = DeviceInfoResponse(","          name=\"realname\",","          friendly_name=\"My Device\",","          has_deep_sleep=True,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      device_info = await device_info_task","      assert device_info.name == \"realname\"","      assert device_info.friendly_name == \"My Device\"","      assert device_info.has_deep_sleep","      assert client.log_name == \"realname @ 10.0.0.512\"","      disconnect_task = asyncio.create_task(client.disconnect())","      await asyncio.sleep(0)","      response: message.Message = DisconnectResponse()","      mock_data_received(protocol, generate_plaintext_packet(response))","      await disconnect_task","      with pytest.raises(APIConnectionError, match=\"Not connected\"):","          await client.device_info()","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","__________________ ERROR at setup of test_bluetooth_gatt_read __________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1291","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_read(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_read.\"\"\"","      client, connection, transport, protocol = api_client","      read_task = asyncio.create_task(client.bluetooth_gatt_read(1234, 1234))","      await asyncio.sleep(0)","","      other_response: message.Message = BluetoothGATTReadResponse(","          address=1234, handle=4567, data=b\"4567\"","      )","      mock_data_received(protocol, generate_plaintext_packet(other_response))","","      response: message.Message = BluetoothGATTReadResponse(","          address=1234, handle=1234, data=b\"1234\"","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      assert await read_task == b\"1234\"","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________ ERROR at setup of test_bluetooth_gatt_read_connection_drops __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1314","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_read_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_gatt_read.\"\"\"","      client, connection, transport, protocol = api_client","      read_task = asyncio.create_task(client.bluetooth_gatt_read(1234, 1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothGATTReadResponse, BluetoothGATTErrorResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await read_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_______________ ERROR at setup of test_bluetooth_gatt_read_error _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1336","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_read_error(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_read that errors.\"\"\"","      client, connection, transport, protocol = api_client","      read_task = asyncio.create_task(client.bluetooth_gatt_read(1234, 1234))","      await asyncio.sleep(0)","      error_response: message.Message = BluetoothGATTErrorResponse(","          address=1234, handle=1234","      )","      mock_data_received(protocol, generate_plaintext_packet(error_response))","      with pytest.raises(BluetoothGATTAPIError):","          await read_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","____________ ERROR at setup of test_bluetooth_gatt_read_descriptor _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1354","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_read_descriptor(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_read_descriptor.\"\"\"","      client, connection, transport, protocol = api_client","      read_task = asyncio.create_task(client.bluetooth_gatt_read_descriptor(1234, 1234))","      await asyncio.sleep(0)","","      other_response: message.Message = BluetoothGATTReadResponse(","          address=1234, handle=4567, data=b\"4567\"","      )","      mock_data_received(protocol, generate_plaintext_packet(other_response))","","      response: message.Message = BluetoothGATTReadResponse(","          address=1234, handle=1234, data=b\"1234\"","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      assert await read_task == b\"1234\"","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________________ ERROR at setup of test_bluetooth_gatt_write __________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1377","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_write.\"\"\"","      client, connection, transport, protocol = api_client","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write(1234, 1234, b\"1234\", True)","      )","      await asyncio.sleep(0)","","      other_response: message.Message = BluetoothGATTWriteResponse(","          address=1234, handle=4567","      )","      mock_data_received(protocol, generate_plaintext_packet(other_response))","","      response: message.Message = BluetoothGATTWriteResponse(address=1234, handle=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await write_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________ ERROR at setup of test_bluetooth_gatt_write_connection_drops _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1400","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_gatt_read.\"\"\"","      client, connection, transport, protocol = api_client","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write(1234, 1234, b\"1234\", True)","      )","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothGATTWriteResponse, BluetoothGATTErrorResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await write_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________ ERROR at setup of test_bluetooth_gatt_write_without_response _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1424","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write_without_response(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_write without response.\"\"\"","      client, connection, transport, protocol = api_client","      transport.reset_mock()","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write(1234, 1234, b\"1234\", False)","      )","      await asyncio.sleep(0)","      await write_task","      assert transport.mock_calls[0][1][0] == b'\\x00\\x0cK\\x08\\xd2\\t\\x10\\xd2\\t\"\\x041234'","","      with pytest.raises(TimeoutAPIError, match=\"BluetoothGATTWriteResponse\"):","          await client.bluetooth_gatt_write(1234, 1234, b\"1234\", True, timeout=0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","____________ ERROR at setup of test_bluetooth_gatt_write_descriptor ____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1444","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write_descriptor(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_write_descriptor.\"\"\"","      client, connection, transport, protocol = api_client","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write_descriptor(1234, 1234, b\"1234\", True)","      )","      await asyncio.sleep(0)","","      other_response: message.Message = BluetoothGATTWriteResponse(","          address=1234, handle=4567","      )","      mock_data_received(protocol, generate_plaintext_packet(other_response))","","      response: message.Message = BluetoothGATTWriteResponse(address=1234, handle=1234)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await write_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","___ ERROR at setup of test_bluetooth_gatt_write_descriptor_without_response ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1467","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_write_descriptor_without_response(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_write_descriptor without response.\"\"\"","      client, connection, transport, protocol = api_client","      transport.reset_mock()","      write_task = asyncio.create_task(","          client.bluetooth_gatt_write_descriptor(","              1234, 1234, b\"1234\", wait_for_response=False","          )","      )","      await asyncio.sleep(0)","      await write_task","      assert transport.mock_calls[0][1][0] == b\"\\x00\\x0cM\\x08\\xd2\\t\\x10\\xd2\\t\\x1a\\x041234\"","","      with pytest.raises(TimeoutAPIError, match=\"BluetoothGATTWriteResponse\"):","          await client.bluetooth_gatt_write_descriptor(1234, 1234, b\"1234\", timeout=0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_____ ERROR at setup of test_bluetooth_gatt_get_services_connection_drops ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1489","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_get_services_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_gatt_get_services.\"\"\"","      client, connection, transport, protocol = api_client","      services_task = asyncio.create_task(client.bluetooth_gatt_get_services(1234))","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothGATTGetServicesResponse, BluetoothGATTGetServicesDoneResponse, \"","          \"BluetoothGATTErrorResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await services_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","______________ ERROR at setup of test_bluetooth_gatt_get_services ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1512","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_get_services(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_get_services success case.\"\"\"","      client, connection, transport, protocol = api_client","      services_task = asyncio.create_task(client.bluetooth_gatt_get_services(1234))","      await asyncio.sleep(0)","      service1: message.Message = BluetoothGATTService(","          uuid=[1, 1],","          handle=1,","          characteristics=[","              BluetoothGATTCharacteristic(","                  uuid=[1, 2],","                  handle=2,","                  properties=1,","                  descriptors=[BluetoothGATTDescriptor(uuid=[1, 3], handle=3)],","              )","          ],","      )","      response: message.Message = BluetoothGATTGetServicesResponse(","          address=1234, services=[service1]","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      done_response: message.Message = BluetoothGATTGetServicesDoneResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(done_response))","","      services = await services_task","      service = BluetoothGATTServiceModel.from_pb(service1)","      assert services == ESPHomeBluetoothGATTServices(","          address=1234,","          services=[service],","      )","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_gatt_get_services_errors ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1549","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_get_services_errors(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_get_services with a failure.\"\"\"","      client, connection, transport, protocol = api_client","      services_task = asyncio.create_task(client.bluetooth_gatt_get_services(1234))","      await asyncio.sleep(0)","      service1: message.Message = BluetoothGATTService(","          uuid=[1, 1], handle=1, characteristics=[]","      )","      response: message.Message = BluetoothGATTGetServicesResponse(","          address=1234, services=[service1]","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      done_response: message.Message = BluetoothGATTErrorResponse(address=1234)","      mock_data_received(protocol, generate_plaintext_packet(done_response))","","      with pytest.raises(BluetoothGATTAPIError):","          await services_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_____ ERROR at setup of test_bluetooth_gatt_start_notify_connection_drops ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1573","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_start_notify_connection_drops(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test connection drop during bluetooth_gatt_start_notify.\"\"\"","      client, connection, transport, protocol = api_client","      notify_task = asyncio.create_task(","          client.bluetooth_gatt_start_notify(1234, 1, lambda handle, data: None)","      )","      await asyncio.sleep(0)","      response: message.Message = BluetoothDeviceConnectionResponse(","          address=1234, connected=False, error=13","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      message = (","          \"Peripheral 00:00:00:00:04:D2 changed connection status while waiting\"","          \" for BluetoothGATTNotifyResponse, BluetoothGATTErrorResponse: Invalid attribute length\"","      )","      with pytest.raises(BluetoothConnectionDroppedError, match=message):","          await notify_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","______________ ERROR at setup of test_bluetooth_gatt_start_notify ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1597","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_start_notify(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_start_notify.\"\"\"","      client, connection, transport, protocol = api_client","      notifies = []","","      handlers_before = len(list(itertools.chain(*connection._message_handlers.values())))","","      def on_bluetooth_gatt_notify(handle: int, data: bytearray) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","___________ ERROR at setup of test_bluetooth_gatt_start_notify_fails ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1651","  @pytest.mark.asyncio","  async def test_bluetooth_gatt_start_notify_fails(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_gatt_start_notify failure does not leak.\"\"\"","      client, connection, transport, protocol = api_client","      notifies = []","","      def on_bluetooth_gatt_notify(handle: int, data: bytearray) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________ ERROR at setup of test_subscribe_bluetooth_le_advertisements _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1682","  @pytest.mark.asyncio","  async def test_subscribe_bluetooth_le_advertisements(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_bluetooth_le_advertisements.\"\"\"","      client, connection, transport, protocol = api_client","      advs = []","","      def on_bluetooth_le_advertisements(adv: BluetoothLEAdvertisement) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_______ ERROR at setup of test_subscribe_bluetooth_le_raw_advertisements _______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1796","  @pytest.mark.asyncio","  async def test_subscribe_bluetooth_le_raw_advertisements(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_bluetooth_le_raw_advertisements.\"\"\"","      client, connection, transport, protocol = api_client","      adv_groups = []","","      def on_raw_bluetooth_le_advertisements(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________ ERROR at setup of test_subscribe_bluetooth_connections_free __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1836","  @pytest.mark.asyncio","  async def test_subscribe_bluetooth_connections_free(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_bluetooth_connections_free.\"\"\"","      client, connection, transport, protocol = api_client","      connections = []","","      def on_bluetooth_connections_free(free: int, limit: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","____________ ERROR at setup of test_subscribe_home_assistant_states ____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1858","  @pytest.mark.asyncio","  async def test_subscribe_home_assistant_states(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_home_assistant_states.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_subscribe_home_assistant_states(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_______________________ ERROR at setup of test_set_debug _______________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1915","  @pytest.mark.asyncio","  async def test_set_debug(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test set_debug.\"\"\"","      client, connection, transport, protocol = api_client","      response: message.Message = DeviceInfoResponse(","          name=\"realname\",","          friendly_name=\"My Device\",","          has_deep_sleep=True,","      )","","      caplog.set_level(logging.DEBUG)","","      client.set_debug(True)","      assert client.log_name == \"fake @ 10.0.0.512\"","      device_info_task = asyncio.create_task(client.device_info())","      await asyncio.sleep(0)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await device_info_task","","      assert \"My Device\" in caplog.text","      caplog.clear()","      client.set_debug(False)","      device_info_task = asyncio.create_task(client.device_info())","      await asyncio.sleep(0)","      mock_data_received(protocol, generate_plaintext_packet(response))","      await device_info_task","      assert \"My Device\" not in caplog.text","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","___________________ ERROR at setup of test_force_disconnect ____________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1949","  @pytest.mark.asyncio","  async def test_force_disconnect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test force disconnect can be called multiple times.\"\"\"","      client, connection, transport, protocol = api_client","      assert connection.is_connected is True","      assert connection.on_stop is not None","      await client.disconnect(force=True)","      assert client._connection is None","      assert connection.is_connected is False","      await client.disconnect(force=False)","      assert connection.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_device_connect[False-0-0] __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1966","  @pytest.mark.asyncio","  @pytest.mark.parametrize(","      (\"has_cache\", \"feature_flags\", \"method\"),","      [","          (False, BluetoothProxyFeature(0), BluetoothDeviceRequestType.CONNECT),","          (","              False,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITHOUT_CACHE,","          ),","          (","              True,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITH_CACHE,","          ),","      ],","  )","  async def test_bluetooth_device_connect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      has_cache: bool,","      feature_flags: BluetoothProxyFeature,","      method: BluetoothDeviceRequestType,","  ) -> None:","      \"\"\"Test bluetooth_device_connect.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_device_connect[False-4-5] __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1966","  @pytest.mark.asyncio","  @pytest.mark.parametrize(","      (\"has_cache\", \"feature_flags\", \"method\"),","      [","          (False, BluetoothProxyFeature(0), BluetoothDeviceRequestType.CONNECT),","          (","              False,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITHOUT_CACHE,","          ),","          (","              True,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITH_CACHE,","          ),","      ],","  )","  async def test_bluetooth_device_connect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      has_cache: bool,","      feature_flags: BluetoothProxyFeature,","      method: BluetoothDeviceRequestType,","  ) -> None:","      \"\"\"Test bluetooth_device_connect.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_device_connect[True-4-4] ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 1966","  @pytest.mark.asyncio","  @pytest.mark.parametrize(","      (\"has_cache\", \"feature_flags\", \"method\"),","      [","          (False, BluetoothProxyFeature(0), BluetoothDeviceRequestType.CONNECT),","          (","              False,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITHOUT_CACHE,","          ),","          (","              True,","              BluetoothProxyFeature.REMOTE_CACHING,","              BluetoothDeviceRequestType.CONNECT_V3_WITH_CACHE,","          ),","      ],","  )","  async def test_bluetooth_device_connect(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      has_cache: bool,","      feature_flags: BluetoothProxyFeature,","      method: BluetoothDeviceRequestType,","  ) -> None:","      \"\"\"Test bluetooth_device_connect.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","___ ERROR at setup of test_bluetooth_device_connect_and_disconnect_times_out ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2053","  @pytest.mark.asyncio","  async def test_bluetooth_device_connect_and_disconnect_times_out(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_connect and disconnect times out.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","___ ERROR at setup of test_bluetooth_device_connect_times_out_disconnect_ok ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2082","  @pytest.mark.asyncio","  async def test_bluetooth_device_connect_times_out_disconnect_ok(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_connect and disconnect times out.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","__________ ERROR at setup of test_bluetooth_device_connect_cancelled ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2124","  @pytest.mark.asyncio","  async def test_bluetooth_device_connect_cancelled(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test bluetooth_device_connect handles cancellation.\"\"\"","      client, connection, transport, protocol = api_client","      states = []","","      handlers_before = len(list(itertools.chain(*connection._message_handlers.values())))","","      def on_bluetooth_connection_state(connected: bool, mtu: int, error: int) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_______________ ERROR at setup of test_subscribe_voice_assistant _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2193","  @pytest.mark.asyncio","  async def test_subscribe_voice_assistant(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_voice_assistant.\"\"\"","      client, connection, transport, protocol = api_client","      send = patch_send(client)","      starts = []","      stops = []","","      async def handle_start(","          conversation_id: str,","          flags: int,","          audio_settings: VoiceAssistantAudioSettings,","          wake_word_phrase: str | None,","      ) -> int | None:","          starts.append((conversation_id, flags, audio_settings, wake_word_phrase))","          return 42","","      async def handle_stop() -> None:","          stops.append(True)","","      unsub = client.subscribe_voice_assistant(","          handle_start=handle_start, handle_stop=handle_stop","      )","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=True))","      send.reset_mock()","      audio_settings = VoiceAssistantAudioSettings(","          noise_suppression_level=42,","          auto_gain=42,","          volume_multiplier=42,","      )","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=True,","          flags=42,","          audio_settings=audio_settings,","          wake_word_phrase=\"okay nabu\",","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      assert starts == [","          (","              \"theone\",","              42,","              VoiceAssistantAudioSettingsModel(","                  noise_suppression_level=42,","                  auto_gain=42,","                  volume_multiplier=42,","              ),","              \"okay nabu\",","          )","      ]","      assert stops == []","      send.assert_called_once_with(VoiceAssistantResponse(port=42))","      send.reset_mock()","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=False,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert stops == [True]","      send.reset_mock()","      unsub()","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=False))","      send.reset_mock()","      await client.disconnect(force=True)","      # Ensure abort callback is a no-op after disconnect","      # and does not raise","      unsub()","      assert len(send.mock_calls) == 0","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","___________ ERROR at setup of test_subscribe_voice_assistant_failure ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2270","  @pytest.mark.asyncio","  async def test_subscribe_voice_assistant_failure(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_voice_assistant failure.\"\"\"","      client, connection, transport, protocol = api_client","      send = patch_send(client)","      starts = []","      stops = []","","      async def handle_start(","          conversation_id: str,","          flags: int,","          audio_settings: VoiceAssistantAudioSettings,","          wake_word_phrase: str | None,","      ) -> int | None:","          starts.append((conversation_id, flags, audio_settings, wake_word_phrase))","          # Return None to indicate failure","          return None","","      async def handle_stop() -> None:","          stops.append(True)","","      unsub = client.subscribe_voice_assistant(","          handle_start=handle_start, handle_stop=handle_stop","      )","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=True))","      send.reset_mock()","      audio_settings = VoiceAssistantAudioSettings(","          noise_suppression_level=42,","          auto_gain=42,","          volume_multiplier=42,","      )","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=True,","          flags=42,","          audio_settings=audio_settings,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      assert starts == [","          (","              \"theone\",","              42,","              VoiceAssistantAudioSettingsModel(","                  noise_suppression_level=42,","                  auto_gain=42,","                  volume_multiplier=42,","              ),","              None,","          )","      ]","      assert stops == []","      send.assert_called_once_with(VoiceAssistantResponse(error=True))","      send.reset_mock()","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=False,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert stops == [True]","      send.reset_mock()","      unsub()","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=False))","      send.reset_mock()","      await client.disconnect(force=True)","      # Ensure abort callback is a no-op after disconnect","      # and does not raise","      unsub()","      assert len(send.mock_calls) == 0","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_ ERROR at setup of test_subscribe_voice_assistant_cancels_long_running_handle_start _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2347","  @pytest.mark.asyncio","  async def test_subscribe_voice_assistant_cancels_long_running_handle_start(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_voice_assistant cancels long running tasks on unsub.\"\"\"","      client, connection, transport, protocol = api_client","      send = patch_send(client)","      starts = []","      stops = []","","      async def handle_start(","          conversation_id: str,","          flags: int,","          audio_settings: VoiceAssistantAudioSettings,","          wake_word_phrase: str | None,","      ) -> int | None:","          starts.append((conversation_id, flags, audio_settings, wake_word_phrase))","          await asyncio.sleep(10)","          # Return None to indicate failure","          starts.append(\"never\")","          return None","","      async def handle_stop() -> None:","          stops.append(True)","","      unsub = client.subscribe_voice_assistant(","          handle_start=handle_start, handle_stop=handle_stop","      )","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=True))","      send.reset_mock()","      audio_settings = VoiceAssistantAudioSettings(","          noise_suppression_level=42,","          auto_gain=42,","          volume_multiplier=42,","      )","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=True,","          flags=42,","          audio_settings=audio_settings,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      unsub()","      await asyncio.sleep(0)","      assert not stops","      assert starts == [","          (","              \"theone\",","              42,","              VoiceAssistantAudioSettingsModel(","                  noise_suppression_level=42,","                  auto_gain=42,","                  volume_multiplier=42,","              ),","              None,","          )","      ]","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","__________ ERROR at setup of test_subscribe_voice_assistant_api_audio __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2410","  @pytest.mark.asyncio","  async def test_subscribe_voice_assistant_api_audio(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test subscribe_voice_assistant.\"\"\"","      client, connection, transport, protocol = api_client","      send = patch_send(client)","      starts = []","      stops = []","      data_received = 0","","      async def handle_start(","          conversation_id: str,","          flags: int,","          audio_settings: VoiceAssistantAudioSettings,","          wake_word_phrase: str | None,","      ) -> int | None:","          starts.append((conversation_id, flags, audio_settings, wake_word_phrase))","          return 0","","      async def handle_stop() -> None:","          stops.append(True)","","      async def handle_audio(data: bytes) -> None:","          nonlocal data_received","          data_received += len(data)","","      unsub = client.subscribe_voice_assistant(","          handle_start=handle_start, handle_stop=handle_stop, handle_audio=handle_audio","      )","      send.assert_called_once_with(","          SubscribeVoiceAssistantRequest(subscribe=True, flags=4)","      )","      send.reset_mock()","      audio_settings = VoiceAssistantAudioSettings(","          noise_suppression_level=42,","          auto_gain=42,","          volume_multiplier=42,","      )","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=True,","          flags=42,","          audio_settings=audio_settings,","          wake_word_phrase=\"okay nabu\",","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      assert starts == [","          (","              \"theone\",","              42,","              VoiceAssistantAudioSettingsModel(","                  noise_suppression_level=42,","                  auto_gain=42,","                  volume_multiplier=42,","              ),","              \"okay nabu\",","          )","      ]","      assert stops == []","      send.assert_called_once_with(VoiceAssistantResponse(port=0))","      send.reset_mock()","","      response: message.Message = VoiceAssistantAudio(","          data=bytes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert data_received == 10","","      response: message.Message = VoiceAssistantAudio(","          end=True,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert stops == [True]","","      send.reset_mock()","      client.send_voice_assistant_audio(bytes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))","      send.assert_called_once_with(","          VoiceAssistantAudio(data=bytes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))","      )","","      response: message.Message = VoiceAssistantRequest(","          conversation_id=\"theone\",","          start=False,","      )","      mock_data_received(protocol, generate_plaintext_packet(response))","      await asyncio.sleep(0)","      assert stops == [True, True]","      send.reset_mock()","      unsub()","      send.assert_called_once_with(SubscribeVoiceAssistantRequest(subscribe=False))","      send.reset_mock()","      await client.disconnect(force=True)","      # Ensure abort callback is a no-op after disconnect","      # and does not raise","      unsub()","      assert len(send.mock_calls) == 0","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","__________ ERROR at setup of test_api_version_after_connection_closed __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2540","  @pytest.mark.asyncio","  async def test_api_version_after_connection_closed(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test api version is None after connection close.\"\"\"","      client, connection, transport, protocol = api_client","      assert client.api_version == APIVersion(1, 9)","      await client.disconnect(force=True)","      assert client.api_version is None","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_____________ ERROR at setup of test_calls_after_connection_closed _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_client.py, line 2553","  @pytest.mark.asyncio","  async def test_calls_after_connection_closed(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","  ) -> None:","      \"\"\"Test calls after connection close should raise APIConnectionError.\"\"\"","      client, connection, transport, protocol = api_client","      assert client.api_version == APIVersion(1, 9)","      await client.disconnect(force=True)","      assert client.api_version is None","      service = UserService(","          name=\"my_service\",","          key=1,","          args=[],","      )","      with pytest.raises(APIConnectionError):","          client.execute_service(service, {})","      for method in (","          client.button_command,","          client.climate_command,","          client.cover_command,","          client.fan_command,","          client.light_command,","          client.valve_command,","          client.media_player_command,","          client.siren_command,","      ):","          with pytest.raises(APIConnectionError):","              await method(1)","","      with pytest.raises(APIConnectionError):","          await client.alarm_control_panel_command(1, AlarmControlPanelCommand.ARM_HOME)","","      with pytest.raises(APIConnectionError):","          await client.date_command(1, 1, 1, 1)","","      with pytest.raises(APIConnectionError):","          await client.lock_command(1, LockCommand.LOCK)","","      with pytest.raises(APIConnectionError):","          await client.number_command(1, 1)","","      with pytest.raises(APIConnectionError):","          await client.select_command(1, \"1\")","","      with pytest.raises(APIConnectionError):","          await client.switch_command(1, True)","","      with pytest.raises(APIConnectionError):","          await client.text_command(1, \"1\")","","      with pytest.raises(APIConnectionError):","          await client.update_command(1, True)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, auth_client, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","________________________ ERROR at setup of test_connect ________________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 58","  @pytest.mark.asyncio","  async def test_connect(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ]","  ) -> None:","      \"\"\"Test that a plaintext connection works.\"\"\"","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","      mock_data_received(","          protocol,","          bytes.fromhex(","              \"003602080110091a216d6173746572617672656c61792028657\"","              \"370686f6d652076323032332e362e3329220d6d617374657261\"","              \"7672656c6179\"","          ),","      )","      mock_data_received(","          protocol,","          bytes.fromhex(","              \"005b0a120d6d6173746572617672656c61791a1130383a33413a\"","              \"46323a33453a35453a36302208323032332e362e332a154a756e\"","              \"20323820323032332c2031383a31323a3236320965737033322d\"","              \"65766250506209457370726573736966\"","          ),","      )","      await connect_task","      assert conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","________________ ERROR at setup of test_timeout_sending_message ________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 87","  @pytest.mark.asyncio","  async def test_timeout_sending_message(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","","      mock_data_received(","          protocol,","          b'\\x00@\\x02\\x08\\x01\\x10\\x07\\x1a(m5stackatomproxy (esphome v2023.1.0-dev)\"\\x10m'","          b\"5stackatomproxy\"","          b\"\\x00\\x00$\"","          b\"\\x00\\x00\\x04\"","          b'\\x00e\\n\\x12\\x10m5stackatomproxy\\x1a\\x11E8:9F:6D:0A:68:E0\"\\x0c2023.1.0-d'","          b\"ev*\\x15Jan  7 2023, 13:19:532\\x0cm5stack-atomX\\x03b\\tEspressif\",","      )","","      await connect_task","","      with pytest.raises(TimeoutAPIError):","          await conn.send_messages_await_response_complex(","              (PingRequest(),), None, None, (PingResponse,), 0","          )","","      transport.reset_mock()","      with patch(\"aioesphomeapi.connection.DISCONNECT_RESPONSE_TIMEOUT\", 0.0):","          await conn.disconnect()","","      transport.write.assert_called_with(b\"\\x00\\x00\\x05\")","","      assert \"disconnect request failed\" in caplog.text","      assert \" Timeout waiting for DisconnectResponse after 0.0s\" in caplog.text","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","__________ ERROR at setup of test_disconnect_when_not_fully_connected __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 123","  @pytest.mark.asyncio","  async def test_disconnect_when_not_fully_connected(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","","      # Only send the first part of the handshake","      # so we are stuck in the middle of the connection process","      mock_data_received(","          protocol,","          b'\\x00@\\x02\\x08\\x01\\x10\\x07\\x1a(m5stackatomproxy (esphome v2023.1.0-dev)\"\\x10m',","      )","","      await asyncio.sleep(0)","      transport.reset_mock()","","      with (","          patch(\"aioesphomeapi.connection.DISCONNECT_CONNECT_TIMEOUT\", 0.0),","          patch(\"aioesphomeapi.connection.DISCONNECT_RESPONSE_TIMEOUT\", 0.0),","      ):","          await conn.disconnect()","","      with pytest.raises(","          APIConnectionError,","          match=\"Timed out waiting to finish connect before disconnecting\",","      ):","          await connect_task","","      transport.write.assert_called_with(b\"\\x00\\x00\\x05\")","","      assert \"disconnect request failed\" in caplog.text","      assert \" Timeout waiting for DisconnectResponse after 0.0s\" in caplog.text","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","____________ ERROR at setup of test_requires_encryption_propagates _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 160","  @pytest.mark.asyncio","  async def test_requires_encryption_propagates(conn: APIConnection):","      loop = asyncio.get_event_loop()","      protocol = get_mock_protocol(conn)","      with patch.object(loop, \"create_connection\") as create_connection:","          create_connection.return_value = (MagicMock(), protocol)","","          conn._socket = MagicMock()","          await conn._connect_init_frame_helper()","          loop.call_soon(conn._frame_helper.ready_future.set_result, None)","          conn.connection_state = ConnectionState.CONNECTED","","          with pytest.raises(RequiresEncryptionAPIError):","              task = asyncio.create_task(conn._connect_hello_login(login=True))","              await asyncio.sleep(0)","              mock_data_received(protocol, b\"\\x01\\x00\\x00\")","              await task","","      await asyncio.sleep(0)","      await asyncio.sleep(0)","      assert isinstance(conn._fatal_exception, RequiresEncryptionAPIError)","      conn.force_disconnect()","      assert isinstance(conn._fatal_exception, RequiresEncryptionAPIError)","      conn.report_fatal_error(Exception(\"test\"))","      assert isinstance(conn._fatal_exception, RequiresEncryptionAPIError)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_________________ ERROR at setup of test_plaintext_connection __________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 187","  @pytest.mark.asyncio","  async def test_plaintext_connection(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test that a plaintext connection works.\"\"\"","      messages = []","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","","      def on_msg(msg):","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_____________ ERROR at setup of test_start_connection_socket_error _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 228","  @pytest.mark.asyncio","  async def test_start_connection_socket_error(","      conn: APIConnection, resolve_host, aiohappyeyeballs_start_connection","  ):","      \"\"\"Test handling of socket error during start connection.\"\"\"","      loop = asyncio.get_event_loop()","","      with patch.object(loop, \"create_connection\", side_effect=OSError(\"Socket error\")):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","          with pytest.raises(APIConnectionError, match=\"Socket error\"):","              await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_____ ERROR at setup of test_start_connection_cannot_increase_recv_buffer ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 245","  @pytest.mark.asyncio","  async def test_start_connection_cannot_increase_recv_buffer(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection: MagicMock,","      caplog: pytest.LogCaptureFixture,","  ):","      \"\"\"Test failing to increase the recv buffer.\"\"\"","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      tried_sizes = []","","      def _setsockopt(*args, **kwargs):","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_ ERROR at setup of test_start_connection_can_only_increase_buffer_size_to_262144 _","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 293","  @pytest.mark.asyncio","  async def test_start_connection_can_only_increase_buffer_size_to_262144(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection: MagicMock,","      caplog: pytest.LogCaptureFixture,","  ):","      \"\"\"Test the receive buffer can only be increased to 262144.\"\"\"","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      tried_sizes = []","","      def _setsockopt(*args, **kwargs):","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","______________ ERROR at setup of test_start_connection_times_out _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 342","  @pytest.mark.asyncio","  async def test_start_connection_times_out(","      conn: APIConnection, resolve_host, aiohappyeyeballs_start_connection","  ):","      \"\"\"Test handling of start connection timing out.\"\"\"","      asyncio.get_event_loop()","","      async def _mock_socket_connect(*args, **kwargs):","          await asyncio.sleep(500)","","      with (","          patch(","              \"aioesphomeapi.connection.aiohappyeyeballs.start_connection\",","              side_effect=_mock_socket_connect,","          ),","          patch(\"aioesphomeapi.connection.TCP_CONNECT_TIMEOUT\", 0.0),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","","          async_fire_time_changed(utcnow() + timedelta(seconds=200))","          await asyncio.sleep(0)","","      with pytest.raises(APIConnectionError, match=\"Timeout while connecting\"):","          await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_______________ ERROR at setup of test_start_connection_os_error _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 372","  @pytest.mark.asyncio","  async def test_start_connection_os_error(conn: APIConnection, resolve_host):","      \"\"\"Test handling of start connection has an OSError.\"\"\"","      asyncio.get_event_loop()","","      with patch(","          \"aioesphomeapi.connection.aiohappyeyeballs.start_connection\",","          side_effect=OSError(\"Socket error\"),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","          with pytest.raises(APIConnectionError, match=\"Socket error\"):","              await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_____________ ERROR at setup of test_start_connection_is_cancelled _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 390","  @pytest.mark.asyncio","  async def test_start_connection_is_cancelled(conn: APIConnection, resolve_host):","      \"\"\"Test handling of start connection is cancelled.\"\"\"","      asyncio.get_event_loop()","","      with patch(","          \"aioesphomeapi.connection.aiohappyeyeballs.start_connection\",","          side_effect=asyncio.CancelledError,","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","          with pytest.raises(APIConnectionError, match=\"Starting connection cancelled\"):","              await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","____________ ERROR at setup of test_finish_connection_is_cancelled _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 408","  @pytest.mark.asyncio","  async def test_finish_connection_is_cancelled(","      conn: APIConnection, resolve_host, aiohappyeyeballs_start_connection","  ):","      \"\"\"Test handling of finishing connection being cancelled.\"\"\"","      loop = asyncio.get_event_loop()","","      with patch.object(loop, \"create_connection\", side_effect=asyncio.CancelledError):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await asyncio.sleep(0)","          with pytest.raises(APIConnectionError, match=\"Finishing connection cancelled\"):","              await connect_task","","      async_fire_time_changed(utcnow() + timedelta(seconds=600))","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","______________ ERROR at setup of test_finish_connection_times_out ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 425","  @pytest.mark.asyncio","  async def test_finish_connection_times_out(","      plaintext_connect_task_no_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test handling of finish connection timing out.\"\"\"","      conn, transport, protocol, connect_task = plaintext_connect_task_no_login","      messages = []","","      def on_msg(msg):","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 145","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_no_login\")","  async def plaintext_connect_task_no_login(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","          yield conn, transport, conn._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map0] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map1] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map2] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map3] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_ ERROR at setup of test_plaintext_connection_fails_handshake[exception_map4] __","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 463","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"Socket error\"), HandshakeAPIError),","          (APIConnectionError, APIConnectionError),","          (SocketClosedAPIError, SocketClosedAPIError),","          (asyncio.TimeoutError, TimeoutAPIError),","          (asyncio.CancelledError, APIConnectionError),","      ],","  )","  @pytest.mark.asyncio","  async def test_plaintext_connection_fails_handshake(","      conn: APIConnection,","      resolve_host: AsyncMock,","      aiohappyeyeballs_start_connection: MagicMock,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      \"\"\"Test that the frame helper is closed before the underlying socket.","","      If we don't do this, asyncio will get confused and not release the socket.","      \"\"\"","      loop = asyncio.get_event_loop()","      exception, raised_exception = exception_map","      messages = []","      transport = MagicMock()","      connected = asyncio.Event()","","      class APIPlaintextFrameHelperHandshakeException(APIPlaintextFrameHelper):","          \"\"\"Plaintext frame helper that raises exception on handshake.\"\"\"","","      def _create_failing_mock_transport_protocol(","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","________________ ERROR at setup of test_connect_wrong_password _________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 557","  @pytest.mark.asyncio","  async def test_connect_wrong_password(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, True)","","      with pytest.raises(InvalidAuthAPIError):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_______________ ERROR at setup of test_connect_correct_password ________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 574","  @pytest.mark.asyncio","  async def test_connect_correct_password(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","","      assert conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_________________ ERROR at setup of test_connect_wrong_version _________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 590","  @pytest.mark.asyncio","  async def test_connect_wrong_version(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol, 3, 2)","      send_plaintext_connect_response(protocol, False)","","      with pytest.raises(APIConnectionError, match=\"Incompatible API version\"):","          await connect_task","","      assert conn.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","__________________ ERROR at setup of test_connect_wrong_name ___________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 607","  @pytest.mark.asyncio","  async def test_connect_wrong_name(","      plaintext_connect_task_expected_name: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_expected_name","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      with pytest.raises(","          APIConnectionError,","          match=\"Expected 'test' but server sent a different name: 'fake'\",","      ):","          await connect_task","","      assert conn.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 165","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_expected_name\")","  async def plaintext_connect_task_no_login_with_expected_name(","      conn_with_expected_name: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      event_loop = asyncio.get_running_loop()","      transport = MagicMock()","      connected = asyncio.Event()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(","              connect(conn_with_expected_name, login=False)","          )","          await connected.wait()","          yield conn_with_expected_name, transport, conn_with_expected_name._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 114","  @pytest.fixture","  def conn_with_expected_name(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:114","________________ ERROR at setup of test_force_disconnect_fails _________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 626","  @pytest.mark.asyncio","  async def test_force_disconnect_fails(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      assert conn.is_connected","","      with patch.object(protocol, \"_writer\", side_effect=OSError):","          conn.force_disconnect()","      assert \"Failed to send (forced) disconnect request\" in caplog.text","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","___ ERROR at setup of test_connection_lost_while_connecting[exception_map0] ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 647","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_while_connecting(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      exception, raised_exception = exception_map","      protocol.connection_lost(exception)","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","___ ERROR at setup of test_connection_lost_while_connecting[exception_map1] ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 647","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_while_connecting(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      exception, raised_exception = exception_map","      protocol.connection_lost(exception)","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","___ ERROR at setup of test_connection_lost_while_connecting[exception_map2] ____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 647","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), ReadFailedAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_lost_while_connecting(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","      exception_map: tuple[Exception, Exception],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      exception, raised_exception = exception_map","      protocol.connection_lost(exception)","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_____ ERROR at setup of test_connection_error_during_hello[exception_map0] _____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 673","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), SocketAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_error_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", side_effect=exception),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_____ ERROR at setup of test_connection_error_during_hello[exception_map1] _____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 673","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), SocketAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_error_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", side_effect=exception),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","_____ ERROR at setup of test_connection_error_during_hello[exception_map2] _____","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 673","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), SocketAPIError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_error_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", side_effect=exception),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","___ ERROR at setup of test_connection_cancelled_during_hello[exception_map0] ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 710","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), APIConnectionCancelledError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_cancelled_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      async def _mock_frame_helper_error(*args, **kwargs):","          conn._frame_helper.connection_lost(exception)","          raise asyncio.CancelledError","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", _mock_frame_helper_error),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","___ ERROR at setup of test_connection_cancelled_during_hello[exception_map1] ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 710","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), APIConnectionCancelledError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_cancelled_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      async def _mock_frame_helper_error(*args, **kwargs):","          conn._frame_helper.connection_lost(exception)","          raise asyncio.CancelledError","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", _mock_frame_helper_error),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","___ ERROR at setup of test_connection_cancelled_during_hello[exception_map2] ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 710","  @pytest.mark.parametrize(","      (\"exception_map\"),","      [","          (OSError(\"original message\"), APIConnectionCancelledError),","          (APIConnectionError(\"original message\"), APIConnectionError),","          (SocketClosedAPIError(\"original message\"), SocketClosedAPIError),","      ],","  )","  @pytest.mark.asyncio","  async def test_connection_cancelled_during_hello(","      conn: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","      exception_map: tuple[Exception, Exception],","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      exception, raised_exception = exception_map","","      async def _mock_frame_helper_error(*args, **kwargs):","          conn._frame_helper.connection_lost(exception)","          raise asyncio.CancelledError","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch.object(conn, \"_connect_hello_login\", _mock_frame_helper_error),","      ):","          connect_task = asyncio.create_task(connect(conn, login=False))","          await connected.wait()","","      with pytest.raises(raised_exception, match=\"original message\"):","          await connect_task","","      assert not conn.is_connected","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","______________ ERROR at setup of test_connect_resolver_times_out _______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 751","  @pytest.mark.asyncio","  async def test_connect_resolver_times_out(","      conn: APIConnection, aiohappyeyeballs_start_connection","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with (","          patch(","              \"aioesphomeapi.host_resolver.async_resolve_host\",","              side_effect=asyncio.TimeoutError,","          ),","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          pytest.raises(","              ResolveAPIError,","              match=\"Timeout while resolving IP address for fake.address\",","          ),","      ):","          await connect(conn, login=False)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","___________ ERROR at setup of test_disconnect_fails_to_send_response ___________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 777","  @pytest.mark.asyncio","  async def test_disconnect_fails_to_send_response(","      connection_params: ConnectionParams,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> None:","      loop = asyncio.get_event_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","      expected_disconnect = None","","      async def _on_stop(_expected_disconnect: bool) -> None:","          nonlocal expected_disconnect","          expected_disconnect = _expected_disconnect","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(","              connect_client(client, login=False, on_stop=_on_stop)","          )","          await connected.wait()","          protocol = client._connection._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      assert client._connection.is_connected","","      with patch.object(protocol, \"_writer\", side_effect=OSError):","          disconnect_request = DisconnectRequest()","          mock_data_received(protocol, generate_plaintext_packet(disconnect_request))","","      # Wait one loop iteration for the disconnect to be processed","      await asyncio.sleep(0)","      assert expected_disconnect is True","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 80","  @pytest.fixture","  def connection_params(event_loop: asyncio.AbstractEventLoop) -> ConnectionParams:","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:80","________________ ERROR at setup of test_disconnect_success_case ________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 826","  @pytest.mark.asyncio","  async def test_disconnect_success_case(","      connection_params: ConnectionParams,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> None:","      loop = asyncio.get_running_loop()","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","      expected_disconnect = None","","      async def _on_stop(_expected_disconnect: bool) -> None:","          nonlocal expected_disconnect","          expected_disconnect = _expected_disconnect","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(","              connect_client(client, login=False, on_stop=_on_stop)","          )","          await connected.wait()","          protocol = client._connection._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      assert client._connection.is_connected","","      disconnect_request = DisconnectRequest()","      mock_data_received(protocol, generate_plaintext_packet(disconnect_request))","","      # Wait one loop iteration for the disconnect to be processed","      await asyncio.sleep(0)","      assert expected_disconnect is True","      assert not client._connection","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 80","  @pytest.fixture","  def connection_params(event_loop: asyncio.AbstractEventLoop) -> ConnectionParams:","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:80","__________ ERROR at setup of test_ping_disconnects_after_no_responses __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 875","  @pytest.mark.asyncio","  async def test_ping_disconnects_after_no_responses(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","","      ping_request_bytes = b\"\\x00\\x00\\x07\"","","      assert conn.is_connected","      transport.reset_mock()","      expected_calls = []","      start_time = utcnow()","      max_pings_to_disconnect_after = int(KEEP_ALIVE_TIMEOUT_RATIO)","      for count in range(1, max_pings_to_disconnect_after + 1):","          async_fire_time_changed(","              start_time + timedelta(seconds=KEEP_ALIVE_INTERVAL * count)","          )","          assert transport.write.call_count == count","          expected_calls.append(call(ping_request_bytes))","          assert transport.write.mock_calls == expected_calls","","      assert conn.is_connected is True","","      # We should disconnect once we reach more than 4 missed pings","      async_fire_time_changed(","          start_time","          + timedelta(seconds=KEEP_ALIVE_INTERVAL * (max_pings_to_disconnect_after + 1))","      )","      assert transport.write.call_count == max_pings_to_disconnect_after + 1","","      assert conn.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_____ ERROR at setup of test_ping_does_not_disconnect_if_we_get_responses ______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 915","  @pytest.mark.asyncio","  async def test_ping_does_not_disconnect_if_we_get_responses(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      ping_request_bytes = b\"\\x00\\x00\\x07\"","","      assert conn.is_connected","      transport.reset_mock()","      start_time = utcnow()","      max_pings_to_disconnect_after = int(KEEP_ALIVE_TIMEOUT_RATIO)","      for count in range(1, max_pings_to_disconnect_after + 2):","          async_fire_time_changed(","              start_time + timedelta(seconds=KEEP_ALIVE_INTERVAL * count)","          )","          send_ping_response(protocol)","","      # We should only send 1 ping request if we are getting responses","      assert transport.write.call_count == 1","      assert transport.write.mock_calls == [call(ping_request_bytes)]","","      # We should disconnect if we are getting ping responses","      assert conn.is_connected is True","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","___ ERROR at setup of test_raise_during_send_messages_when_not_yet_connected ___","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 947","  def test_raise_during_send_messages_when_not_yet_connected(conn: APIConnection) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","________________ ERROR at setup of test_respond_to_ping_request ________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 953","  @pytest.mark.asyncio","  async def test_respond_to_ping_request(","      caplog: pytest.LogCaptureFixture,","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","","      await connect_task","      assert conn.is_connected","","      transport.reset_mock()","      send_ping_request(protocol)","      # We should respond to ping requests","      ping_response_bytes = b\"\\x00\\x00\\x08\"","      assert transport.write.call_count == 1","      assert transport.write.mock_calls == [call(ping_response_bytes)]","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_________ ERROR at setup of test_unknown_protobuf_message_type_logged __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 976","  @pytest.mark.asyncio","  async def test_unknown_protobuf_message_type_logged(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test unknown protobuf messages are logged but do not cause the connection to collapse.\"\"\"","      client, connection, transport, protocol = api_client","      response: message.Message = DeviceInfoResponse(","          name=\"realname\",","          friendly_name=\"My Device\",","          has_deep_sleep=True,","      )","      caplog.set_level(logging.DEBUG)","      client.set_debug(True)","      bytes_ = response.SerializeToString()","      message_with_invalid_protobuf_number = (","          b\"\\0\"","          + _cached_varuint_to_bytes(len(bytes_))","          + _cached_varuint_to_bytes(16385)","          + bytes_","      )","","      mock_data_received(protocol, message_with_invalid_protobuf_number)","","      assert \"Skipping unknown message type 16385\" in caplog.text","      assert connection.is_connected","      connection.force_disconnect()","      await asyncio.sleep(0)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","_________ ERROR at setup of test_bad_protobuf_message_drops_connection _________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 1008","  @pytest.mark.asyncio","  async def test_bad_protobuf_message_drops_connection(","      api_client: tuple[","          APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper","      ],","      caplog: pytest.LogCaptureFixture,","  ) -> None:","      \"\"\"Test ad bad protobuf messages is logged and causes the connection to collapse.\"\"\"","      client, connection, transport, protocol = api_client","      msg: message.Message = TextSensorStateResponse(","          key=1, state=\"invalid\", missing_state=False","      )","      caplog.clear()","      caplog.set_level(logging.DEBUG)","      client.set_debug(True)","      bytes_ = msg.SerializeToString()","      # Replace the bytes with invalid UTF-8","      bytes_ = bytes.replace(bytes_, b\"invalid\", b\"inval\\xe9 \")","","      message_with_bad_protobuf_data = (","          b\"\\0\"","          + _cached_varuint_to_bytes(len(bytes_))","          + _cached_varuint_to_bytes(27)","          + bytes_","      )","      mock_data_received(protocol, message_with_bad_protobuf_data)","      assert \"Invalid protobuf message: type=TextSensorStateResponse\" in caplog.text","      assert connection.is_connected is False","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 207","  @pytest_asyncio.fixture(name=\"api_client\")","  async def api_client(","      resolve_host, aiohappyeyeballs_start_connection","  ) -> tuple[APIClient, APIConnection, asyncio.Transport, APIPlaintextFrameHelper]:","      event_loop = asyncio.get_running_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","      client = APIClient(","          address=\"mydevice.local\",","          port=6052,","          password=None,","      )","","      with (","          patch.object(","              event_loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ),","          patch(\"aioesphomeapi.client.APIConnection\", PatchableAPIConnection),","      ):","          connect_task = asyncio.create_task(connect_client(client, login=False))","          await connected.wait()","          conn = client._connection","          protocol = conn._frame_helper","          send_plaintext_hello(protocol)","          await connect_task","          transport.reset_mock()","          yield client, conn, transport, protocol","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","______________ ERROR at setup of test_connection_cannot_be_reused ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 1038","  @pytest.mark.asyncio","  async def test_connection_cannot_be_reused(","      plaintext_connect_task_with_login: tuple[","          APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task","      ],","  ) -> None:","      \"\"\"Test that we raise when trying to connect when already connected.\"\"\"","      conn, transport, protocol, connect_task = plaintext_connect_task_with_login","      send_plaintext_hello(protocol)","      send_plaintext_connect_response(protocol, False)","      await connect_task","      with pytest.raises(RuntimeError):","          await conn.start_connection()","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 187","  @pytest_asyncio.fixture(name=\"plaintext_connect_task_with_login\")","  async def plaintext_connect_task_with_login(","      conn_with_password: APIConnection,","      resolve_host,","      aiohappyeyeballs_start_connection,","  ) -> tuple[APIConnection, asyncio.Transport, APIPlaintextFrameHelper, asyncio.Task]:","      transport = MagicMock()","      connected = asyncio.Event()","      event_loop = asyncio.get_running_loop()","","      with patch.object(","          event_loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          connect_task = asyncio.create_task(connect(conn_with_password, login=True))","          await connected.wait()","          yield conn_with_password, transport, conn_with_password._frame_helper, connect_task","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 96","  @pytest.fixture","  def conn_with_password(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:96","_______ ERROR at setup of test_attempting_to_finish_unstarted_connection _______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_connection.py, line 1053","  @pytest.mark.asyncio","  async def test_attempting_to_finish_unstarted_connection(","      conn: APIConnection,","  ) -> None:","      \"\"\"Test that we raise when trying to finish an unstarted connection.\"\"\"","      with pytest.raises(RuntimeError):","          await conn.finish_connection(login=False)","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","______________________ ERROR at setup of test_log_runner _______________________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_log_runner.py, line 32","  @pytest.mark.asyncio","  async def test_log_runner(","      conn: APIConnection,","      aiohappyeyeballs_start_connection,","  ):","      \"\"\"Test the log runner logic.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=Estr(\"127.0.0.1\"),","          port=6052,","          password=None,","          noise_psk=None,","          expected_name=Estr(\"fake\"),","          zeroconf_instance=async_zeroconf.zeroconf,","      )","      messages = []","","      def on_log(msg: SubscribeLogsResponse) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","__________ ERROR at setup of test_log_runner_reconnects_on_disconnect __________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_log_runner.py, line 100","  @pytest.mark.asyncio","  async def test_log_runner_reconnects_on_disconnect(","      conn: APIConnection,","      caplog: pytest.LogCaptureFixture,","      aiohappyeyeballs_start_connection,","  ) -> None:","      \"\"\"Test the log runner reconnects on disconnect.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=Estr(\"127.0.0.1\"),","          port=6052,","          password=None,","          noise_psk=None,","          expected_name=Estr(\"fake\"),","          zeroconf_instance=async_zeroconf.zeroconf,","      )","      messages = []","","      def on_log(msg: SubscribeLogsResponse) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","______ ERROR at setup of test_log_runner_reconnects_on_subscribe_failure _______","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_log_runner.py, line 180","  @pytest.mark.asyncio","  async def test_log_runner_reconnects_on_subscribe_failure(","      conn: APIConnection,","      caplog: pytest.LogCaptureFixture,","      aiohappyeyeballs_start_connection,","  ) -> None:","      \"\"\"Test the log runner reconnects on subscribe failure.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=Estr(\"127.0.0.1\"),","          port=6052,","          password=None,","          noise_psk=None,","          expected_name=Estr(\"fake\"),","          zeroconf_instance=async_zeroconf.zeroconf,","      )","      messages = []","","      def on_log(msg: SubscribeLogsResponse) -> None:","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 89","  @pytest.fixture","  def conn(","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:89","____________ ERROR at setup of test_handling_unexpected_disconnect _____________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_reconnect_logic.py, line 690","  @pytest.mark.asyncio","  async def test_handling_unexpected_disconnect(aiohappyeyeballs_start_connection):","      \"\"\"Test the disconnect callback fires with expected_disconnect=False.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=\"127.0.0.1\",","          port=6052,","          password=None,","          noise_psk=None,","          expected_name=\"fake\",","          zeroconf_instance=async_zeroconf.zeroconf,","      )","","      connected = asyncio.Event()","      on_disconnect_calls = []","","      async def on_disconnect(expected_disconnect: bool) -> None:","          on_disconnect_calls.append(expected_disconnect)","","      async def on_connect() -> None:","          connected.set()","","      logic = ReconnectLogic(","          client=cli,","          on_connect=on_connect,","          on_disconnect=on_disconnect,","          zeroconf_instance=async_zeroconf,","          name=\"fake\",","      )","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          await logic.start()","          await connected.wait()","          protocol = cli._connection._frame_helper","          send_plaintext_hello(protocol)","          send_plaintext_connect_response(protocol, False)","          await asyncio.sleep(0)","          await asyncio.sleep(0)","","      assert cli._connection.is_connected is True","      await asyncio.sleep(0)","","      with (","          patch.object(","              loop,","              \"create_connection\",","              side_effect=partial(_create_mock_transport_protocol, transport, connected),","          ) as mock_create_connection,","          patch.object(cli, \"start_connection\"),","          patch.object(cli, \"finish_connection\"),","      ):","          protocol.eof_received()","          # Wait for the task to run","          await asyncio.sleep(0)","          # Ensure we try to reconnect immediately","          # since its an unexpected disconnect","          assert mock_create_connection.call_count == 0","","      assert len(on_disconnect_calls) == 1","      expected_disconnect = on_disconnect_calls[-1]","      assert expected_disconnect is False","      await logic.stop()","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","______________ ERROR at setup of test_backoff_on_encryption_error ______________","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/test_reconnect_logic.py, line 767","  @pytest.mark.asyncio","  async def test_backoff_on_encryption_error(","      caplog: pytest.LogCaptureFixture,","      aiohappyeyeballs_start_connection,","  ) -> None:","      \"\"\"Test we backoff on encryption error.\"\"\"","      loop = asyncio.get_event_loop()","      protocol: APIPlaintextFrameHelper | None = None","      transport = MagicMock()","      connected = asyncio.Event()","","      class PatchableAPIClient(APIClient):","          pass","","      async_zeroconf = get_mock_async_zeroconf()","","      cli = PatchableAPIClient(","          address=\"127.0.0.1\",","          port=6052,","          password=None,","          noise_psk=\"\",","          expected_name=\"fake\",","          zeroconf_instance=async_zeroconf.zeroconf,","      )","","      connected = asyncio.Event()","      on_disconnect_calls = []","","      async def on_disconnect(expected_disconnect: bool) -> None:","          on_disconnect_calls.append(expected_disconnect)","","      async def on_connect() -> None:","          connected.set()","","      logic = ReconnectLogic(","          client=cli,","          on_connect=on_connect,","          on_disconnect=on_disconnect,","          zeroconf_instance=async_zeroconf,","          name=\"fake\",","      )","","      with patch.object(","          loop,","          \"create_connection\",","          side_effect=partial(_create_mock_transport_protocol, transport, connected),","      ):","          await logic.start()","          await connected.wait()","          protocol = cli._connection._frame_helper","          mock_data_received(protocol, b\"\\x01\\x00\\x00\")","","      assert cli._connection.is_connected is False","      await asyncio.sleep(0)","      await asyncio.sleep(0)","","      assert len(on_disconnect_calls) == 0","","      assert \"Scheduling new connect attempt in 60.00 seconds\" in caplog.text","      assert \"Connection requires encryption (RequiresEncryptionAPIError)\" in caplog.text","      now = loop.time()","      assert logic._connect_timer.when() - now == pytest.approx(60, 1)","      assert logic._tries == MAXIMUM_BACKOFF_TRIES","      await logic.stop()","file /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py, line 122","  @pytest.fixture()","  def aiohappyeyeballs_start_connection(event_loop: asyncio.AbstractEventLoop):","E       fixture 'event_loop' not found",">       available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_scoped_runner, aiohappyeyeballs_start_connection, api_client, async_zeroconf, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, conn, conn_with_expected_name, conn_with_password, connection_params, cov, doctest_namespace, event_loop_policy, monkeypatch, no_cover, noise_conn, patchable_api_client, plaintext_connect_task_expected_name, plaintext_connect_task_no_login, plaintext_connect_task_with_login, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, resolve_host, subtests, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory",">       use 'pytest --fixtures [testpath]' for help on them.","","/build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build/tests/conftest.py:122","=================================== FAILURES ===================================","__________________________ test_create_eager_task_312 __________________________","async def functions are not natively supported.","You need to install a suitable plugin for your async framework, for example:","  - anyio","  - pytest-asyncio","  - pytest-tornasync","  - pytest-trio","  - pytest-twisted","=============================== warnings summary ===============================","../../../../../../usr/lib/python3/dist-packages/google/protobuf/internal/well_known_types.py:91","  /usr/lib/python3/dist-packages/google/protobuf/internal/well_known_types.py:91: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).","    _EPOCH_DATETIME_NAIVE = datetime.datetime.utcfromtimestamp(0)","","tests/test__frame_helper.py: 11 warnings","  /usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:10: FutureWarning: functools.partial will be a method descriptor in future Python versions; wrap it in staticmethod() if you want to preserve the old behavior","    return self.cipher.encrypt(nonce=self.format_nonce(n), data=plaintext, associated_data=ad)","","tests/test__frame_helper.py::test_noise_frame_helper_handshake_failure","tests/test__frame_helper.py::test_noise_frame_helper_handshake_success_with_single_packet","tests/test__frame_helper.py::test_noise_frame_helper_bad_encryption","  /usr/lib/python3/dist-packages/noiseprotocol/backends/default/ciphers.py:13: FutureWarning: functools.partial will be a method descriptor in future Python versions; wrap it in staticmethod() if you want to preserve the old behavior","    return self.cipher.decrypt(nonce=self.format_nonce(n), data=ciphertext, associated_data=ad)","","-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html","=========================== short test summary info ============================","FAILED tests/test_util.py::test_create_eager_task_312 - Failed: async def fun...","ERROR tests/test__frame_helper.py::test_init_plaintext_with_wrong_preamble","ERROR tests/test__frame_helper.py::test_init_noise_with_wrong_byte_marker","ERROR tests/test__frame_helper.py::test_init_noise_attempted_when_esp_uses_plaintext","ERROR tests/test__frame_helper.py::test_eof_received_closes_connection","ERROR tests/test__frame_helper.py::test_connection_lost_closes_connection_and_logs[exception_map0]","ERROR tests/test__frame_helper.py::test_connection_lost_closes_connection_and_logs[exception_map1]","ERROR tests/test__frame_helper.py::test_connection_lost_closes_connection_and_logs[exception_map2]","ERROR tests/test_client.py::test_finish_connection_wraps_exceptions_as_unhandled_api_error","ERROR tests/test_client.py::test_bluetooth_disconnect","ERROR tests/test_client.py::test_bluetooth_pair","ERROR tests/test_client.py::test_bluetooth_pair_connection_drops","ERROR tests/test_client.py::test_bluetooth_unpair_connection_drops","ERROR tests/test_client.py::test_bluetooth_clear_cache_connection_drops","ERROR tests/test_client.py::test_bluetooth_unpair","ERROR tests/test_client.py::test_bluetooth_clear_cache","ERROR tests/test_client.py::test_device_info","ERROR tests/test_client.py::test_bluetooth_gatt_read","ERROR tests/test_client.py::test_bluetooth_gatt_read_connection_drops","ERROR tests/test_client.py::test_bluetooth_gatt_read_error","ERROR tests/test_client.py::test_bluetooth_gatt_read_descriptor","ERROR tests/test_client.py::test_bluetooth_gatt_write","ERROR tests/test_client.py::test_bluetooth_gatt_write_connection_drops","ERROR tests/test_client.py::test_bluetooth_gatt_write_without_response","ERROR tests/test_client.py::test_bluetooth_gatt_write_descriptor","ERROR tests/test_client.py::test_bluetooth_gatt_write_descriptor_without_response","ERROR tests/test_client.py::test_bluetooth_gatt_get_services_connection_drops","ERROR tests/test_client.py::test_bluetooth_gatt_get_services","ERROR tests/test_client.py::test_bluetooth_gatt_get_services_errors","ERROR tests/test_client.py::test_bluetooth_gatt_start_notify_connection_drops","ERROR tests/test_client.py::test_bluetooth_gatt_start_notify","ERROR tests/test_client.py::test_bluetooth_gatt_start_notify_fails","ERROR tests/test_client.py::test_subscribe_bluetooth_le_advertisements","ERROR tests/test_client.py::test_subscribe_bluetooth_le_raw_advertisements","ERROR tests/test_client.py::test_subscribe_bluetooth_connections_free","ERROR tests/test_client.py::test_subscribe_home_assistant_states","ERROR tests/test_client.py::test_set_debug","ERROR tests/test_client.py::test_force_disconnect","ERROR tests/test_client.py::test_bluetooth_device_connect[False-0-0]","ERROR tests/test_client.py::test_bluetooth_device_connect[False-4-5]","ERROR tests/test_client.py::test_bluetooth_device_connect[True-4-4]","ERROR tests/test_client.py::test_bluetooth_device_connect_and_disconnect_times_out","ERROR tests/test_client.py::test_bluetooth_device_connect_times_out_disconnect_ok","ERROR tests/test_client.py::test_bluetooth_device_connect_cancelled","ERROR tests/test_client.py::test_subscribe_voice_assistant","ERROR tests/test_client.py::test_subscribe_voice_assistant_failure","ERROR tests/test_client.py::test_subscribe_voice_assistant_cancels_long_running_handle_start","ERROR tests/test_client.py::test_subscribe_voice_assistant_api_audio","ERROR tests/test_client.py::test_api_version_after_connection_closed","ERROR tests/test_client.py::test_calls_after_connection_closed","ERROR tests/test_connection.py::test_connect","ERROR tests/test_connection.py::test_timeout_sending_message","ERROR tests/test_connection.py::test_disconnect_when_not_fully_connected","ERROR tests/test_connection.py::test_requires_encryption_propagates","ERROR tests/test_connection.py::test_plaintext_connection","ERROR tests/test_connection.py::test_start_connection_socket_error","ERROR tests/test_connection.py::test_start_connection_cannot_increase_recv_buffer","ERROR tests/test_connection.py::test_start_connection_can_only_increase_buffer_size_to_262144","ERROR tests/test_connection.py::test_start_connection_times_out","ERROR tests/test_connection.py::test_start_connection_os_error","ERROR tests/test_connection.py::test_start_connection_is_cancelled","ERROR tests/test_connection.py::test_finish_connection_is_cancelled","ERROR tests/test_connection.py::test_finish_connection_times_out","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map0]","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map1]","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map2]","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map3]","ERROR tests/test_connection.py::test_plaintext_connection_fails_handshake[exception_map4]","ERROR tests/test_connection.py::test_connect_wrong_password","ERROR tests/test_connection.py::test_connect_correct_password","ERROR tests/test_connection.py::test_connect_wrong_version","ERROR tests/test_connection.py::test_connect_wrong_name","ERROR tests/test_connection.py::test_force_disconnect_fails","ERROR tests/test_connection.py::test_connection_lost_while_connecting[exception_map0]","ERROR tests/test_connection.py::test_connection_lost_while_connecting[exception_map1]","ERROR tests/test_connection.py::test_connection_lost_while_connecting[exception_map2]","ERROR tests/test_connection.py::test_connection_error_during_hello[exception_map0]","ERROR tests/test_connection.py::test_connection_error_during_hello[exception_map1]","ERROR tests/test_connection.py::test_connection_error_during_hello[exception_map2]","ERROR tests/test_connection.py::test_connection_cancelled_during_hello[exception_map0]","ERROR tests/test_connection.py::test_connection_cancelled_during_hello[exception_map1]","ERROR tests/test_connection.py::test_connection_cancelled_during_hello[exception_map2]","ERROR tests/test_connection.py::test_connect_resolver_times_out","ERROR tests/test_connection.py::test_disconnect_fails_to_send_response","ERROR tests/test_connection.py::test_disconnect_success_case","ERROR tests/test_connection.py::test_ping_disconnects_after_no_responses","ERROR tests/test_connection.py::test_ping_does_not_disconnect_if_we_get_responses","ERROR tests/test_connection.py::test_raise_during_send_messages_when_not_yet_connected","ERROR tests/test_connection.py::test_respond_to_ping_request","ERROR tests/test_connection.py::test_unknown_protobuf_message_type_logged","ERROR tests/test_connection.py::test_bad_protobuf_message_drops_connection","ERROR tests/test_connection.py::test_connection_cannot_be_reused","ERROR tests/test_connection.py::test_attempting_to_finish_unstarted_connection","ERROR tests/test_log_runner.py::test_log_runner","ERROR tests/test_log_runner.py::test_log_runner_reconnects_on_disconnect","ERROR tests/test_log_runner.py::test_log_runner_reconnects_on_subscribe_failure","ERROR tests/test_reconnect_logic.py::test_handling_unexpected_disconnect","ERROR tests/test_reconnect_logic.py::test_backoff_on_encryption_error","======= 1 failed, 297 passed, 1 skipped, 15 warnings, 97 errors in 1.38s =======","E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/python-aioesphomeapi-25.1.0/.pybuild/cpython3_3.13/build; python3.13 -m pytest tests","dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p \"3.14 3.13\" --parallel=8 returned exit code 13","make: *** [debian/rules:7: binary] Error 25","dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2","--------------------------------------------------------------------------------","Build finished at 2026-05-12T23:02:07Z","","Finished","--------"],"log_name":"build.log","match_lines":["You need to install a suitable plugin for your async framework, for example:\n"],"start_line":791,"title":"Build"},"is_admin":false,"lintian_result":null,"logs":{"build":{"description":"build","name":"build.log","url":"/lintian-fixes/c/python-aioesphomeapi/d9490f63-f990-4657-a90b-34e05488bdb7/logs/build.log"},"codemod":{"description":"codemod","name":"codemod.log","url":"/lintian-fixes/c/python-aioesphomeapi/d9490f63-f990-4657-a90b-34e05488bdb7/logs/codemod.log"},"worker":{"content":"[2026-05-12T23:00:07Z INFO  janitor_worker] Opening branch at https://salsa.debian.org/homeassistant-team/deps/python-aioesphomeapi.git\n[2026-05-12T23:00:09Z INFO  janitor_worker] Cached branch URL http://janitor.debian.net/git/python-aioesphomeapi missing: http://osuosl32-amd64@janitor.debian.net/git/python-aioesphomeapi/\nTotal 5094 (delta 0), reused 0 (delta 0), pack-reused 5094 (from 1)\nNothing to delete.\n[2026-05-12T23:00:09Z INFO  janitor_worker] Workspace ready - starting.\n[2026-05-12T23:00:09Z INFO  janitor_worker::debian] Running [\"lintian-brush\"]\n[2026-05-12T23:00:09Z INFO  silver_platter::debian::codemod] Assuming changelog needs to be updated, since it is always changed together with other files in the tree.\nfound 3826 deltas to reuse\n(2487/3826)\n[2026-05-12T23:00:19Z INFO  ognibuild::debian::fix_build] Using fixers: [PgBuildExtOutOfDateControlFixer, MissingConfigureFixer, MissingAutomakeInputFixer, MissingConfigStatusInputFixer, MissingPerlFileFixer, DebcargoUnacceptablePredicateFixer, DebcargoUnacceptableComparatorFixer, RetryAptFetchFailure, PackageDependencyFixer]\n[2026-05-12T23:00:19Z INFO  ognibuild::debian::build] Building debian packages, running sbuild --chroot-mode=unshare --no-clean-source -A -s -v -d sid.\n[2026-05-12T23:02:08Z WARN  buildlog_consultant::sbuild] Unknown line in summary: --------------------------------------------------------------------------------\n    \n[2026-05-12T23:02:08Z WARN  buildlog_consultant::sbuild] Unknown line in summary: Finished at 2026-05-12T23:02:07Z\n    \n[2026-05-12T23:02:08Z WARN  buildlog_consultant::sbuild] Unknown line in summary: Build needed 00:01:44, 5104k disk space\n    \n[2026-05-12T23:02:08Z WARN  buildlog_consultant::sbuild] Unknown key in summary: E\n[2026-05-12T23:02:08Z WARN  buildlog_consultant::sbuild] Unknown key in summary: brz\n[2026-05-12T23:02:08Z INFO  ognibuild::debian::fix_build] Attempting to use fixer PackageDependencyFixer to address MissingVagueDependency { name: \"a suitable plugin for your async framework, for example:\", url: None, minimum_version: None, current_version: None }\n[2026-05-12T23:02:08Z WARN  ognibuild::debian::fix_build] Failed to resolve error MissingVagueDependency { name: \"a suitable plugin for your async framework, for example:\", url: None, minimum_version: None, current_version: None }. Giving up.\n","description":"worker","name":"worker.log","url":"/lintian-fixes/c/python-aioesphomeapi/d9490f63-f990-4657-a90b-34e05488bdb7/logs/worker.log"}},"my_review":null,"other_reviews":[],"primary_log":"worker","publish_blockers":{"backoff":{"details":{"attempt_count":0,"next_try_time":"2026-05-12T23:02:11.768205Z"},"result":true},"change_set":{"details":{"change_set_id":"d9490f63-f990-4657-a90b-34e05488bdb7","change_set_state":"working"},"result":false},"command":{"details":{"actual":"DEB_UPDATE_CHANGELOG=auto lintian-brush","correct":"DEB_UPDATE_CHANGELOG=auto lintian-brush"},"result":true},"inactive":{"details":{"inactive":false},"result":true},"previous_mp":{"details":[],"result":true},"propose_rate_limit":{"details":{"bucket":"team+homeassistant@tracker.debian.org"},"result":true},"publish_status":{"details":{"reviews":{},"status":"rejected"},"result":false},"success":{"details":{"result_code":"missing-vague-dependency"},"result":false}},"publish_history":[],"queue_position":2785,"result":{"applied":[{"certainty":null,"description":"Use secure copyright file specification URI.","fixed_lintian_issues":[{"info":"http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/","package":null,"package_type":"source","tag":"insecure-copyright-format-uri"}],"fixer_name":"copyright-format-uri","overridden_lintian_issues":[],"patch_name":null,"revision_id":"git-v1:c683e96c5c2f2af1e33f72af3444aba2d08015a5","summary":"Use secure copyright file specification URI."},{"certainty":null,"description":"Trim trailing whitespace.","fixed_lintian_issues":[{"info":"[debian/changelog:4]","package":null,"package_type":"source","tag":"trailing-whitespace"},{"info":"[debian/rules:EOF]","package":null,"package_type":"source","tag":"trailing-whitespace"}],"fixer_name":"file-contains-trailing-whitespace","overridden_lintian_issues":[],"patch_name":null,"revision_id":"git-v1:b8ac9bcd5813e7e11dd0f6173dc2179c9c92f74b","summary":"Trim trailing whitespace."},{"certainty":null,"description":"Bump debhelper from old 11 to 13.","fixed_lintian_issues":[{"info":"11","package":null,"package_type":"source","tag":"package-uses-old-debhelper-compat-version"}],"fixer_name":"package-uses-deprecated-debhelper-compat-version","overridden_lintian_issues":[],"patch_name":null,"revision_id":"git-v1:7359334dbd56261dd389c6b22ce85e9e6f0df7cc","summary":"Bump debhelper from old 11 to 13."},{"certainty":"certain","description":"Update standards version to 4.7.4, no changes needed.\n\nUpgrade checklist verified:\n 4.6.1 → 4.6.2:\n  * Package does not provide x-window-manager alternative\n 4.6.2 → 4.7.0:\n  * Package does not use dpkg-divert\n 4.7.0 → 4.7.1:\n  * Package does not install to non-/usr paths\n 4.7.3 → 4.7.4:\n  * Package is not in non-free-firmware","fixed_lintian_issues":[{"info":"4.6.1 (released 2022-05-11) (current is 4.7.4.1)","package":null,"package_type":"source","tag":"ancient-standards-version"}],"fixer_name":"out-of-date-standards-version","overridden_lintian_issues":[],"patch_name":null,"revision_id":"git-v1:d49188622d8af72c1a9116089546431d3ac6d2b0","summary":"Update standards version to 4.7.4, no changes needed."}],"changelog_behaviour":{"explanation":"Assuming changelog needs to be updated, since it is always changed together with other files in the tree.","update":true},"failed":{}},"result_code":"missing-vague-dependency","resume_from":"{build,build,build}","reviews":[],"revision":"git-v1:d49188622d8af72c1a9116089546431d3ac6d2b0","run":{"branch_url":"https://salsa.debian.org/homeassistant-team/deps/python-aioesphomeapi.git/","build_version":null,"change_set":"d9490f63-f990-4657-a90b-34e05488bdb7","codebase":"python-aioesphomeapi","command":"DEB_UPDATE_CHANGELOG=auto lintian-brush","context":"\"debian-watch-does-not-check-openpgp-signature insecure-copyright-format-uri package-uses-old-debhelper-compat-version trailing-whitespace trailing-whitespace trailing-whitespace upstream-metadata-file-is-missing older-debian-watch-file-standard out-of-date-standards-version\"","debian_build_distribution":null,"debian_build_version":null,"description":"Missing dependency: a suitable plugin for your async framework, for example:","duration_seconds":125,"failure_stage":"{build,build,build}","failure_transient":null,"finish_time":"2026-05-12T23:02:11.768205Z","id":"d9490f63-f990-4657-a90b-34e05488bdb7","logfilenames":["worker.log","build.log","codemod.log"],"main_branch_revision":"git-v1:09c6beff186649e0f43c43c724cbe8bb96d39fb3","publish_status":"rejected","result":{"applied":[{"certainty":null,"description":"Use secure copyright file specification URI.","fixed_lintian_issues":[{"info":"http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/","package":null,"package_type":"source","tag":"insecure-copyright-format-uri"}],"fixer_name":"copyright-format-uri","overridden_lintian_issues":[],"patch_name":null,"revision_id":"git-v1:c683e96c5c2f2af1e33f72af3444aba2d08015a5","summary":"Use secure copyright file specification URI."},{"certainty":null,"description":"Trim trailing whitespace.","fixed_lintian_issues":[{"info":"[debian/changelog:4]","package":null,"package_type":"source","tag":"trailing-whitespace"},{"info":"[debian/rules:EOF]","package":null,"package_type":"source","tag":"trailing-whitespace"}],"fixer_name":"file-contains-trailing-whitespace","overridden_lintian_issues":[],"patch_name":null,"revision_id":"git-v1:b8ac9bcd5813e7e11dd0f6173dc2179c9c92f74b","summary":"Trim trailing whitespace."},{"certainty":null,"description":"Bump debhelper from old 11 to 13.","fixed_lintian_issues":[{"info":"11","package":null,"package_type":"source","tag":"package-uses-old-debhelper-compat-version"}],"fixer_name":"package-uses-deprecated-debhelper-compat-version","overridden_lintian_issues":[],"patch_name":null,"revision_id":"git-v1:7359334dbd56261dd389c6b22ce85e9e6f0df7cc","summary":"Bump debhelper from old 11 to 13."},{"certainty":"certain","description":"Update standards version to 4.7.4, no changes needed.\n\nUpgrade checklist verified:\n 4.6.1 → 4.6.2:\n  * Package does not provide x-window-manager alternative\n 4.6.2 → 4.7.0:\n  * Package does not use dpkg-divert\n 4.7.0 → 4.7.1:\n  * Package does not install to non-/usr paths\n 4.7.3 → 4.7.4:\n  * Package is not in non-free-firmware","fixed_lintian_issues":[{"info":"4.6.1 (released 2022-05-11) (current is 4.7.4.1)","package":null,"package_type":"source","tag":"ancient-standards-version"}],"fixer_name":"out-of-date-standards-version","overridden_lintian_issues":[],"patch_name":null,"revision_id":"git-v1:d49188622d8af72c1a9116089546431d3ac6d2b0","summary":"Update standards version to 4.7.4, no changes needed."}],"changelog_behaviour":{"explanation":"Assuming changelog needs to be updated, since it is always changed together with other files in the tree.","update":true},"failed":{}},"result_branches":[{"absorbed":false,"base_revision":"git-v1:09c6beff186649e0f43c43c724cbe8bb96d39fb3","remote_name":"debian/unstable","revision":"git-v1:d49188622d8af72c1a9116089546431d3ac6d2b0","role":"main"}],"result_code":"missing-vague-dependency","result_tags":[],"revision":"git-v1:d49188622d8af72c1a9116089546431d3ac6d2b0","start_time":"2026-05-12T23:00:06.404776Z","subpath":"","suite":"lintian-fixes","target_branch_url":null,"vcs_type":"git","worker":"osuosl32-amd64"},"run_id":"d9490f63-f990-4657-a90b-34e05488bdb7","success_probability":0.0,"suite":"lintian-fixes","total_previous_runs":1,"utcnow":"2026-07-06T02:26:04.284410791+00:00","vcs_type":"git","vcs_url":"https://salsa.debian.org/homeassistant-team/deps/python-aioesphomeapi.git/","version":"0.0.0","worker_log_name":"worker.log","worker_name":"osuosl32-amd64"}