cloudflare / cloudflare/workerd
🐛 BUG: pyodide needs updating to support `to_py` for JS -> python conversion
- 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
Assessment
This issue has not been assessed yet.