Skip to content

Commit 1b5be7f

Browse files
committed
Add workflow and instance binding wrappers for python workers module
1 parent 0b87077 commit 1b5be7f

File tree

1 file changed

+49
-0
lines changed
  • src/pyodide/internal/workers-api/src/workers

1 file changed

+49
-0
lines changed

src/pyodide/internal/workers-api/src/workers/_workers.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -970,6 +970,52 @@ def get(self, *args, **kwargs):
970970
return _FetcherWrapper(self._binding.get(*args, **kwargs))
971971

972972

973+
class _WorkflowInstanceWrapper:
974+
def __init__(self, binding):
975+
self._binding = binding
976+
977+
def __getattr__(self, name):
978+
return getattr(self._binding, name)
979+
980+
async def send_event(self, *args, **kwargs):
981+
return self._binding.sendEvent(*args, **kwargs)
982+
983+
async def pause(self, *args, **kwargs):
984+
return self._binding.pause(*args, **kwargs)
985+
986+
async def resume(self, *args, **kwargs):
987+
return self._binding.resume(*args, **kwargs)
988+
989+
async def terminate(self, *args, **kwargs):
990+
return self._binding.terminate(*args, **kwargs)
991+
992+
async def restart(self, *args, **kwargs):
993+
return self._binding.restart(*args, **kwargs)
994+
995+
async def status(self, *args, **kwargs):
996+
return self._binding.status(*args, **kwargs)
997+
998+
999+
class _WorkflowBindingWrapper:
1000+
def __init__(self, binding):
1001+
self._binding = binding
1002+
1003+
def __getattr__(self, name):
1004+
return getattr(self._binding, name)
1005+
1006+
async def get(self, *args, **kwargs):
1007+
return _WorkflowInstanceWrapper(await self._binding.get(*args, **kwargs))
1008+
1009+
async def create(self, *args, **kwargs):
1010+
return _WorkflowInstanceWrapper(await self._binding.create(*args, **kwargs))
1011+
1012+
async def create_batch(self, *args, **kwargs):
1013+
return [
1014+
_WorkflowInstanceWrapper(w)
1015+
for w in await self._binding.createBatch(*args, **kwargs)
1016+
]
1017+
1018+
9731019
class _EnvWrapper:
9741020
def __init__(self, env: Any):
9751021
self._env = env
@@ -982,6 +1028,9 @@ def _getattr_helper(self, name):
9821028
if _is_js_instance(binding, "DurableObjectNamespace"):
9831029
return _DurableObjectNamespaceWrapper(binding)
9841030

1031+
if _is_js_instance(binding, "WorkflowImpl"):
1032+
return _WorkflowBindingWrapper(binding)
1033+
9851034
# TODO: Implement APIs for bindings.
9861035
return binding
9871036

0 commit comments

Comments
 (0)