Drop python 3.7 support (#455)

* Drop python 3.7 support

* CI: drop 3.7 and add 3.11

* Remove skipifs that were required for <3.8

* Use pypy-3.8 for CI, re-enable pypy for windows to see if it works now

* Bump readthedocs to use py3.8

* Remove py3.7 failure comment
This commit is contained in:
Teemu R
2023-05-17 20:03:08 +02:00
committed by GitHub
parent e7b7f1de94
commit ce5821a35f
8 changed files with 8 additions and 21 deletions

View File

@@ -60,7 +60,6 @@ async def test_raw_command(dev):
assert "Usage" in res.output
@pytest.mark.skipif(sys.version_info < (3, 8), reason="3.8 is first one with asyncmock")
async def test_emeter(dev: SmartDevice, mocker):
runner = CliRunner()
@@ -103,9 +102,6 @@ async def test_brightness(dev):
assert "Brightness: 12" in res.output
# Invoke fails when run on py3.7 with the following error:
# E + where 1 = <Result TypeError("object list can't be used in 'await' expression")>.exit_code
@pytest.mark.skipif(sys.version_info < (3, 8), reason="fails on python3.7")
async def test_json_output(dev: SmartDevice, mocker):
"""Test that the json output produces correct output."""
mocker.patch("kasa.Discover.discover", return_value=[dev])

View File

@@ -52,7 +52,6 @@ async def test_type_unknown():
Discover._get_device_class(invalid_info)
@pytest.mark.skipif(sys.version_info < (3, 8), reason="3.8 is first one with asyncmock")
async def test_discover_single(discovery_data: dict, mocker):
"""Make sure that discover_single returns an initialized SmartDevice instance."""
mocker.patch("kasa.TPLinkSmartHomeProtocol.query", return_value=discovery_data)
@@ -71,7 +70,6 @@ INVALIDS = [
]
@pytest.mark.skipif(sys.version_info < (3, 8), reason="3.8 is first one with asyncmock")
@pytest.mark.parametrize("msg, data", INVALIDS)
async def test_discover_invalid_info(msg, data, mocker):
"""Make sure that invalid discovery information raises an exception."""

View File

@@ -62,7 +62,6 @@ async def test_protocol_retry_recoverable_error(mocker):
assert conn.call_count == 6
@pytest.mark.skipif(sys.version_info < (3, 8), reason="3.8 is first one with asyncmock")
@pytest.mark.parametrize("retry_count", [1, 3, 5])
async def test_protocol_reconnect(mocker, retry_count):
remaining = retry_count
@@ -98,7 +97,6 @@ async def test_protocol_reconnect(mocker, retry_count):
assert response == {"great": "success"}
@pytest.mark.skipif(sys.version_info < (3, 8), reason="3.8 is first one with asyncmock")
@pytest.mark.parametrize("log_level", [logging.WARNING, logging.DEBUG])
async def test_protocol_logging(mocker, caplog, log_level):
caplog.set_level(log_level)

View File

@@ -61,15 +61,10 @@ def test_lightstrip_examples(mocker):
assert not res["failed"]
@pytest.mark.skipif(
sys.version_info < (3, 8), reason="3.7 handles asyncio.run differently"
)
def test_discovery_examples(mocker):
"""Test discovery examples."""
p = asyncio.run(get_device_for_file("KP303(UK)_1.0_1.0.3.json"))
# This succeeds on python 3.8 but fails on 3.7
# ValueError: a coroutine was expected, got [<DeviceType.Strip model KP303(UK) ...
mocker.patch("kasa.discover.Discover.discover", return_value=[p])
res = xdoctest.doctest_module("kasa.discover", "all")
assert not res["failed"]