cloudflare / cloudflare/workerd

🐛 BUG: pyodide needs updating to support `to_py` for JS -> python conversion

Open
#3,322 4 comments 0 reactions 0 assignees View on GitHub
bug python
Dominant language
C++
Stars
8.7k
Forks
739
Avg merge
2d 20h
Merged PRs (30d)
174

Description

### Which Cloudflare product(s) does this pertain to?

Workers Runtime

### What versions are you using?

wrangler 3.99.0

### What operating system and version are you using?

Mac Sonoma 14.6.1

### Please provide a link to a minimal reproduction

_No response_

### Describe the Bug

This is all from an environment I built fresh on Jan 1 2025 - e.g. `brew install node` etc.

It appears pyodide is an alpha version:
`pyodide Version: 0.26.0a2`

`print( f"{dir(pyodide)}")` results in:

> ['ConversionError', 'IN_BROWSER', 'InternalError', 'JsArray', 'JsAsyncGenerator', 'JsAsyncIterable', 'JsAsyncIterator', 'JsBuffer', 'JsCallable', 'JsDomElement', 'JsDoubleProxy', 'JsException', 'JsFetchResponse', 'JsGenerator', 'JsIterable', 'JsIterator', 'JsMap', 'JsMutableMap', 'JsPromise', 'JsProxy', 'JsTypedArray', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_pyodide', '_pyodide_core', 'create_once_callable', 'create_proxy', 'destroy_proxies', 'register_js_module', 'sys', 't', 'to_js', 'unregister_js_module']

More specifically I'm looking for the `to_py(...)` function, so I can convert the `data = await request.json()` object from Javascript to Python. _Supposedly, per ChatGPT,_ this function was introduced in pyodide version 0.21.0. But regardless it's in the latest version on their site.

https://pyodide.org/en/stable/usage/api/python-api/ffi.html#pyodide.ffi.JsArray.to_py

### Please provide any relevant error logs

Error: PythonError: Traceback (most recent call last):
File "/lib/python312.zip/_pyodide/_base.py", line 629, in pyimport_impl
res = __import__(stem, fromlist=fromlist)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/session/metadata/entry.py", line 9, in
from pyodide.ffi import to_py
ImportError: cannot import name 'to_py' from 'pyodide.ffi' (/lib/python312.zip/pyodide/ffi/__init__.py)

at async Object.fetch (file:///Users/.../node_modules/miniflare/dist/src/workers/core/entry.worker.js:1029:22)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.