holoviz / panel

Panel: The powerful data exploration & web app framework for Python
https://panel.holoviz.org
BSD 3-Clause "New" or "Revised" License
4.75k stars 517 forks source link

Pyodide Panel site generated with `panel convert` throws error `Uncaught (in promise) PythonError` on Function Execution #7231

Closed michaelweinold closed 1 month ago

michaelweinold commented 1 month ago

ALL software version info

(this library, plus any other relevant software, e.g. bokeh, python, notebook, OS, browser, etc)

panel==1.4.2
pyodide==0.26.2
bw2data==4.0.dev51
bw2io==0.9.dev34
bw2calc==2.0.dev20

Description of expected behavior and the observed behavior

A life-cycle assessment calculation with our Brightway package, which works fine in Pyodide, simply throws an error in a Panel Pyodide site.

Complete, minimal, self-contained example code that reproduces the issue

This runs fine on eg. jupyterlite.readthedocs.org:

import micropip
await micropip.install('bw2data==4.0.dev51', keep_going = True)
await micropip.install('bw2io==0.9.dev34', keep_going = True)
await micropip.install('bw2calc==2.0.dev20', keep_going = True)

os.environ["BRIGHTWAY_DIR"] = "/tmp/"

def load_useeio_database():
    try:
        bd.projects.delete_project('USEEIO-1.1', delete_dir=True)
    except:
        pass
    bi.install_project(project_key="USEEIO-1.1", overwrite_existing=True)
    bd.projects.set_current("USEEIO-1.1")

def perform_lca():
    useeio = bd.Database('USEEIO-1.1')
    list_prod = [node for node in useeio if 'product' in node['type']]
    some_prod = list_prod[42]
    lca = bc.LCA( 
        demand={some_prod: 100}, 
        method = bd.methods.random()
    )
    lca.lci()
    lca.lcia()
    return lca.score

load_useeio_database()

perform_lca()

While this Panel app:

# %%
import panel as pn

import os
import bw2io as bi
import bw2calc as bc
import bw2data as bd

os.environ["BRIGHTWAY_DIR"] = "/tmp/"

def load_useeio_database(event):
    try:
        bd.projects.delete_project('USEEIO-1.1', delete_dir=True)
    except:
        pass
    bi.install_project(project_key="USEEIO-1.1", overwrite_existing=True)
    bd.projects.set_current("USEEIO-1.1")

def perform_lca(event):
    useeio = bd.Database('USEEIO-1.1')
    list_prod = [node for node in useeio if 'product' in node['type']]
    some_prod = list_prod[42]
    lca = bc.LCA( 
        demand={some_prod: 100}, 
        method = bd.methods.random()
    )
    lca.lci()
    lca.lcia()
    number_lca_score.value = lca.score

button_load = pn.widgets.Button(name='Load USEEIO')
button_load.on_click(load_useeio_database)

button_lca = pn.widgets.Button(name='Perform LCA')
button_lca.on_click(perform_lca)

number_lca_score = pn.indicators.Number(name='LCA Score', value=0)

pn.Column(button_load, button_lca, number_lca_score).servable()

Causes the below error when converted to Pyodide with

panel convert app.py --to pyodide-worker --out test --requirements requirements.txt

Stack traceback and/or browser JavaScript console output

