1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
From 13b4b685de1ad6c4cb518d751150c573e4edeff7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= <sandro.jaeckel@gmail.com>
Date: Thu, 5 Mar 2026 03:07:15 +0100
Subject: [PATCH 1/2] Fix test fixture
Closes #39
---
tests/test_scene_members.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/test_scene_members.py b/tests/test_scene_members.py
index e137396..18452fb 100644
--- a/tests/test_scene_members.py
+++ b/tests/test_scene_members.py
@@ -39,4 +39,5 @@ async def go():
_del_mock.mock.assert_called_once_with(
'http://{}/api/scenemembers'.format(self.fake_ip),
params={"sceneId": 5678,
- 'shadeId': 1234})
+ 'shadeId': 1234},
+ timeout=15)
From 51f813eca4566cf08ab36d60ce693cade92cea28 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= <sandro.jaeckel@gmail.com>
Date: Thu, 5 Mar 2026 03:07:28 +0100
Subject: [PATCH 2/2] Fix Python 3.14 compatibility
---
aiopvapi/helpers/aiorequest.py | 4 ++--
tests/fake_server.py | 4 ++--
tests/test_room.py | 2 +-
tests/test_scene.py | 2 +-
tests/test_scene_members.py | 2 +-
5 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/aiopvapi/helpers/aiorequest.py b/aiopvapi/helpers/aiorequest.py
index 9fcb7df..b2b7b3a 100644
--- a/aiopvapi/helpers/aiorequest.py
+++ b/aiopvapi/helpers/aiorequest.py
@@ -45,11 +45,11 @@ def __init__(
if loop:
self.loop = loop
else:
- self.loop = asyncio.get_event_loop()
+ self.loop = asyncio.new_event_loop()
if websession:
self.websession = websession
else:
- self.websession = aiohttp.ClientSession()
+ self.websession = aiohttp.ClientSession(loop=self.loop)
self.api_version: int | None = api_version
self._last_request_status: int = 0
_LOGGER.debug("Powerview api version: %s", self.api_version)
diff --git a/tests/fake_server.py b/tests/fake_server.py
index f9d3803..e8e5b9e 100644
--- a/tests/fake_server.py
+++ b/tests/fake_server.py
@@ -355,7 +355,7 @@ async def main(loop, api_version=2):
if __name__ == "__main__":
- loop = asyncio.get_event_loop()
+ loop = asyncio.new_event_loop()
loop.run_until_complete(main(loop))
@@ -365,7 +365,7 @@ def __init__(self, methodName: str = "runTest") -> None:
self.api_version = 2
def setUp(self):
- self.loop = asyncio.get_event_loop()
+ self.loop = asyncio.new_event_loop()
self.server = FakePowerViewHub(loop=self.loop, api_version=self.api_version)
self.request = None
diff --git a/tests/test_room.py b/tests/test_room.py
index 58b0bc9..2ffd51b 100644
--- a/tests/test_room.py
+++ b/tests/test_room.py
@@ -62,7 +62,7 @@ async def go():
await self.start_fake_server()
# room = self.get_resource()
- loop = asyncio.get_event_loop()
+ loop = asyncio.new_event_loop()
request = AioRequest(FAKE_BASE_URL, loop, api_version=2)
response = Mock(spec=ClientResponse)
diff --git a/tests/test_scene.py b/tests/test_scene.py
index e7f2212..904f605 100644
--- a/tests/test_scene.py
+++ b/tests/test_scene.py
@@ -68,7 +68,7 @@ async def go():
await self.start_fake_server()
# scene = self.get_resource()
- loop = asyncio.get_event_loop()
+ loop = asyncio.new_event_loop()
request = AioRequest(FAKE_BASE_URL, loop, api_version=2)
response = Mock(spec=ClientResponse)
diff --git a/tests/test_scene_members.py b/tests/test_scene_members.py
index 18452fb..10ca437 100644
--- a/tests/test_scene_members.py
+++ b/tests/test_scene_members.py
@@ -24,7 +24,7 @@ def setUp(self):
@mock.patch('aiopvapi.helpers.aiorequest.AioRequest.check_response', new=AsyncMock())
def test_remove_shade_from_scene(self):
"""Tests create new scene."""
- loop = asyncio.get_event_loop()
+ loop = asyncio.new_event_loop()
request = AioRequest(self.fake_ip, loop)
_del_mock = AsyncMock(return_value=None)
|