Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions src/pyodide/internal/workers-api/src/workers/_workers.py
Original file line number Diff line number Diff line change
Expand Up @@ -970,6 +970,52 @@ def get(self, *args, **kwargs):
return _FetcherWrapper(self._binding.get(*args, **kwargs))


class _WorkflowInstanceWrapper:
def __init__(self, binding):
self._binding = binding

def __getattr__(self, name):
return getattr(self._binding, name)

async def send_event(self, *args, **kwargs):
return self._binding.sendEvent(*args, **kwargs)

async def pause(self, *args, **kwargs):
return self._binding.pause(*args, **kwargs)

async def resume(self, *args, **kwargs):
return self._binding.resume(*args, **kwargs)

async def terminate(self, *args, **kwargs):
return self._binding.terminate(*args, **kwargs)

async def restart(self, *args, **kwargs):
return self._binding.restart(*args, **kwargs)

async def status(self, *args, **kwargs):
return self._binding.status(*args, **kwargs)


class _WorkflowBindingWrapper:
def __init__(self, binding):
self._binding = binding

def __getattr__(self, name):
return getattr(self._binding, name)

async def get(self, *args, **kwargs):
return _WorkflowInstanceWrapper(await self._binding.get(*args, **kwargs))

async def create(self, *args, **kwargs):
return _WorkflowInstanceWrapper(await self._binding.create(*args, **kwargs))

async def create_batch(self, *args, **kwargs):
return [
_WorkflowInstanceWrapper(w)
for w in await self._binding.createBatch(*args, **kwargs)
]


class _EnvWrapper:
def __init__(self, env: Any):
self._env = env
Expand All @@ -982,6 +1028,9 @@ def _getattr_helper(self, name):
if _is_js_instance(binding, "DurableObjectNamespace"):
return _DurableObjectNamespaceWrapper(binding)

if _is_js_instance(binding, "WorkflowImpl"):
return _WorkflowBindingWrapper(binding)

# TODO: Implement APIs for bindings.
return binding

Expand Down