Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing pypa-build-hook Using pypaBuildPhase Sourcing python-runtime-deps-check-hook Using pythonRuntimeDepsCheckHook Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-metadata-check-hook.sh Using pythonMetadataCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing pytest-check-hook Using pytestCheckPhase Running phase: unpackPhase unpacking source archive /nix/store/iz95mz7sjh8rbivz8f29kmdx2c9ascbb-source source root is source setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "source/tests/test_xml.py" Running phase: patchPhase Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Running phase: buildPhase Executing pypaBuildPhase Creating a wheel... pypa build flags: --no-isolation --outdir dist/ --wheel * Getting build dependencies for wheel... :6: SetuptoolsDeprecationWarning: The test command is disabled and references to it are deprecated. !! ******************************************************************************** Please remove any references to `setuptools.command.test` in all supported versions of the affected package. This deprecation is overdue, please update your project and remove deprecated calls to avoid build errors in the future. ******************************************************************************** !! /nix/store/qmli4gwqi36clrxc1i29q6mnf8sizlbc-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated !! ******************************************************************************** Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). By 2027-Feb-18, you need to update your project and remove deprecated calls or your builds will no longer be supported. See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! corresp(dist, value, root_dir) /nix/store/qmli4gwqi36clrxc1i29q6mnf8sizlbc-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: MIT License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! dist._finalize_license_expression() /nix/store/qmli4gwqi36clrxc1i29q6mnf8sizlbc-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: MIT License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running egg_info creating soco.egg-info writing soco.egg-info/PKG-INFO writing dependency_links to soco.egg-info/dependency_links.txt writing requirements to soco.egg-info/requires.txt writing top-level names to soco.egg-info/top_level.txt writing manifest file 'soco.egg-info/SOURCES.txt' reading manifest file 'soco.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files matching '*.pyc' found under directory 'doc' warning: no previously-included files matching '*.pyo' found under directory 'doc' warning: no previously-included files matching '*.rej' found under directory 'doc' warning: no previously-included files matching '*.orig' found under directory 'doc' warning: no previously-included files matching '.DS_Store' found under directory 'doc' no previously-included directories found matching 'doc/_build' warning: no previously-included files matching '*.pyc' found under directory 'tests' warning: no previously-included files matching '*.pyo' found under directory 'tests' warning: no previously-included files matching '*.rej' found under directory 'tests' warning: no previously-included files matching '*.orig' found under directory 'tests' warning: no previously-included files matching '.DS_Store' found under directory 'tests' warning: no previously-included files matching '*.pyc' found under directory 'examples' warning: no previously-included files matching '*.pyo' found under directory 'examples' warning: no previously-included files matching '*.rej' found under directory 'examples' warning: no previously-included files matching '*.orig' found under directory 'examples' warning: no previously-included files matching '.DS_Store' found under directory 'examples' adding license file 'LICENSE.rst' adding license file 'AUTHORS.rst' writing manifest file 'soco.egg-info/SOURCES.txt' * Building wheel... :6: SetuptoolsDeprecationWarning: The test command is disabled and references to it are deprecated. !! ******************************************************************************** Please remove any references to `setuptools.command.test` in all supported versions of the affected package. This deprecation is overdue, please update your project and remove deprecated calls to avoid build errors in the future. ******************************************************************************** !! /nix/store/qmli4gwqi36clrxc1i29q6mnf8sizlbc-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated !! ******************************************************************************** Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0). By 2027-Feb-18, you need to update your project and remove deprecated calls or your builds will no longer be supported. See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! corresp(dist, value, root_dir) /nix/store/qmli4gwqi36clrxc1i29q6mnf8sizlbc-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:61: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: MIT License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! dist._finalize_license_expression() /nix/store/qmli4gwqi36clrxc1i29q6mnf8sizlbc-python3.14-setuptools-83.0.0/lib/python3.14/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: MIT License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running bdist_wheel running build running build_py creating build/lib/soco copying soco/events_twisted.py -> build/lib/soco copying soco/ms_data_structures.py -> build/lib/soco copying soco/services.py -> build/lib/soco copying soco/config.py -> build/lib/soco copying soco/data_structures_entry.py -> build/lib/soco copying soco/discovery.py -> build/lib/soco copying soco/events.py -> build/lib/soco copying soco/xml.py -> build/lib/soco copying soco/soap.py -> build/lib/soco copying soco/cache.py -> build/lib/soco copying soco/__init__.py -> build/lib/soco copying soco/core.py -> build/lib/soco copying soco/groups.py -> build/lib/soco copying soco/data_structure_quirks.py -> build/lib/soco copying soco/events_base.py -> build/lib/soco copying soco/utils.py -> build/lib/soco copying soco/data_structures.py -> build/lib/soco copying soco/exceptions.py -> build/lib/soco copying soco/music_library.py -> build/lib/soco copying soco/alarms.py -> build/lib/soco copying soco/zonegroupstate.py -> build/lib/soco copying soco/events_asyncio.py -> build/lib/soco copying soco/snapshot.py -> build/lib/soco creating build/lib/soco/plugins copying soco/plugins/__init__.py -> build/lib/soco/plugins copying soco/plugins/plex.py -> build/lib/soco/plugins copying soco/plugins/example.py -> build/lib/soco/plugins copying soco/plugins/spotify.py -> build/lib/soco/plugins copying soco/plugins/wimp.py -> build/lib/soco/plugins copying soco/plugins/sharelink.py -> build/lib/soco/plugins creating build/lib/soco/music_services copying soco/music_services/accounts.py -> build/lib/soco/music_services copying soco/music_services/token_store.py -> build/lib/soco/music_services copying soco/music_services/__init__.py -> build/lib/soco/music_services copying soco/music_services/data_structures.py -> build/lib/soco/music_services copying soco/music_services/music_service.py -> build/lib/soco/music_services installing to build/bdist.macosx-14.0-arm64/wheel running install running install_lib creating build/bdist.macosx-14.0-arm64/wheel creating build/bdist.macosx-14.0-arm64/wheel/soco copying build/lib/soco/events_twisted.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/ms_data_structures.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/services.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/config.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/data_structures_entry.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/discovery.py -> build/bdist.macosx-14.0-arm64/wheel/./soco creating build/bdist.macosx-14.0-arm64/wheel/soco/plugins copying build/lib/soco/plugins/__init__.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/plugins copying build/lib/soco/plugins/plex.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/plugins copying build/lib/soco/plugins/example.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/plugins copying build/lib/soco/plugins/spotify.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/plugins copying build/lib/soco/plugins/wimp.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/plugins copying build/lib/soco/plugins/sharelink.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/plugins copying build/lib/soco/events.py -> build/bdist.macosx-14.0-arm64/wheel/./soco creating build/bdist.macosx-14.0-arm64/wheel/soco/music_services copying build/lib/soco/music_services/accounts.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/music_services copying build/lib/soco/music_services/token_store.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/music_services copying build/lib/soco/music_services/__init__.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/music_services copying build/lib/soco/music_services/data_structures.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/music_services copying build/lib/soco/music_services/music_service.py -> build/bdist.macosx-14.0-arm64/wheel/./soco/music_services copying build/lib/soco/xml.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/soap.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/cache.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/__init__.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/core.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/groups.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/data_structure_quirks.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/events_base.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/utils.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/data_structures.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/exceptions.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/music_library.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/alarms.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/zonegroupstate.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/events_asyncio.py -> build/bdist.macosx-14.0-arm64/wheel/./soco copying build/lib/soco/snapshot.py -> build/bdist.macosx-14.0-arm64/wheel/./soco running install_egg_info running egg_info writing soco.egg-info/PKG-INFO writing dependency_links to soco.egg-info/dependency_links.txt writing requirements to soco.egg-info/requires.txt writing top-level names to soco.egg-info/top_level.txt reading manifest file 'soco.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files matching '*.pyc' found under directory 'doc' warning: no previously-included files matching '*.pyo' found under directory 'doc' warning: no previously-included files matching '*.rej' found under directory 'doc' warning: no previously-included files matching '*.orig' found under directory 'doc' warning: no previously-included files matching '.DS_Store' found under directory 'doc' no previously-included directories found matching 'doc/_build' warning: no previously-included files matching '*.pyc' found under directory 'tests' warning: no previously-included files matching '*.pyo' found under directory 'tests' warning: no previously-included files matching '*.rej' found under directory 'tests' warning: no previously-included files matching '*.orig' found under directory 'tests' warning: no previously-included files matching '.DS_Store' found under directory 'tests' warning: no previously-included files matching '*.pyc' found under directory 'examples' warning: no previously-included files matching '*.pyo' found under directory 'examples' warning: no previously-included files matching '*.rej' found under directory 'examples' warning: no previously-included files matching '*.orig' found under directory 'examples' warning: no previously-included files matching '.DS_Store' found under directory 'examples' adding license file 'LICENSE.rst' adding license file 'AUTHORS.rst' writing manifest file 'soco.egg-info/SOURCES.txt' Copying soco.egg-info to build/bdist.macosx-14.0-arm64/wheel/./soco-0.31.2-py3.14.egg-info running install_scripts creating build/bdist.macosx-14.0-arm64/wheel/soco-0.31.2.dist-info/WHEEL creating '/nix/var/nix/builds/nix-96985-1466821955/source/dist/.tmp-_de92glp/soco-0.31.2-py3-none-any.whl' and adding 'build/bdist.macosx-14.0-arm64/wheel' to it adding 'soco/__init__.py' adding 'soco/alarms.py' adding 'soco/cache.py' adding 'soco/config.py' adding 'soco/core.py' adding 'soco/data_structure_quirks.py' adding 'soco/data_structures.py' adding 'soco/data_structures_entry.py' adding 'soco/discovery.py' adding 'soco/events.py' adding 'soco/events_asyncio.py' adding 'soco/events_base.py' adding 'soco/events_twisted.py' adding 'soco/exceptions.py' adding 'soco/groups.py' adding 'soco/ms_data_structures.py' adding 'soco/music_library.py' adding 'soco/services.py' adding 'soco/snapshot.py' adding 'soco/soap.py' adding 'soco/utils.py' adding 'soco/xml.py' adding 'soco/zonegroupstate.py' adding 'soco/music_services/__init__.py' adding 'soco/music_services/accounts.py' adding 'soco/music_services/data_structures.py' adding 'soco/music_services/music_service.py' adding 'soco/music_services/token_store.py' adding 'soco/plugins/__init__.py' adding 'soco/plugins/example.py' adding 'soco/plugins/plex.py' adding 'soco/plugins/sharelink.py' adding 'soco/plugins/spotify.py' adding 'soco/plugins/wimp.py' adding 'soco-0.31.2.dist-info/licenses/AUTHORS.rst' adding 'soco-0.31.2.dist-info/licenses/LICENSE.rst' adding 'soco-0.31.2.dist-info/METADATA' adding 'soco-0.31.2.dist-info/WHEEL' adding 'soco-0.31.2.dist-info/top_level.txt' adding 'soco-0.31.2.dist-info/RECORD' removing build/bdist.macosx-14.0-arm64/wheel Successfully built soco-0.31.2-py3-none-any.whl Finished creating a wheel... Finished executing pypaBuildPhase Running phase: pythonRuntimeDepsCheckHook Executing pythonRuntimeDepsCheck Checking runtime dependencies for soco-0.31.2-py3-none-any.whl Finished executing pythonRuntimeDepsCheck Running phase: installPhase Executing pypaInstallPhase Successfully installed soco-0.31.2-py3-none-any.whl Finished executing pypaInstallPhase Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase Running phase: fixupPhase checking for references to /nix/var/nix/builds/nix-96985-1466821955/ in /nix/store/bw3wshq0bzpxrfqymd34c1xihcwpmgjk-python3.14-soco-0.31.2... patching script interpreter paths in /nix/store/bw3wshq0bzpxrfqymd34c1xihcwpmgjk-python3.14-soco-0.31.2 stripping (with command strip and flags -S) in /nix/store/bw3wshq0bzpxrfqymd34c1xihcwpmgjk-python3.14-soco-0.31.2/lib checking for references to /nix/var/nix/builds/nix-96985-1466821955/ in /nix/store/0241ix1b59ljrl1mj9j900j89f7sc2ij-python3.14-soco-0.31.2-dist... patching script interpreter paths in /nix/store/0241ix1b59ljrl1mj9j900j89f7sc2ij-python3.14-soco-0.31.2-dist Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir Running phase: installCheckPhase no Makefile or custom installCheckPhase, doing nothing Running phase: pythonCatchConflictsPhase Running phase: pythonRemoveBinBytecodePhase Running phase: pythonImportsCheckPhase Executing pythonImportsCheckPhase Check whether the following modules can be imported: soco Running phase: pythonMetadataCheckPhase Executing pythonMetadataCheckPhase Running phase: pytestCheckPhase Executing pytestCheckPhase pytest flags: -m pytest ============================= test session starts ============================== platform darwin -- Python 3.14.7, pytest-9.1.1, pluggy-1.6.0 -- /nix/store/4l8r0s2r5fna7src82b5fc2hixdvfyw0-python3-3.14.7/bin/python3.14 cachedir: .pytest_cache rootdir: /nix/var/nix/builds/nix-96985-1466821955/source configfile: setup.cfg plugins: asyncio-1.4.0, requests-mock-1.12.1 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function collected 334 items tests/test_alarms.py::test_recurrence PASSED [ 0%] tests/test_alarms.py::test_alarms PASSED [ 0%] tests/test_alarms.py::test_alarms_skipped PASSED [ 0%] tests/test_alarms.py::test_alarms_skipped_reuse_object_on_update PASSED [ 1%] tests/test_alarms.py::test_save_raises_when_zone_is_none PASSED [ 1%] tests/test_cache.py::test_instance_creation PASSED [ 1%] tests/test_cache.py::test_cache_put_get PASSED [ 2%] tests/test_cache.py::test_cache_clear_del PASSED [ 2%] tests/test_cache.py::test_with_typical_args PASSED [ 2%] tests/test_cache.py::test_cache_disable PASSED [ 2%] tests/test_core.py::TestSoco::test_soco_bad_ip[not_ip] PASSED [ 3%] tests/test_core.py::TestSoco::test_soco_bad_ip[555.555.555.555] PASSED [ 3%] tests/test_core.py::TestSoco::test_soco_init PASSED [ 3%] tests/test_core.py::TestSoco::test_soco_str PASSED [ 4%] tests/test_core.py::TestSoco::test_soco_repr PASSED [ 4%] tests/test_core.py::TestSoco::test_soco_is_soundbar[model_name0] PASSED [ 4%] tests/test_core.py::TestSoco::test_soco_is_soundbar[model_name1] PASSED [ 5%] tests/test_core.py::TestSoco::test_soco_is_soundbar[model_name2] PASSED [ 5%] tests/test_core.py::TestSoco::test_soco_is_soundbar[model_name3] PASSED [ 5%] tests/test_core.py::TestSoco::test_soco_is_soundbar[model_name4] PASSED [ 5%] tests/test_core.py::TestSoco::test_soco_is_soundbar[model_name5] PASSED [ 6%] tests/test_core.py::TestSoco::test_soco_is_soundbar[model_name6] PASSED [ 6%] tests/test_core.py::TestSoco::test_soco_is_soundbar[model_name7] PASSED [ 6%] tests/test_core.py::TestSoco::test_soco_get_speaker_info_speaker_not_set_refresh[None] PASSED [ 7%] tests/test_core.py::TestSoco::test_soco_get_speaker_info_speaker_not_set_refresh[False] PASSED [ 7%] tests/test_core.py::TestSoco::test_soco_get_speaker_info_speaker_not_set_refresh[True] PASSED [ 7%] tests/test_core.py::TestSoco::test_soco_get_speaker_info_speaker_set_no_refresh[None] PASSED [ 8%] tests/test_core.py::TestSoco::test_soco_get_speaker_info_speaker_set_no_refresh[False] PASSED [ 8%] tests/test_core.py::TestSoco::test_soco_get_speaker_info_speaker_set_refresh[should0] PASSED [ 8%] tests/test_core.py::TestSoco::test_soco_get_speaker_info_speaker_set_refresh[should1] PASSED [ 8%] tests/test_core.py::TestSoco::test_soco_speech_enhance_mode PASSED [ 9%] tests/test_core.py::TestAVTransport::test_soco_play_mode_values[NORMAL] PASSED [ 9%] tests/test_core.py::TestAVTransport::test_soco_play_mode_values[SHUFFLE_NOREPEAT] PASSED [ 9%] tests/test_core.py::TestAVTransport::test_soco_play_mode_values[SHUFFLE] PASSED [ 10%] tests/test_core.py::TestAVTransport::test_soco_play_mode_values[REPEAT_ALL] PASSED [ 10%] tests/test_core.py::TestAVTransport::test_soco_play_mode_values[SHUFFLE_REPEAT_ONE] PASSED [ 10%] tests/test_core.py::TestAVTransport::test_soco_play_mode_values[REPEAT_ONE] PASSED [ 11%] tests/test_core.py::TestAVTransport::test_soco_play_mode_bad_value PASSED [ 11%] tests/test_core.py::TestAVTransport::test_soco_play_mode_lowercase PASSED [ 11%] tests/test_core.py::TestAVTransport::test_available_actions PASSED [ 11%] tests/test_core.py::TestAVTransport::test_soco_cross_fade2 PASSED [ 12%] tests/test_core.py::TestAVTransport::test_soco_play PASSED [ 12%] tests/test_core.py::TestAVTransport::test_soco_play_uri[x-file-cifs://server/MyNiceRing.mp3-x-file-cifs://server/MyNiceRing.mp3] PASSED [ 12%] tests/test_core.py::TestAVTransport::test_soco_play_uri[http://archive.org/download/TenD2005-07-16t_64kb.mp3-http://archive.org/download/TenD2005-07-16t_64kb.mp3] PASSED [ 13%] tests/test_core.py::TestAVTransport::test_soco_play_uri[x-sonosapi-radio:station%3a%3aps.147077612?sid=203&flags=76&sn=2-x-sonosapi-radio:station%3a%3aps.147077612?sid=203&flags=76&sn=2] PASSED [ 13%] tests/test_core.py::TestAVTransport::test_soco_play_uri_force_radio[http://archive.org/download/TenD2005-07-16t_64kb.mp3-x-rincon-mp3radio://archive.org/download/TenD2005-07-16t_64kb.mp3] PASSED [ 13%] tests/test_core.py::TestAVTransport::test_soco_play_uri_force_radio[https://archive.org/download/TenD2005-07-16t_64kb.mp3-x-rincon-mp3radio://archive.org/download/TenD2005-07-16t_64kb.mp3] PASSED [ 14%] tests/test_core.py::TestAVTransport::test_soco_play_uri_force_radio[aac://icy-e-bz-04-cr.sharp-stream.com/magic1054.aac?amsparams=playerid:BMUK_tunein;skey:1483570441&awparams=loggedin:false-x-rincon-mp3radio://icy-e-bz-04-cr.sharp-stream.com/magic1054.aac?amsparams=playerid:BMUK_tunein;skey:1483570441&awparams=loggedin:false] PASSED [ 14%] tests/test_core.py::TestAVTransport::test_soco_play_uri_calls_play PASSED [ 14%] tests/test_core.py::TestAVTransport::test_soco_play_uri_timeout PASSED [ 14%] tests/test_core.py::TestAVTransport::test_soco_play_uri_with_title PASSED [ 15%] tests/test_core.py::TestAVTransport::test_soco_pause PASSED [ 15%] tests/test_core.py::TestAVTransport::test_soco_stop PASSED [ 15%] tests/test_core.py::TestAVTransport::test_soco_end_direct_control_session PASSED [ 16%] tests/test_core.py::TestAVTransport::test_soco_next PASSED [ 16%] tests/test_core.py::TestAVTransport::test_soco_previous PASSED [ 16%] tests/test_core.py::TestAVTransport::test_soco_seek_invalid[NOT_VALID] PASSED [ 17%] tests/test_core.py::TestAVTransport::test_soco_seek_invalid[12:34:56:78] PASSED [ 17%] tests/test_core.py::TestAVTransport::test_soco_seek_invalid[99] PASSED [ 17%] tests/test_core.py::TestAVTransport::test_soco_seek_invalid[12:3:4] PASSED [ 17%] tests/test_core.py::TestAVTransport::test_soco_seek_valid[1:23:45] PASSED [ 18%] tests/test_core.py::TestAVTransport::test_soco_seek_valid[10:23:45] PASSED [ 18%] tests/test_core.py::TestAVTransport::test_soco_seek_valid[12:78:78] PASSED [ 18%] tests/test_core.py::TestAVTransport::test_soco_current_transport_info PASSED [ 19%] tests/test_core.py::TestAVTransport::test_soco_get_queue PASSED [ 19%] tests/test_core.py::TestAVTransport::test_soco_queue_size PASSED [ 19%] tests/test_core.py::TestAVTransport::test_join PASSED [ 20%] tests/test_core.py::TestAVTransport::test_join_timeout PASSED [ 20%] tests/test_core.py::TestAVTransport::test_unjoin PASSED [ 20%] tests/test_core.py::TestAVTransport::test_unjoin_timeout PASSED [ 20%] tests/test_core.py::TestAVTransport::test_switch_to_line_in PASSED [ 21%] tests/test_core.py::TestAVTransport::test_switch_to_tv PASSED [ 21%] tests/test_core.py::TestAVTransport::test_is_playing_tv PASSED [ 21%] tests/test_core.py::TestAVTransport::test_is_playing_radio PASSED [ 22%] tests/test_core.py::TestAVTransport::test_is_playing_line_in PASSED [ 22%] tests/test_core.py::TestAVTransport::test_create_sonos_playlist PASSED [ 22%] tests/test_core.py::TestAVTransport::test_create_sonos_playlist_from_queue PASSED [ 23%] tests/test_core.py::TestAVTransport::test_add_item_to_sonos_playlist PASSED [ 23%] tests/test_core.py::TestAVTransport::test_soco_cross_fade PASSED [ 23%] tests/test_core.py::TestAVTransport::test_shuffle PASSED [ 23%] tests/test_core.py::TestAVTransport::test_repeat PASSED [ 24%] tests/test_core.py::TestAVTransport::test_set_sleep_timer PASSED [ 24%] tests/test_core.py::TestAVTransport::test_set_sleep_timer_bad_sleep_time[BadTime] PASSED [ 24%] tests/test_core.py::TestAVTransport::test_set_sleep_timer_bad_sleep_time[00:43:23] PASSED [ 25%] tests/test_core.py::TestAVTransport::test_set_sleep_timer_bad_sleep_time[4200s] PASSED [ 25%] tests/test_core.py::TestAVTransport::test_set_sleep_timer_bad_sleep_time[] PASSED [ 25%] tests/test_core.py::TestAVTransport::test_get_sleep_timer PASSED [ 26%] tests/test_core.py::TestContentDirectory::test_remove_sonos_playlist_success PASSED [ 26%] tests/test_core.py::TestRenderingControl::test_soco_mute PASSED [ 26%] tests/test_core.py::TestRenderingControl::test_soco_volume[1] PASSED [ 26%] tests/test_core.py::TestRenderingControl::test_soco_volume[4] PASSED [ 27%] tests/test_core.py::TestRenderingControl::test_soco_volume[10] PASSED [ 27%] tests/test_core.py::TestRenderingControl::test_soco_volume[100] PASSED [ 27%] tests/test_core.py::TestRenderingControl::test_soco_ramp_to_volume PASSED [ 28%] tests/test_core.py::TestRenderingControl::test_set_relative_volume PASSED [ 28%] tests/test_core.py::TestRenderingControl::test_soco_treble PASSED [ 28%] tests/test_core.py::TestRenderingControl::test_soco_loudness PASSED [ 29%] tests/test_core.py::TestRenderingControl::test_soco_trueplay PASSED [ 29%] tests/test_core.py::TestRenderingControl::test_soco_soundbar_audio_input_format PASSED [ 29%] tests/test_core.py::TestRenderingControl::test_soco_audio_delay PASSED [ 29%] tests/test_core.py::TestRenderingControl::test_soco_fixed_volume PASSED [ 30%] tests/test_core.py::TestRenderingControl::test_soco_balance PASSED [ 30%] tests/test_core.py::TestRenderingControl::test_soco_surround_settings[surround_enabled-SurroundEnable-bool-None-None] PASSED [ 30%] tests/test_core.py::TestRenderingControl::test_soco_surround_settings[surround_full_volume_enabled-SurroundMode-bool-None-None] PASSED [ 31%] tests/test_core.py::TestRenderingControl::test_soco_surround_settings[surround_volume_tv-SurroundLevel-int--15-15] PASSED [ 31%] tests/test_core.py::TestRenderingControl::test_soco_surround_settings[surround_volume_music-MusicSurroundLevel-int--15-15] PASSED [ 31%] tests/test_core.py::TestDeviceProperties::test_soco_status_light PASSED [ 32%] tests/test_core.py::TestDeviceProperties::test_buttons_enabled PASSED [ 32%] tests/test_core.py::TestDeviceProperties::test_soco_set_player_name PASSED [ 32%] tests/test_core.py::TestDeviceProperties::test_create_stereo_pair PASSED [ 32%] tests/test_core.py::TestDeviceProperties::test_separate_stereo_pair PASSED [ 33%] tests/test_core.py::TestDeviceProperties::test_add_satellite_speakers PASSED [ 33%] tests/test_core.py::TestDeviceProperties::test_add_satellite_speakers_not_soundbar PASSED [ 33%] tests/test_core.py::TestDeviceProperties::test_separate_satellite_speakers PASSED [ 34%] tests/test_core.py::TestDeviceProperties::test_separate_satellite_speakers_not_soundbar PASSED [ 34%] tests/test_core.py::TestDeviceProperties::test_get_battery_info PASSED [ 34%] tests/test_core.py::TestZoneGroupTopology::test_soco_uid PASSED [ 35%] tests/test_core.py::TestZoneGroupTopology::test_soco_is_visible PASSED [ 35%] tests/test_core.py::TestZoneGroupTopology::test_soco_is_bridge PASSED [ 35%] tests/test_core.py::TestZoneGroupTopology::test_soco_is_coordinator PASSED [ 35%] tests/test_core.py::TestZoneGroupTopology::test_boot_seqnum PASSED [ 36%] tests/test_core.py::TestZoneGroupTopology::test_all_groups PASSED [ 36%] tests/test_core.py::TestZoneGroupTopology::test_all_groups_have_coordinator PASSED [ 36%] tests/test_core.py::TestZoneGroupTopology::test_group PASSED [ 37%] tests/test_core.py::TestZoneGroupTopology::test_all_zones PASSED [ 37%] tests/test_core.py::TestZoneGroupTopology::test_visible_zones PASSED [ 37%] tests/test_core.py::TestZoneGroupTopology::test_group_label PASSED [ 38%] tests/test_core.py::TestZoneGroupTopology::test_group_short_label PASSED [ 38%] tests/test_core.py::TestZoneGroupTopology::test_group_volume PASSED [ 38%] tests/test_core.py::TestZoneGroupTopology::test_group_mute PASSED [ 38%] tests/test_core.py::TestZoneGroupTopology::test_set_relative_group_volume PASSED [ 39%] tests/test_core.py::TestZoneGroupTopology::test_mic_enabled PASSED [ 39%] tests/test_core.py::test_only_on_master_true PASSED [ 39%] tests/test_core.py::test_not_on_master_false PASSED [ 40%] tests/test_data_structures_entry_integration.py::test_items[DidlMusicTrack] PASSED [ 40%] tests/test_data_structures_entry_integration.py::test_items[DidlMusicAlbum] PASSED [ 40%] tests/test_data_structures_entry_integration.py::test_items[DidlMusicArtist] PASSED [ 41%] tests/test_data_structures_entry_integration.py::test_items[DidlMusicGenre] PASSED [ 41%] tests/test_data_structures_entry_integration.py::test_items[DidlContainer] PASSED [ 41%] tests/test_data_structures_entry_integration.py::test_items[DidlPlaylistContainer] PASSED [ 41%] tests/test_data_structures_entry_integration.py::test_items[DidlAudioBroadcast] PASSED [ 42%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlRecentShow] PASSED [ 42%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlMusicAlbumFavorite] PASSED [ 42%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlMusicAlbumCompilation] PASSED [ 43%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlComposer] PASSED [ 43%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlAlbumList] PASSED [ 43%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlSameArtist] PASSED [ 44%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlPlaylistContainerFavorite] PASSED [ 44%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlPlaylistContainerTracklist] PASSED [ 44%] tests/test_data_structures_entry_integration.py::test_vendor_extended_didl_class[DidlRadioShow] PASSED [ 44%] tests/test_data_structures_entry_integration.py::test_from_didl_string_missing_upnp_class_raises PASSED [ 45%] tests/test_discovery.py::TestDiscover::test_discover PASSED [ 45%] tests/test_discovery.py::test_by_name PASSED [ 45%] tests/test_discovery.py::test__find_ipv4_networks PASSED [ 46%] tests/test_discovery.py::test__find_ipv4_addresses PASSED [ 46%] tests/test_discovery.py::test__check_ip_and_port PASSED [ 46%] tests/test_discovery.py::test__is_sonos PASSED [ 47%] tests/test_discovery.py::test__sonos_scan_worker_thread PASSED [ 47%] tests/test_discovery.py::test_scan_network PASSED [ 47%] tests/test_events.py::test_event_object PASSED [ 47%] tests/test_events.py::test_event_parsing PASSED [ 48%] tests/test_events.py::test_event_parsing_linein PASSED [ 48%] tests/test_events.py::test_event_parsing_null_value PASSED [ 48%] tests/test_events_asyncio.py::test_async_stop_tolerates_closed_socket PASSED [ 49%] tests/test_events_asyncio.py::test_stop_listening_swallows_task_exception PASSED [ 49%] tests/test_events_asyncio.py::test_async_start_cancels_pending_deferred_stop_and_resumes PASSED [ 49%] tests/test_events_asyncio.py::test_deferred_stop_runs_when_grace_expires_and_count_zero PASSED [ 50%] tests/test_events_asyncio.py::test_deferred_stop_aborts_when_subscription_appears_in_grace PASSED [ 50%] tests/test_events_asyncio.py::test_async_stop_idempotent_under_parallel_calls PASSED [ 50%] tests/test_integration.py::TestVolume::test_get_and_set SKIPPED (use...) [ 50%] tests/test_integration.py::TestVolume::test_invalid_arguments SKIPPED [ 51%] tests/test_integration.py::TestVolume::test_set_0 SKIPPED (use --ip ...) [ 51%] tests/test_integration.py::TestBass::test_get_and_set SKIPPED (use -...) [ 51%] tests/test_integration.py::TestBass::test_invalid_arguments SKIPPED [ 52%] tests/test_integration.py::TestTreble::test_get_and_set SKIPPED (use...) [ 52%] tests/test_integration.py::TestTreble::test_invalid_arguments SKIPPED [ 52%] tests/test_integration.py::TestMute::test SKIPPED (use --ip and an i...) [ 52%] tests/test_integration.py::TestGetCurrentTransportInfo::test SKIPPED [ 53%] tests/test_integration.py::TestTransport::test_pause_and_play SKIPPED [ 53%] tests/test_integration.py::TestTransport::test_stop SKIPPED (use --i...) [ 53%] tests/test_integration.py::TestTransport::test_seek_valid SKIPPED (u...) [ 54%] tests/test_integration.py::TestTransport::test_seek_invald SKIPPED (...) [ 54%] tests/test_integration.py::TestGetCurrentTrackInfo::test_get SKIPPED [ 54%] tests/test_integration.py::TestGetCurrentMediaInfo::test_get SKIPPED [ 55%] tests/test_integration.py::TestGetSpeakerInfo::test SKIPPED (use --i...) [ 55%] tests/test_integration.py::TestGetQueue::test_get SKIPPED (use --ip ...) [ 55%] tests/test_integration.py::TestAddToQueue::test_add_to_queue SKIPPED [ 55%] tests/test_integration.py::TestRemoveFromQueue::test SKIPPED (use --...) [ 56%] tests/test_integration.py::TestSonosPlaylist::test_create SKIPPED (u...) [ 56%] tests/test_integration.py::TestSonosPlaylist::test_create_from_queue SKIPPED [ 56%] tests/test_integration.py::TestSonosPlaylist::test_remove_playlist SKIPPED [ 57%] tests/test_integration.py::TestSonosPlaylist::test_remove_playlist_itemid SKIPPED [ 57%] tests/test_integration.py::TestSonosPlaylist::test_remove_playlist_bad_id SKIPPED [ 57%] tests/test_integration.py::TestTimer::test_get_set_timer SKIPPED (us...) [ 58%] tests/test_integration.py::TestReorderSonosPlaylist::test_reverse_track_order SKIPPED [ 58%] tests/test_integration.py::TestReorderSonosPlaylist::test_swap_first_two_items SKIPPED [ 58%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_first_track SKIPPED [ 58%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_first_track_full SKIPPED [ 59%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_last_track SKIPPED [ 59%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_between_track SKIPPED [ 59%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_some_tracks SKIPPED [ 60%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_all_tracks SKIPPED [ 60%] tests/test_integration.py::TestReorderSonosPlaylist::test_reorder_and_remove_track SKIPPED [ 60%] tests/test_integration.py::TestReorderSonosPlaylist::test_object_id_is_object SKIPPED [ 61%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_all_string SKIPPED [ 61%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_and_reorder_string SKIPPED [ 61%] tests/test_integration.py::TestReorderSonosPlaylist::test_move_track_string SKIPPED [ 61%] tests/test_integration.py::TestReorderSonosPlaylist::test_move_track_int SKIPPED [ 62%] tests/test_integration.py::TestReorderSonosPlaylist::test_clear_sonos_playlist SKIPPED [ 62%] tests/test_integration.py::TestReorderSonosPlaylist::test_clear_empty_sonos_playlist SKIPPED [ 62%] tests/test_integration.py::TestReorderSonosPlaylist::test_move_in_sonos_playlist SKIPPED [ 63%] tests/test_integration.py::TestReorderSonosPlaylist::test_remove_from_sonos_playlist SKIPPED [ 63%] tests/test_integration.py::TestReorderSonosPlaylist::test_get_sonos_playlist_by_attr SKIPPED [ 63%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[artists] SKIPPED [ 64%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[album_artists] SKIPPED [ 64%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[albums] SKIPPED [ 64%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[genres] SKIPPED [ 64%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[composers] SKIPPED [ 65%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[tracks] SKIPPED [ 65%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[playlists] SKIPPED [ 65%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[sonos_favorites] SKIPPED [ 66%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[favorite_radio_stations] SKIPPED [ 66%] tests/test_integration.py::TestMusicLibrary::test_from_specific_search_methods[favorite_radio_shows] SKIPPED [ 66%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[artists] SKIPPED [ 67%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[album_artists] SKIPPED [ 67%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[albums] SKIPPED [ 67%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[genres] SKIPPED [ 67%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[composers] SKIPPED [ 68%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[tracks] SKIPPED [ 68%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[playlists] SKIPPED [ 68%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[share] SKIPPED [ 69%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[sonos_playlists] SKIPPED [ 69%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[categories] SKIPPED [ 69%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[sonos_favorites] SKIPPED [ 70%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[radio_stations] SKIPPED [ 70%] tests/test_integration.py::TestMusicLibrary::test_music_library_information[radio_shows] SKIPPED [ 70%] tests/test_metadata_parsing.py::test_metadata_parsing PASSED [ 70%] tests/test_ms_data_structures.py::test_ms_track_search PASSED [ 71%] tests/test_ms_data_structures.py::test_ms_album_search PASSED [ 71%] tests/test_ms_data_structures.py::test_ms_artist_search PASSED [ 71%] tests/test_ms_data_structures.py::test_ms_playlist_search PASSED [ 72%] tests/test_music_library.py::TestMusicLibrary::test_search_track_no_result PASSED [ 72%] tests/test_music_library.py::TestMusicLibrary::test_search_track_no_artist_album_track PASSED [ 72%] tests/test_music_library.py::TestMusicLibrary::test_search_track_artist_albums PASSED [ 73%] tests/test_music_library.py::TestMusicLibrary::test_search_track_artist_album_tracks PASSED [ 73%] tests/test_music_library.py::TestMusicLibrary::test_soco_library_updating PASSED [ 73%] tests/test_music_library.py::TestMusicLibrary::test_soco_start_library_update PASSED [ 73%] tests/test_music_library.py::TestMusicLibrary::test_soco_list_library_shares PASSED [ 74%] tests/test_music_library.py::TestMusicLibrary::test_soco_delete_library_share PASSED [ 74%] tests/test_music_library.py::TestMusicLibrary::test_get_albums_for_artist_includes_subclasses PASSED [ 74%] tests/test_music_service_data_structures.py::test_get_class PASSED [ 75%] tests/test_music_service_data_structures.py::test_parse_response[response0-correct0] PASSED [ 75%] tests/test_music_service_data_structures.py::test_parse_response[response1-correct1] PASSED [ 75%] tests/test_music_service_data_structures.py::test_parse_response[response2-correct2] PASSED [ 76%] tests/test_music_service_data_structures.py::test_parse_response_plain_dict_fields PASSED [ 76%] tests/test_music_service_data_structures.py::test_parse_response_bad_type PASSED [ 76%] tests/test_music_service_data_structures.py::test_form_uri PASSED [ 76%] tests/test_music_service_data_structures.py::test_bool_str PASSED [ 77%] tests/test_music_service_data_structures.py::TestMetadataDictBase::test_init PASSED [ 77%] tests/test_music_service_data_structures.py::TestMetadataDictBase::test_conversion PASSED [ 77%] tests/test_music_service_data_structures.py::TestMetadataDictBase::test_get_attr PASSED [ 78%] tests/test_music_service_data_structures.py::TestMusicServiceItem::test_init PASSED [ 78%] tests/test_music_service_data_structures.py::TestMusicServiceItem::test_from_music_service PASSED [ 78%] tests/test_music_service_data_structures.py::TestMusicServiceItem::test_str_ PASSED [ 79%] tests/test_music_service_data_structures.py::TestMusicServiceItem::test_to_element PASSED [ 79%] tests/test_musicservices.py::test_initialise_account PASSED [ 79%] tests/test_musicservices.py::test_get_all_accounts PASSED [ 79%] tests/test_musicservices.py::test_get_accounts_for_service PASSED [ 80%] tests/test_musicservices.py::test_initialise_services PASSED [ 80%] tests/test_musicservices.py::test_get_data_for_name PASSED [ 80%] tests/test_musicservices.py::test_get_names PASSED [ 81%] tests/test_musicservices.py::test_create_music_service PASSED [ 81%] tests/test_musicservices.py::test_tunein PASSED [ 81%] tests/test_musicservices.py::test_search PASSED [ 82%] tests/test_musicservices.py::test_sonos_uri_from_id PASSED [ 82%] tests/test_musicservices.py::test_desc PASSED [ 82%] tests/test_new_datastructures.py::TestResource::test_create_didl_resource_with_no_params PASSED [ 82%] tests/test_new_datastructures.py::TestResource::test_create_didl_resource PASSED [ 83%] tests/test_new_datastructures.py::TestResource::test_create_didl_resource_to_from_element PASSED [ 83%] tests/test_new_datastructures.py::TestResource::test_didl_resource_to_dict PASSED [ 83%] tests/test_new_datastructures.py::TestResource::test_didl_resource_to_dict_remove_nones PASSED [ 84%] tests/test_new_datastructures.py::TestResource::test_didl_resource_from_dict PASSED [ 84%] tests/test_new_datastructures.py::TestResource::test_didl_resource_from_dict_remove_nones PASSED [ 84%] tests/test_new_datastructures.py::TestResource::test_didl_resource_eq PASSED [ 85%] tests/test_new_datastructures.py::TestDidlObject::test_create_didl_object_with_no_params PASSED [ 85%] tests/test_new_datastructures.py::TestDidlObject::test_create_didl_object_with_disallowed_params PASSED [ 85%] tests/test_new_datastructures.py::TestDidlObject::test_create_didl_object_with_good_params PASSED [ 85%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_from_wrong_element PASSED [ 86%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_from_element PASSED [ 86%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_from_element_unoff_subelement PASSED [ 86%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_from_wrong_class PASSED [ 87%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_from_dict PASSED [ 87%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_from_dict_resources PASSED [ 87%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_from_dict_resources_remove_nones PASSED [ 88%] tests/test_new_datastructures.py::TestDidlObject::test_didl_comparisons PASSED [ 88%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_to_dict PASSED [ 88%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_to_dict_resources PASSED [ 88%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_to_dict_resources_remove_nones PASSED [ 89%] tests/test_new_datastructures.py::TestDidlObject::test_didl_object_to_element PASSED [ 89%] tests/test_new_datastructures.py::test_didl_object_inheritance PASSED [ 89%] tests/test_new_datastructures.py::test_didl_class_to_soco_class_none_raises PASSED [ 90%] tests/test_new_datastructures.py::TestDidlFavorite::test_reference_returns_referenced_object PASSED [ 90%] tests/test_new_datastructures.py::TestDidlFavorite::test_reference_setter_round_trips PASSED [ 90%] tests/test_new_datastructures.py::TestDidlFavorite::test_reference_without_resource_meta_data_raises PASSED [ 91%] tests/test_new_datastructures.py::TestDidlFavorite::test_reference_with_empty_resource_meta_data_raises PASSED [ 91%] tests/test_new_datastructures.py::test_didl_class_to_soco_class_generated_class_has_docstring PASSED [ 91%] tests/test_services.py::test_init_defaults PASSED [ 91%] tests/test_services.py::test_method_dispatcher_function_creation PASSED [ 92%] tests/test_services.py::test_method_dispatcher_arg_count PASSED [ 92%] tests/test_services.py::test_wrap PASSED [ 92%] tests/test_services.py::test_unwrap PASSED [ 93%] tests/test_services.py::test_unwrap_invalid_char PASSED [ 93%] tests/test_services.py::test_compose PASSED [ 93%] tests/test_services.py::test_build_command PASSED [ 94%] tests/test_services.py::test_send_command PASSED [ 94%] tests/test_services.py::test_build_command_content_directory PASSED [ 94%] tests/test_services.py::test_handle_upnp_error PASSED [ 94%] tests/test_services.py::test_handle_upnp_error_with_no_error_code PASSED [ 95%] tests/test_services.py::test_handle_upnp_error_with_empty_response PASSED [ 95%] tests/test_singleton.py::test_singleton PASSED [ 95%] tests/test_singleton.py::test_singleton_inherit PASSED [ 96%] tests/test_singleton.py::test_class_group_singleton PASSED [ 96%] tests/test_singleton.py::test_soco_reset_clears_instances PASSED [ 96%] tests/test_snapshot.py::test_restore_queue_calls_add_uri_to_queue PASSED [ 97%] tests/test_snapshot.py::test_restore_queue_http_uri PASSED [ 97%] tests/test_snapshot.py::test_restore_queue_skipped_when_none PASSED [ 97%] tests/test_soap.py::test_init PASSED [ 97%] tests/test_soap.py::test_prepare_headers PASSED [ 98%] tests/test_soap.py::test_prepare_soap_header PASSED [ 98%] tests/test_soap.py::test_prepare_soap_body PASSED [ 98%] tests/test_soap.py::test_prepare PASSED [ 99%] tests/test_soap.py::test_call PASSED [ 99%] tests/test_utils.py::test_deprecation PASSED [ 99%] tests/test_xml.py::test_ns_tag PASSED [100%] =============================== warnings summary =============================== tests/conftest.py:113: 16 warnings tests/test_events.py: 1 warning /nix/var/nix/builds/nix-96985-1466821955/source/tests/conftest.py:113: DeprecationWarning: codecs.open() is deprecated. Use open() instead. with codecs.open(path.join(self.data_dir, filename), encoding="utf-8") as file_: ../../../../../store/gc3636lzigd9yjiv4yqadw95l57cd4la-python3.14-pytest-9.1.1/lib/python3.14/site-packages/_pytest/python.py:124 /nix/store/gc3636lzigd9yjiv4yqadw95l57cd4la-python3.14-pytest-9.1.1/lib/python3.14/site-packages/_pytest/python.py:124: PytestRemovedIn10Warning: Passing a non-Collection iterable to parametrize is deprecated. Test: tests/test_music_service_data_structures.py::test_parse_response, argvalues type: zip Please convert to a list or tuple. See https://docs.pytest.org/en/stable/deprecations.html#parametrize-iterators metafunc.parametrize(*marker.args, **marker.kwargs, _param_mark=marker) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ SKIPPED [67] tests/conftest.py:70: use --ip and an ip address to run integration tests. ================ 267 passed, 67 skipped, 18 warnings in 16.89s ================= Finished executing pytestCheckPhase Running phase: pytestcachePhase Running phase: pytestRemoveBytecodePhase