Skip to content

Commit 5ef66bb

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

File tree

1 file changed

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

1 file changed

+43
-0
lines changed

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

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -969,6 +969,46 @@ def __getattr__(self, name):
969969
def get(self, *args, **kwargs):
970970
return _FetcherWrapper(self._binding.get(*args, **kwargs))
971971

972+
class _WorkflowInstanceWrapper:
973+
def __init__(self, binding):
974+
self._binding = binding
975+
976+
def __getattr__(self, name):
977+
return getattr(self._binding, name)
978+
979+
async def send_event(self, *args, **kwargs):
980+
return self._binding.sendEvent(*args, **kwargs)
981+
982+
async def pause(self, *args, **kwargs):
983+
return self._binding.pause(*args, **kwargs)
984+
985+
async def resume(self, *args, **kwargs):
986+
return self._binding.resume(*args, **kwargs)
987+
988+
async def terminate(self, *args, **kwargs):
989+
return self._binding.terminate(*args, **kwargs)
990+
991+
async def restart(self, *args, **kwargs):
992+
return self._binding.restart(*args, **kwargs)
993+
994+
async def status(self, *args, **kwargs):
995+
return self._binding.status(*args, **kwargs)
996+
997+
class _WorkflowBindingWrapper:
998+
def __init__(self, binding):
999+
self._binding = binding
1000+
1001+
def __getattr__(self, name):
1002+
return getattr(self._binding, name)
1003+
1004+
async def get(self, *args, **kwargs):
1005+
return _WorkflowInstanceWrapper(await self._binding.get(*args, **kwargs))
1006+
1007+
async def create(self, *args, **kwargs):
1008+
return _WorkflowInstanceWrapper(await self._binding.create(*args, **kwargs))
1009+
1010+
async def create_batch(self, *args, **kwargs):
1011+
return [_WorkflowInstanceWrapper(w) for w in await self._binding.createBatch(*args, **kwargs)]
9721012

9731013
class _EnvWrapper:
9741014
def __init__(self, env: Any):
@@ -982,6 +1022,9 @@ def _getattr_helper(self, name):
9821022
if _is_js_instance(binding, "DurableObjectNamespace"):
9831023
return _DurableObjectNamespaceWrapper(binding)
9841024

1025+
if _is_js_instance(binding, "WorkflowImpl"):
1026+
return _WorkflowBindingWrapper(binding)
1027+
9851028
# TODO: Implement APIs for bindings.
9861029
return binding
9871030

0 commit comments

Comments
 (0)