diff --git a/pyscript.core/package-lock.json b/pyscript.core/package-lock.json index 6db70a3d..bd395b4d 100644 --- a/pyscript.core/package-lock.json +++ b/pyscript.core/package-lock.json @@ -1,12 +1,12 @@ { "name": "@pyscript/core", - "version": "0.4.9", + "version": "0.4.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@pyscript/core", - "version": "0.4.9", + "version": "0.4.10", "license": "APACHE-2.0", "dependencies": { "@ungap/with-resolvers": "^0.1.0", diff --git a/pyscript.core/package.json b/pyscript.core/package.json index 7adf1130..691f4c86 100644 --- a/pyscript.core/package.json +++ b/pyscript.core/package.json @@ -1,6 +1,6 @@ { "name": "@pyscript/core", - "version": "0.4.9", + "version": "0.4.10", "type": "module", "description": "PyScript", "module": "./index.js", diff --git a/pyscript.core/src/stdlib/pyscript/ffi.py b/pyscript.core/src/stdlib/pyscript/ffi.py new file mode 100644 index 00000000..fd6ae658 --- /dev/null +++ b/pyscript.core/src/stdlib/pyscript/ffi.py @@ -0,0 +1,18 @@ +try: + import js + from pyodide.ffi import create_proxy as _cp + from pyodide.ffi import to_js as _py_tjs + + from_entries = js.Object.fromEntries + + def _tjs(value, **kw): + if not hasattr(kw, "dict_converter"): + kw["dict_converter"] = from_entries + return _py_tjs(value, **kw) + +except: + from jsffi import create_proxy as _cp + from jsffi import to_js as _tjs + +create_proxy = _cp +to_js = _tjs diff --git a/pyscript.core/test/ffi.html b/pyscript.core/test/ffi.html new file mode 100644 index 00000000..1c29ccb8 --- /dev/null +++ b/pyscript.core/test/ffi.html @@ -0,0 +1,26 @@ + + +
+ + +