Skip to content
This repository was archived by the owner on Jun 7, 2021. It is now read-only.

Commit 066956c

Browse files
committed
Support coroutines as well as coroutine generating functions
1 parent 24466e3 commit 066956c

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

webthing/value.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""An observable, settable value interface."""
22

33
import sys
4+
import inspect
45
import asyncio
56

67
if sys.version_info.major == 3:
@@ -48,8 +49,10 @@ async def set(self, value):
4849
value -- value to set
4950
"""
5051
if self.write_forwarder is not None:
51-
if asyncio.iscoroutine(self.write_forwarder):
52+
if inspect.iscoroutinefunction(self.write_forwarder):
5253
await self.write_forwarder(value)
54+
if asyncio.iscoroutine(self.write_forwarder):
55+
await self.write_forwarder
5356
else:
5457
self.write_forwarder(value)
5558

@@ -59,8 +62,10 @@ async def set(self, value):
5962
async def get(self):
6063
"""Return the last known value from the underlying thing."""
6164
if self.read_forwarder:
62-
if asyncio.iscoroutine(self.read_forwarder):
65+
if inspect.iscoroutinefunction(self.read_forwarder):
6366
self._value = await self.read_forwarder()
67+
elif asyncio.iscoroutine(self.read_forwarder):
68+
self._value = await self.read_forwarder
6469
else:
6570
self._value = self.read_forwarder()
6671
return self._value

0 commit comments

Comments
 (0)