MCPcopy
hub / github.com/pyodide/pyodide / check

Function check

src/tests/test_jsproxy.py:2886–2920  ·  view source on GitHub ↗
(*args, **kwargs)

Source from the content-addressed store, hash-verified

2884 f = run_js("(...args) => pyodide.toPy(args)").bind_sig(func)
2885
2886 def check(*args, **kwargs):
2887 err = None
2888 try:
2889 try:
2890 func(*args, **kwargs)
2891 except TypeError as e:
2892 err = e
2893
2894 if err:
2895 with pytest.raises(TypeError) as e:
2896 f(*args, **kwargs)
2897 assert e.value.args[0] == err.args[0]
2898 return
2899
2900 sig = signature(func)
2901 # rename positional parameters to work around bug in bind
2902 # https://github.com/python/cpython/issues/87106
2903 new_params = []
2904 for p in sig.parameters.values():
2905 if p.kind == Parameter.POSITIONAL_ONLY:
2906 p = p.replace(name=f"__{p.name}")
2907 new_params.append(p)
2908 sig = sig.replace(parameters=new_params)
2909 res = sig.bind(*args, **kwargs)
2910 res.apply_defaults()
2911 expected = [*res.args]
2912 reskwargs = dict(res.kwargs)
2913 if reskwargs:
2914 expected.append(reskwargs)
2915 for k, v in list(reskwargs.items()):
2916 if v is None:
2917 del reskwargs[k]
2918 assert f(*args, **kwargs) == expected
2919 finally:
2920 err = None
2921
2922 check()
2923 check(1)

Callers 1

test_bind_arg_checkingFunction · 0.70

Calls 6

fFunction · 0.90
bindMethod · 0.80
itemsMethod · 0.80
funcFunction · 0.70
valuesMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…