From 82fc0906c7c38f0038d07e64fad0f88f5fcdc93b Mon Sep 17 00:00:00 2001 From: Alexis Jeandet Date: Fri, 5 Dec 2025 10:29:06 +0100 Subject: [PATCH] Add PyCDFpp package --- packages/pycdfpp/meta.yaml | 20 ++++++++++++++++++ .../mms1_asp1_srvy_l1b_beam_00000000_v01.cdf | Bin 0 -> 4667 bytes packages/pycdfpp/test_pycdfpp.py | 13 ++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 packages/pycdfpp/meta.yaml create mode 100644 packages/pycdfpp/test_data/mms1_asp1_srvy_l1b_beam_00000000_v01.cdf create mode 100644 packages/pycdfpp/test_pycdfpp.py diff --git a/packages/pycdfpp/meta.yaml b/packages/pycdfpp/meta.yaml new file mode 100644 index 00000000..f20d344d --- /dev/null +++ b/packages/pycdfpp/meta.yaml @@ -0,0 +1,20 @@ +package: + name: pycdfpp + version: 0.8.5 + top-level: + - pycdfpp +source: + url: https://files.pythonhosted.org/packages/37/08/2b352c2c04028465a242b7fdca069718f235033d423e8c27f77623fe53ec/pycdfpp-0.8.5.tar.gz + sha256: 6f9116f0446fe5e9d32234ee447e52c564db20055d89576b6d6f3119007d481e +requirements: + run: + - numpy + - pyyaml +about: + home: https://github.com/SciQLop/CDFpp + PyPI: https://pypi.org/project/pycdfpp + summary: "A modern C++ header only cdf library with Python bindings" + license: MIT +extra: + recipe-maintainers: + - jeandet diff --git a/packages/pycdfpp/test_data/mms1_asp1_srvy_l1b_beam_00000000_v01.cdf b/packages/pycdfpp/test_data/mms1_asp1_srvy_l1b_beam_00000000_v01.cdf new file mode 100644 index 0000000000000000000000000000000000000000..d918031e3d2b1609de13a0e94f55940b8a1846fa GIT binary patch literal 4667 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 Pbfj_l-_FH#5!L?zJk|FA literal 0 HcmV?d00001 diff --git a/packages/pycdfpp/test_pycdfpp.py b/packages/pycdfpp/test_pycdfpp.py new file mode 100644 index 00000000..22ae1110 --- /dev/null +++ b/packages/pycdfpp/test_pycdfpp.py @@ -0,0 +1,13 @@ +from pytest_pyodide import run_in_pyodide +from pytest_pyodide.decorator import copy_files_to_pyodide +import pathlib + + +_FILE_PATH = str(pathlib.Path(__file__).parent / "test_data" / "mms1_asp1_srvy_l1b_beam_00000000_v01.cdf") + +@copy_files_to_pyodide(file_list=[(_FILE_PATH,"mms1_asp1_srvy_l1b_beam_00000000_v01.cdf")]) +@run_in_pyodide(packages=["pycdfpp"]) +def test_pycdfpp(selenium): + import pycdfpp + cdf = pycdfpp.load("mms1_asp1_srvy_l1b_beam_00000000_v01.cdf") + assert 'mms1_asp_epoch' in cdf