MCPcopy
hub / github.com/pyodide/pyodide / test_pyproxy_dict

Function test_pyproxy_dict

src/tests/test_pyproxy.py:2758–2803  ·  view source on GitHub ↗
(selenium)

Source from the content-addressed store, hash-verified

2756
2757@run_in_pyodide
2758def test_pyproxy_dict(selenium):
2759 from pyodide.code import run_js
2760
2761 get = run_js("(d, key) => d[key]")
2762 d = {
2763 1: "int",
2764 "1": "string",
2765 2: "int",
2766 "3": "string",
2767 "items": "some value",
2768 "$dollar": 8,
2769 "$$dollar": 9,
2770 (1, 2, 3): 12,
2771 }
2772 assert get(d, 1) == "string"
2773 assert get(d, 2) == "int"
2774 assert len(list(get(d, "items")())) == 8
2775 assert get(d, "$dollar") == 8
2776 assert get(d, "$$dollar") == 9
2777 run_js("(d) => console.log(Reflect.ownKeys(d))")(d)
2778 keys = set(
2779 run_js("(d) => Reflect.ownKeys(d).filter(x => typeof x !== 'symbol')")(d)
2780 )
2781 assert keys >= {"1", "2", "keys", "values", "items", "$dollar", "$$dollar"}
2782 set_ = run_js("(d, key, value) => d[key] = value")
2783 assert set_(d, 1, 7)
2784 assert d["1"] == 7
2785 assert d[1] == "int"
2786 assert set_(d, 2, 99)
2787 assert d[2] == 99
2788 assert "2" not in d
2789 assert set_(d, 3, 27)
2790 assert d["3"] == 27
2791 assert 3 not in d
2792 delete = run_js("(d, key, value) => delete d[key]")
2793 assert delete(d, 1)
2794 assert 1 in d
2795 assert "1" not in d
2796 assert delete(d, 1)
2797 assert 1 not in d
2798 assert "1" not in d
2799 delete(d, 1)
2800 delete(d, 2)
2801 assert 2 not in d
2802 delete(d, 3)
2803 assert "3" not in d
2804
2805
2806@pytest.mark.xfail_browsers(safari="No support for Symbol.dispose yet")

Callers

nothing calls this directly

Calls 4

run_jsFunction · 0.90
setFunction · 0.85
deleteFunction · 0.85
getFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…