def test_numpy(selenium): selenium.load_package("numpy") selenium.run("import numpy") selenium.run("x = numpy.ones((32, 64))") assert selenium.run_js("return pyodide.pyimport('x').length == 32") for i in range(32): assert selenium.run_js(f"return pyodide.pyimport('x')[{i}].length == 64") for j in range(64): assert selenium.run_js(f"return pyodide.pyimport('x')[{i}][{j}] == 1") def test_typed_arrays(selenium): selenium.load_package("numpy") selenium.run("import numpy") for (jstype, npytype) in ( ("Int8Array", "int8"), ("Uint8Array", "uint8"), ("Uint8ClampedArray", "uint8"), ("Int16Array", "int16"), ("Uint16Array", "uint16"), ("Int32Array", "int32"), ("Uint32Array", "uint32"), ("Float32Array", "float32"), ("Float64Array", "float64"), ): print(jstype, npytype) selenium.run_js(f"window.array = new {jstype}([1, 2, 3, 4]);\n") assert selenium.run( "from js import array\n" "npyarray = numpy.asarray(array)\n" f'npyarray.dtype.name == "{npytype}" ' "and npyarray == [1, 2, 3, 4]" )