diff --git a/docs/project/changelog.md b/docs/project/changelog.md index d690126ab..101402deb 100644 --- a/docs/project/changelog.md +++ b/docs/project/changelog.md @@ -108,7 +108,7 @@ myst: deprecation {pr}`3635`, cachetools {pr}`3635`, xyzservices {pr}`3786`, simplejson {pr}`3801`, protobuf {pr}`3813`, peewee {pr}`3897`, Cartopy {pr}`3909`, pyshp {pr}`3909`, netCDF4 {pr}`3910`, igraph {pr}`3991`, - CoolProp {pr}`4028`, contourpy {pr}`4102`. + CoolProp {pr}`4028`, contourpy {pr}`4102`, awkward-cpp {pr}`4101`. - Upgraded libmpfr to 4.2.0 {pr}`3756`. - Upgraded scipy to 1.11.1 {pr}`3794`, {pr}`3996` - Upgraded scikit-image to 0.21 {pr}`3874` diff --git a/packages/awkward-cpp/meta.yaml b/packages/awkward-cpp/meta.yaml new file mode 100644 index 000000000..35233949d --- /dev/null +++ b/packages/awkward-cpp/meta.yaml @@ -0,0 +1,27 @@ +package: + name: awkward-cpp + version: 22 + top-level: + - awkward_cpp + +source: + url: https://files.pythonhosted.org/packages/8b/f8/97efcc2d52e2f9967f9beed86ed6736fc6eed91eb2d974a1bdc8c438146d/awkward-cpp-22.tar.gz + sha256: 21679636fb21cfe3715f88a32326a579199384db2da4a62995c310502d7fe85f + +build: + script: | + export CMAKE_ARGS="${CMAKE_ARGS} -DEMSCRIPTEN=1" + exports: whole_archive + +requirements: + run: + - numpy + +test: + imports: + - awkward_cpp + +about: + home: https://pypi.org/project/awkward-cpp/ + summary: CPU kernels and compiled extensions for Awkward Array + license: BSD-3-Clause diff --git a/packages/awkward-cpp/test_awkward_cpp.py b/packages/awkward-cpp/test_awkward_cpp.py new file mode 100644 index 000000000..e6d120886 --- /dev/null +++ b/packages/awkward-cpp/test_awkward_cpp.py @@ -0,0 +1,27 @@ +from pytest_pyodide import run_in_pyodide + + +@run_in_pyodide(packages=["awkward-cpp"]) +def test_awkward_cpp(selenium): + # Test a single kernel + import ctypes + + import numpy as np + from awkward_cpp.cpu_kernels import lib + + num_null = np.array([123], dtype=np.int64) + mask = np.array([1, 1, 0, 1, 1, 0], dtype=np.int8) + length = 6 + valid_when = True + + kernel_impl = lib.awkward_ByteMaskedArray_numnull + args = [ + ctypes.cast(num_null.ctypes, kernel_impl.argtypes[0]), # type: ignore[arg-type] + ctypes.cast(mask.ctypes, kernel_impl.argtypes[1]), # type: ignore[arg-type] + length, + valid_when, + ] + + ret_pass = kernel_impl(*args) + assert ret_pass.str is None + assert num_null[0] == 2