JavaScript console output ```pyodide.asm.js:10 Uncaught (in promise) PythonError: Traceback (most recent call last): File "/lib/python312.zip/_pyodide/_base.py", line 596, in eval_code_async await CodeRunner( File "/lib/python312.zip/_pyodide/_base.py", line 410, in run_async coroutine = eval(self.code, globals, locals) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 5, in File "/lib/python3.12/site-packages/panel/io/pyodide.py", line 356, in _link_docs_worker doc.unhold() File "/lib/python3.12/site-packages/bokeh/document/document.py", line 776, in unhold self.callbacks.unhold() File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 431, in unhold self.trigger_on_change(event) File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 413, in trigger_on_change invoke_with_curdoc(doc, invoke_callbacks) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/bokeh/io/doc.py", line 82, in patch_curdoc yield File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 443, in invoke_with_curdoc return f() ^^^ File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 412, in invoke_callbacks cb(event) File "/lib/python3.12/site-packages/panel/io/pyodide.py", line 353, in pysync dispatch_fn(json_patch, pyodide.ffi.to_js(buffer_map), msg_id) File "http://localhost:8000/test/wasm_bw2io_useeio.js", line 4, in sendPatch pyodide.ffi.JsException: DataCloneError: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': [object Map] could not be cloned. at new_error (pyodide.asm.js:10:9965) at pyodide.asm.wasm:0x16dc69 at pyodide.asm.wasm:0x177492 at _PyEM_TrampolineCall_JS (pyodide.asm.js:10:124082) at pyodide.asm.wasm:0x1c2c4c at pyodide.asm.wasm:0x2c79ac at pyodide.asm.wasm:0x20a621 at pyodide.asm.wasm:0x1c3339 at pyodide.asm.wasm:0x1c3648 at pyodide.asm.wasm:0x1c36c6 at pyodide.asm.wasm:0x29e6fa at pyodide.asm.wasm:0x2a4cf1 at pyodide.asm.wasm:0x1c3806 at pyodide.asm.wasm:0x1c346f at pyodide.asm.wasm:0x176af6 at callPyObjectKwargs (pyodide.asm.js:10:62217) at Module.callPyObjectMaybePromising (pyodide.asm.js:10:63465) at wrapper (pyodide.asm.js:10:27093) at Kn.e.port1.onmessage (pyodide.asm.js:10:100342) new_error @ pyodide.asm.js:10 $wrap_exception @ pyodide.asm.wasm:0x16dc69 $FutureDoneCallback_call @ pyodide.asm.wasm:0x177492 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10 await in Kn.e.port1.onmessage self.onmessage @ wasm_bw2io_useeio.js:68Understand this error pyodide.asm.js:10 Uncaught (in promise) PythonError: Traceback (most recent call last): File "/lib/python312.zip/_pyodide/_base.py", line 596, in eval_code_async await CodeRunner( File "/lib/python312.zip/_pyodide/_base.py", line 410, in run_async coroutine = eval(self.code, globals, locals) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/panel/util/parameters.py", line 51, in edit_readonly yield File "", line 8, in File "/lib/python3.12/site-packages/param/parameterized.py", line 2319, in update restore = dict(self_._update(arg, **kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/lib/python3.12/site-packages/param/parameterized.py", line 2352, in _update self_._batch_call_watchers() File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/param/parameterized.py", line 284, in _batch_call_watchers yield File "/lib/python3.12/site-packages/param/parameterized.py", line 2546, in _batch_call_watchers self_._execute_watcher(watcher, events) File "/lib/python3.12/site-packages/param/parameterized.py", line 2506, in _execute_watcher watcher.fn(*args, **kwargs) File "/lib/python3.12/site-packages/panel/reactive.py", line 376, in _param_change self._apply_update(named_events, properties, model, ref) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/panel/io/document.py", line 371, in unlocked yield File "/lib/python3.12/site-packages/panel/reactive.py", line 304, in _apply_update self._update_model(events, msg, root, model, doc, comm) File "/lib/python3.12/site-packages/panel/reactive.py", line 332, in _update_model model.update(**msg) File "/lib/python3.12/site-packages/bokeh/core/has_props.py", line 485, in update setattr(self, k, v) File "/lib/python3.12/site-packages/bokeh/core/has_props.py", line 338, in __setattr__ return super().__setattr__(name, value) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/lib/python3.12/site-packages/bokeh/core/property/descriptors.py", line 333, in __set__ self._set(obj, old, value, setter=setter) File "/lib/python3.12/site-packages/bokeh/core/property/descriptors.py", line 621, in _set self._trigger(obj, old, value, hint=hint, setter=setter) File "/lib/python3.12/site-packages/bokeh/core/property/descriptors.py", line 699, in _trigger obj.trigger(self.name, old, value, hint, setter) File "/lib/python3.12/site-packages/bokeh/model/model.py", line 571, in trigger super().trigger(descriptor.name, old, new, hint=hint, setter=setter) File "/lib/python3.12/site-packages/bokeh/util/callback_manager.py", line 188, in trigger self.document.callbacks.notify_change(cast(Model, self), attr, old, new, hint, setter, invoke) File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 249, in notify_change self.trigger_on_change(event) File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 413, in trigger_on_change invoke_with_curdoc(doc, invoke_callbacks) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/bokeh/io/doc.py", line 82, in patch_curdoc yield File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 443, in invoke_with_curdoc return f() ^^^ File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 412, in invoke_callbacks cb(event) File "/lib/python3.12/site-packages/panel/io/pyodide.py", line 353, in pysync dispatch_fn(json_patch, pyodide.ffi.to_js(buffer_map), msg_id) File "http://localhost:8000/test/wasm_bw2io_useeio.js", line 4, in sendPatch pyodide.ffi.JsException: DataCloneError: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': [object Map] could not be cloned. at new_error (pyodide.asm.js:10:9965) at pyodide.asm.wasm:0x16dc69 at pyodide.asm.wasm:0x177492 at _PyEM_TrampolineCall_JS (pyodide.asm.js:10:124082) at pyodide.asm.wasm:0x1c2c4c at pyodide.asm.wasm:0x2c79ac at pyodide.asm.wasm:0x20a621 at pyodide.asm.wasm:0x1c3339 at pyodide.asm.wasm:0x1c3648 at pyodide.asm.wasm:0x1c36c6 at pyodide.asm.wasm:0x29e6fa at pyodide.asm.wasm:0x2a4cf1 at pyodide.asm.wasm:0x1c3806 at pyodide.asm.wasm:0x1c346f at pyodide.asm.wasm:0x176af6 at callPyObjectKwargs (pyodide.asm.js:10:62217) at Module.callPyObjectMaybePromising (pyodide.asm.js:10:63465) at wrapper (pyodide.asm.js:10:27093) at Kn.e.port1.onmessage (pyodide.asm.js:10:100342) new_error @ pyodide.asm.js:10 $wrap_exception @ pyodide.asm.wasm:0x16dc69 $FutureDoneCallback_call @ pyodide.asm.wasm:0x177492 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10 await in Kn.e.port1.onmessage self.onmessage @ wasm_bw2io_useeio.js:83Understand this error pyodide.asm.js:10 Refused to set unsafe header "Accept-Encoding" JsvFunction_CallBound @ pyodide.asm.js:10 $JsMethod_Vectorcall_impl @ pyodide.asm.wasm:0x17474b $func340 @ pyodide.asm.wasm:0x170749 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func2593 @ pyodide.asm.wasm:0x226c69 $func2630 @ pyodide.asm.wasm:0x228f07 $_PyObject_GenericSetAttrWithDict @ pyodide.asm.wasm:0x20f5ab $PyObject_GenericSetAttr @ pyodide.asm.wasm:0x20fe70 $PyObject_SetAttr @ pyodide.asm.wasm:0x20eaf3 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a3c9b $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c53b0 $func7335 @ pyodide.asm.wasm:0x420444 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $PyEval_EvalCode @ pyodide.asm.wasm:0x295f35 $func3370 @ pyodide.asm.wasm:0x29378d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29f301 $func1525 @ pyodide.asm.wasm:0x1d928c $func1547 @ pyodide.asm.wasm:0x1da122 $PyIter_Send @ pyodide.asm.wasm:0x1aeea6 $func4997 @ pyodide.asm.wasm:0x345773 $func4995 @ pyodide.asm.wasm:0x3454b8 $func4994 @ pyodide.asm.wasm:0x34548d _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10Understand this error pyodide.asm.js:10 Refused to set unsafe header "Connection" JsvFunction_CallBound @ pyodide.asm.js:10 $JsMethod_Vectorcall_impl @ pyodide.asm.wasm:0x17474b $func340 @ pyodide.asm.wasm:0x170749 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func2593 @ pyodide.asm.wasm:0x226c69 $func2630 @ pyodide.asm.wasm:0x228f07 $_PyObject_GenericSetAttrWithDict @ pyodide.asm.wasm:0x20f5ab $PyObject_GenericSetAttr @ pyodide.asm.wasm:0x20fe70 $PyObject_SetAttr @ pyodide.asm.wasm:0x20eaf3 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a3c9b $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c53b0 $func7335 @ pyodide.asm.wasm:0x420444 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $PyEval_EvalCode @ pyodide.asm.wasm:0x295f35 $func3370 @ pyodide.asm.wasm:0x29378d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29f301 $func1525 @ pyodide.asm.wasm:0x1d928c $func1547 @ pyodide.asm.wasm:0x1da122 $PyIter_Send @ pyodide.asm.wasm:0x1aeea6 $func4997 @ pyodide.asm.wasm:0x345773 $func4995 @ pyodide.asm.wasm:0x3454b8 $func4994 @ pyodide.asm.wasm:0x34548d _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10Understand this error pyodide.asm.js:10 requests can't stream data in the main thread, using non-streaming fallback JsvFunction_CallBound @ pyodide.asm.js:10 $JsMethod_Vectorcall_impl @ pyodide.asm.wasm:0x17474b $func340 @ pyodide.asm.wasm:0x170749 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func2593 @ pyodide.asm.wasm:0x226c69 $func2630 @ pyodide.asm.wasm:0x228f07 $_PyObject_GenericSetAttrWithDict @ pyodide.asm.wasm:0x20f5ab $PyObject_GenericSetAttr @ pyodide.asm.wasm:0x20fe70 $PyObject_SetAttr @ pyodide.asm.wasm:0x20eaf3 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a3c9b $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c53b0 $func7335 @ pyodide.asm.wasm:0x420444 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $PyEval_EvalCode @ pyodide.asm.wasm:0x295f35 $func3370 @ pyodide.asm.wasm:0x29378d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29f301 $func1525 @ pyodide.asm.wasm:0x1d928c $func1547 @ pyodide.asm.wasm:0x1da122 $PyIter_Send @ pyodide.asm.wasm:0x1aeea6 $func4997 @ pyodide.asm.wasm:0x345773 $func4995 @ pyodide.asm.wasm:0x3454b8 $func4994 @ pyodide.asm.wasm:0x34548d _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10Understand this warning pyodide.asm.js:10 Refused to set unsafe header "Accept-Encoding" JsvFunction_CallBound @ pyodide.asm.js:10 $JsMethod_Vectorcall_impl @ pyodide.asm.wasm:0x17474b $func340 @ pyodide.asm.wasm:0x170749 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func2593 @ pyodide.asm.wasm:0x226c69 $func2630 @ pyodide.asm.wasm:0x228f07 $_PyObject_GenericSetAttrWithDict @ pyodide.asm.wasm:0x20f5ab $PyObject_GenericSetAttr @ pyodide.asm.wasm:0x20fe70 $PyObject_SetAttr @ pyodide.asm.wasm:0x20eaf3 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a3c9b $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c53b0 $func7335 @ pyodide.asm.wasm:0x420444 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $PyEval_EvalCode @ pyodide.asm.wasm:0x295f35 $func3370 @ pyodide.asm.wasm:0x29378d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29f301 $func1525 @ pyodide.asm.wasm:0x1d928c $func1547 @ pyodide.asm.wasm:0x1da122 $PyIter_Send @ pyodide.asm.wasm:0x1aeea6 $func4997 @ pyodide.asm.wasm:0x345773 $func4995 @ pyodide.asm.wasm:0x3454b8 $func4994 @ pyodide.asm.wasm:0x34548d _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10Understand this error pyodide.asm.js:10 Refused to set unsafe header "Connection" JsvFunction_CallBound @ pyodide.asm.js:10 $JsMethod_Vectorcall_impl @ pyodide.asm.wasm:0x17474b $func340 @ pyodide.asm.wasm:0x170749 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c52ae $func1140 @ pyodide.asm.wasm:0x1c3370 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func2593 @ pyodide.asm.wasm:0x226c69 $func2630 @ pyodide.asm.wasm:0x228f07 $_PyObject_GenericSetAttrWithDict @ pyodide.asm.wasm:0x20f5ab $PyObject_GenericSetAttr @ pyodide.asm.wasm:0x20fe70 $PyObject_SetAttr @ pyodide.asm.wasm:0x20eaf3 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a3c9b $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c53b0 $func7335 @ pyodide.asm.wasm:0x420444 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $PyEval_EvalCode @ pyodide.asm.wasm:0x295f35 $func3370 @ pyodide.asm.wasm:0x29378d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29f301 $func1525 @ pyodide.asm.wasm:0x1d928c $func1547 @ pyodide.asm.wasm:0x1da122 $PyIter_Send @ pyodide.asm.wasm:0x1aeea6 $func4997 @ pyodide.asm.wasm:0x345773 $func4995 @ pyodide.asm.wasm:0x3454b8 $func4994 @ pyodide.asm.wasm:0x34548d _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10Understand this error pyodide.asm.js:10 Downloading USEEIO-1.1.tar.gz to /home/pyodide/.local/share/Brightway3/bw2io_cache_dir/USEEIO-1.1.tar.gz pyodide.asm.js:10 /lib/python3.12/site-packages/bw2io/download_utils.py:73: TqdmMonitorWarning: tqdm:disabling monitor support (monitor_interval = 0) due to: batched @ pyodide.asm.js:10 write @ pyodide.asm.js:10 (anonymous) @ pyodide.asm.js:10 handleEAGAIN @ pyodide.asm.js:10 readWriteHelper @ pyodide.asm.js:10 write @ pyodide.asm.js:10 write @ pyodide.asm.js:10 doWritev @ pyodide.asm.js:10 _fd_write @ pyodide.asm.js:10 $write @ pyodide.asm.wasm:0x4b9fee $_Py_write @ pyodide.asm.wasm:0x326184 $func6860 @ pyodide.asm.wasm:0x3f5108 $func1316 @ pyodide.asm.wasm:0x1ce2fa $PyObject_VectorcallMethod @ pyodide.asm.wasm:0x1c41ff $func6928 @ pyodide.asm.wasm:0x3f85f8 $func6926 @ pyodide.asm.wasm:0x3f8375 $func6924 @ pyodide.asm.wasm:0x3f8082 $func6955 @ pyodide.asm.wasm:0x3fb083 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $func1313 @ pyodide.asm.wasm:0x1ce02f $PyObject_VectorcallMethod @ pyodide.asm.wasm:0x1c41ff $func7003 @ pyodide.asm.wasm:0x4005c1 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29ecbf $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_CallOneArg @ pyodide.asm.wasm:0x1c3731 $func3174 @ pyodide.asm.wasm:0x26aaa8 $func3170 @ pyodide.asm.wasm:0x269cf4 $func3181 @ pyodide.asm.wasm:0x26b463 $func2165 @ pyodide.asm.wasm:0x20a621 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $_PyObject_FastCallDictTstate @ pyodide.asm.wasm:0x1c2d63 $_PyObject_Call_Prepend @ pyodide.asm.wasm:0x1c3a27 $func2635 @ pyodide.asm.wasm:0x229215 $func2565 @ pyodide.asm.wasm:0x223402 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c345d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func2593 @ pyodide.asm.wasm:0x226c69 $func2630 @ pyodide.asm.wasm:0x228f07 $_PyObject_GenericSetAttrWithDict @ pyodide.asm.wasm:0x20f5ab $PyObject_GenericSetAttr @ pyodide.asm.wasm:0x20fe70 $PyObject_SetAttr @ pyodide.asm.wasm:0x20eaf3 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a3c9b $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c53b0 $func7335 @ pyodide.asm.wasm:0x420444 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $PyEval_EvalCode @ pyodide.asm.wasm:0x295f35 $func3370 @ pyodide.asm.wasm:0x29378d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29f301 $func1525 @ pyodide.asm.wasm:0x1d928c $func1547 @ pyodide.asm.wasm:0x1da122 $PyIter_Send @ pyodide.asm.wasm:0x1aeea6 $func4997 @ pyodide.asm.wasm:0x345773 $func4995 @ pyodide.asm.wasm:0x3454b8 $func4994 @ pyodide.asm.wasm:0x34548d _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10Understand this warning pyodide.asm.js:10 can't start new thread batched @ pyodide.asm.js:10 write @ pyodide.asm.js:10 (anonymous) @ pyodide.asm.js:10 handleEAGAIN @ pyodide.asm.js:10 readWriteHelper @ pyodide.asm.js:10 write @ pyodide.asm.js:10 write @ pyodide.asm.js:10 doWritev @ pyodide.asm.js:10 _fd_write @ pyodide.asm.js:10 $write @ pyodide.asm.wasm:0x4b9fee $_Py_write @ pyodide.asm.wasm:0x326184 $func6860 @ pyodide.asm.wasm:0x3f5108 $func1316 @ pyodide.asm.wasm:0x1ce2fa $PyObject_VectorcallMethod @ pyodide.asm.wasm:0x1c41ff $func6928 @ pyodide.asm.wasm:0x3f85f8 $func6926 @ pyodide.asm.wasm:0x3f8375 $func6924 @ pyodide.asm.wasm:0x3f8082 $func6955 @ pyodide.asm.wasm:0x3fb083 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $func1313 @ pyodide.asm.wasm:0x1ce02f $PyObject_VectorcallMethod @ pyodide.asm.wasm:0x1c41ff $func7003 @ pyodide.asm.wasm:0x4005c1 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29ecbf $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_CallOneArg @ pyodide.asm.wasm:0x1c3731 $func3174 @ pyodide.asm.wasm:0x26aaa8 $func3170 @ pyodide.asm.wasm:0x269cf4 $func3181 @ pyodide.asm.wasm:0x26b463 $func2165 @ pyodide.asm.wasm:0x20a621 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $_PyObject_FastCallDictTstate @ pyodide.asm.wasm:0x1c2d63 $_PyObject_Call_Prepend @ pyodide.asm.wasm:0x1c3a27 $func2635 @ pyodide.asm.wasm:0x229215 $func2565 @ pyodide.asm.wasm:0x223402 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c345d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func2593 @ pyodide.asm.wasm:0x226c69 $func2630 @ pyodide.asm.wasm:0x228f07 $_PyObject_GenericSetAttrWithDict @ pyodide.asm.wasm:0x20f5ab $PyObject_GenericSetAttr @ pyodide.asm.wasm:0x20fe70 $PyObject_SetAttr @ pyodide.asm.wasm:0x20eaf3 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a3c9b $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c53b0 $func7335 @ pyodide.asm.wasm:0x420444 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $PyEval_EvalCode @ pyodide.asm.wasm:0x295f35 $func3370 @ pyodide.asm.wasm:0x29378d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29f301 $func1525 @ pyodide.asm.wasm:0x1d928c $func1547 @ pyodide.asm.wasm:0x1da122 $PyIter_Send @ pyodide.asm.wasm:0x1aeea6 $func4997 @ pyodide.asm.wasm:0x345773 $func4995 @ pyodide.asm.wasm:0x3454b8 $func4994 @ pyodide.asm.wasm:0x34548d _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10Understand this warning pyodide.asm.js:10 with tqdm(total=total_length) as pbar: batched @ pyodide.asm.js:10 write @ pyodide.asm.js:10 (anonymous) @ pyodide.asm.js:10 handleEAGAIN @ pyodide.asm.js:10 readWriteHelper @ pyodide.asm.js:10 write @ pyodide.asm.js:10 write @ pyodide.asm.js:10 doWritev @ pyodide.asm.js:10 _fd_write @ pyodide.asm.js:10 $write @ pyodide.asm.wasm:0x4b9fee $_Py_write @ pyodide.asm.wasm:0x326184 $func6860 @ pyodide.asm.wasm:0x3f5108 $func1316 @ pyodide.asm.wasm:0x1ce2fa $PyObject_VectorcallMethod @ pyodide.asm.wasm:0x1c41ff $func6928 @ pyodide.asm.wasm:0x3f85f8 $func6926 @ pyodide.asm.wasm:0x3f8375 $func6924 @ pyodide.asm.wasm:0x3f8082 $func6955 @ pyodide.asm.wasm:0x3fb083 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $func1313 @ pyodide.asm.wasm:0x1ce02f $PyObject_VectorcallMethod @ pyodide.asm.wasm:0x1c41ff $func7003 @ pyodide.asm.wasm:0x4005c1 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29ecbf $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_CallOneArg @ pyodide.asm.wasm:0x1c3731 $func3174 @ pyodide.asm.wasm:0x26aaa8 $func3170 @ pyodide.asm.wasm:0x269cf4 $func3181 @ pyodide.asm.wasm:0x26b463 $func2165 @ pyodide.asm.wasm:0x20a621 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $_PyObject_FastCallDictTstate @ pyodide.asm.wasm:0x1c2d63 $_PyObject_Call_Prepend @ pyodide.asm.wasm:0x1c3a27 $func2635 @ pyodide.asm.wasm:0x229215 $func2565 @ pyodide.asm.wasm:0x223402 _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c345d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func2593 @ pyodide.asm.wasm:0x226c69 $func2630 @ pyodide.asm.wasm:0x228f07 $_PyObject_GenericSetAttrWithDict @ pyodide.asm.wasm:0x20f5ab $PyObject_GenericSetAttr @ pyodide.asm.wasm:0x20fe70 $PyObject_SetAttr @ pyodide.asm.wasm:0x20eaf3 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a3c9b $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $func1192 @ pyodide.asm.wasm:0x1c53b0 $func7335 @ pyodide.asm.wasm:0x420444 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x2a0457 $PyEval_EvalCode @ pyodide.asm.wasm:0x295f35 $func3370 @ pyodide.asm.wasm:0x29378d $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29f301 $func1525 @ pyodide.asm.wasm:0x1d928c $func1547 @ pyodide.asm.wasm:0x1da122 $PyIter_Send @ pyodide.asm.wasm:0x1aeea6 $func4997 @ pyodide.asm.wasm:0x345773 $func4995 @ pyodide.asm.wasm:0x3454b8 $func4994 @ pyodide.asm.wasm:0x34548d _PyEM_TrampolineCall_JS @ pyodide.asm.js:10 $_PyObject_MakeTpCall @ pyodide.asm.wasm:0x1c2c4c $func3600 @ pyodide.asm.wasm:0x2c79ac $func2165 @ pyodide.asm.wasm:0x20a621 $func1140 @ pyodide.asm.wasm:0x1c3339 $_PyObject_Call @ pyodide.asm.wasm:0x1c3648 $PyObject_Call @ pyodide.asm.wasm:0x1c36c6 $_PyEval_EvalFrameDefault @ pyodide.asm.wasm:0x29e6fa $func3407 @ pyodide.asm.wasm:0x2a4cf1 $_PyFunction_Vectorcall @ pyodide.asm.wasm:0x1c3806 $PyObject_Vectorcall @ pyodide.asm.wasm:0x1c346f $_pyproxy_apply @ pyodide.asm.wasm:0x176af6 callPyObjectKwargs @ pyodide.asm.js:10 Module.callPyObjectMaybePromising @ pyodide.asm.js:10 wrapper @ pyodide.asm.js:10 Kn.e.port1.onmessage @ pyodide.asm.js:10Understand this warning pyodide.asm.js:10 0%| | 0/15915413 [00:00", line 3, in File "/lib/python3.12/site-packages/bokeh/document/document.py", line 391, in apply_json_patch DocumentPatchedEvent.handle_event(self, event, setter) File "/lib/python3.12/site-packages/bokeh/document/events.py", line 245, in handle_event event_cls._handle_event(doc, event) File "/lib/python3.12/site-packages/bokeh/document/events.py", line 280, in _handle_event cb(event.msg_data) File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 390, in trigger_event model._trigger_event(event) File "/lib/python3.12/site-packages/bokeh/util/callback_manager.py", line 113, in _trigger_event self.document.callbacks.notify_event(cast(Model, self), event, invoke) File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 260, in notify_event invoke_with_curdoc(doc, callback_invoker) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/bokeh/io/doc.py", line 82, in patch_curdoc yield File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 443, in invoke_with_curdoc return f() ^^^ File "/lib/python3.12/site-packages/bokeh/util/callback_manager.py", line 109, in invoke cast(EventCallbackWithEvent, callback)(event) File "/lib/python3.12/site-packages/panel/reactive.py", line 498, in _server_event self._comm_event(doc, event) File "/lib/python3.12/site-packages/panel/reactive.py", line 485, in _comm_event state._handle_exception(e) File "/lib/python3.12/site-packages/panel/io/state.py", line 458, in _handle_exception raise exception File "/lib/python3.12/site-packages/panel/reactive.py", line 483, in _comm_event self._process_bokeh_event(doc, event) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/panel/io/state.py", line 67, in set_curdoc yield File "/lib/python3.12/site-packages/panel/reactive.py", line 420, in _process_bokeh_event self._process_event(event) File "/lib/python3.12/site-packages/panel/widgets/button.py", line 243, in _process_event self.clicks += 1 ^^^^^^^^^^^ File "/lib/python3.12/site-packages/param/parameterized.py", line 528, in _f instance_param.__set__(obj, val) File "/lib/python3.12/site-packages/param/parameterized.py", line 530, in _f return f(self, obj, val) ^^^^^^^^^^^^^^^^^ File "/lib/python3.12/site-packages/param/parameters.py", line 543, in __set__ super().__set__(obj,val) File "/lib/python3.12/site-packages/param/parameterized.py", line 530, in _f return f(self, obj, val) ^^^^^^^^^^^^^^^^^ File "/lib/python3.12/site-packages/param/parameterized.py", line 1553, in __set__ obj.param._call_watcher(watcher, event) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/param/parameterized.py", line 284, in _batch_call_watchers yield File "/lib/python3.12/site-packages/param/parameterized.py", line 2526, in _call_watcher self_._execute_watcher(watcher, (event,)) File "/lib/python3.12/site-packages/param/parameterized.py", line 2506, in _execute_watcher watcher.fn(*args, **kwargs) File "", line 38, in perform_lca File "/lib/python3.12/site-packages/param/parameterized.py", line 528, in _f instance_param.__set__(obj, val) File "/lib/python3.12/site-packages/param/parameterized.py", line 530, in _f return f(self, obj, val) ^^^^^^^^^^^^^^^^^ File "/lib/python3.12/site-packages/param/parameters.py", line 543, in __set__ super().__set__(obj,val) File "/lib/python3.12/site-packages/param/parameterized.py", line 530, in _f return f(self, obj, val) ^^^^^^^^^^^^^^^^^ File "/lib/python3.12/site-packages/param/parameterized.py", line 1553, in __set__ obj.param._call_watcher(watcher, event) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/param/parameterized.py", line 284, in _batch_call_watchers yield File "/lib/python3.12/site-packages/param/parameterized.py", line 2526, in _call_watcher self_._execute_watcher(watcher, (event,)) File "/lib/python3.12/site-packages/param/parameterized.py", line 2506, in _execute_watcher watcher.fn(*args, **kwargs) File "/lib/python3.12/site-packages/panel/reactive.py", line 376, in _param_change self._apply_update(named_events, properties, model, ref) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/panel/io/document.py", line 371, in unlocked yield File "/lib/python3.12/site-packages/panel/reactive.py", line 304, in _apply_update self._update_model(events, msg, root, model, doc, comm) File "/lib/python3.12/site-packages/panel/reactive.py", line 627, in _update_model super()._update_model(events, msg, root, model, doc, comm) File "/lib/python3.12/site-packages/panel/reactive.py", line 332, in _update_model model.update(**msg) File "/lib/python3.12/site-packages/bokeh/core/has_props.py", line 485, in update setattr(self, k, v) File "/lib/python3.12/site-packages/bokeh/core/has_props.py", line 338, in __setattr__ return super().__setattr__(name, value) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/lib/python3.12/site-packages/bokeh/core/property/descriptors.py", line 333, in __set__ self._set(obj, old, value, setter=setter) File "/lib/python3.12/site-packages/bokeh/core/property/descriptors.py", line 621, in _set self._trigger(obj, old, value, hint=hint, setter=setter) File "/lib/python3.12/site-packages/bokeh/core/property/descriptors.py", line 699, in _trigger obj.trigger(self.name, old, value, hint, setter) File "/lib/python3.12/site-packages/bokeh/model/model.py", line 571, in trigger super().trigger(descriptor.name, old, new, hint=hint, setter=setter) File "/lib/python3.12/site-packages/bokeh/util/callback_manager.py", line 188, in trigger self.document.callbacks.notify_change(cast(Model, self), attr, old, new, hint, setter, invoke) File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 249, in notify_change self.trigger_on_change(event) File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 413, in trigger_on_change invoke_with_curdoc(doc, invoke_callbacks) File "/lib/python312.zip/contextlib.py", line 158, in __exit__ self.gen.throw(value) File "/lib/python3.12/site-packages/bokeh/io/doc.py", line 82, in patch_curdoc yield File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 443, in invoke_with_curdoc return f() ^^^ File "/lib/python3.12/site-packages/bokeh/document/callbacks.py", line 412, in invoke_callbacks cb(event) File "/lib/python3.12/site-packages/panel/io/pyodide.py", line 353, in pysync dispatch_fn(json_patch, pyodide.ffi.to_js(buffer_map), msg_id) File "http://localhost:8000/test/wasm_bw2io_useeio.js", line 4, in sendPatch pyodide.ffi.JsException: DataCloneError: Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope': [object Map] could not be cloned. at new_error (pyodide.asm.js:10:9965) at pyodide.asm.wasm:0x16dc69 at pyodide.asm.wasm:0x177492 at _PyEM_TrampolineCall_JS (pyodide.asm.js:10:124082) at pyodide.asm.wasm:0x1c2c4c at pyodide.asm.wasm:0x2c79ac at pyodide.asm.wasm:0x20a621 at pyodide.asm.wasm:0x1c3339 at pyodide.asm.wasm:0x1c3648 at pyodide.asm.wasm:0x1c36c6 at pyodide.asm.wasm:0x29e6fa at pyodide.asm.wasm:0x2a4cf1 at pyodide.asm.wasm:0x1c3806 at pyodide.asm.wasm:0x1c346f at pyodide.asm.wasm:0x176af6 at callPyObjectKwargs (pyodide.asm.js:10:62217) at Module.callPyObjectMaybePromising (pyodide.asm.js:10:63465) at wrapper (pyodide.asm.js:10:27093) at Kn.e.port1.onmessage (pyodide.asm.js:10:100342) ```

Screenshots or screencasts of the bug in action

Proof of the calculations working fine on a JupyterLite Pyodide kernel:

Screenshot 2024-09-04 at 16 07 55 Screenshot 2024-09-04 at 16 23 11
michaelweinold commented 1 month ago

...potentially related:

philippjfr commented 1 month ago

I believe the data clone error is fixed on main, I'll tag a Panel 1.5.0 RC1 release later today you can try.