From f61240ed2c07bd8cf8cd314545125460924f0f6c Mon Sep 17 00:00:00 2001 From: Anas Khan <83116240+anxkhn@users.noreply.github.com> Date: Sat, 4 Apr 2026 23:51:24 +0530 Subject: [PATCH] Add segno recipe and runtime tests Add a new segno package recipe in pyodide-recipes and include browser runtime tests for QR generation, micro QR detection, structured append, and serialization. --- packages/segno/meta.yaml | 19 ++++++++++++++++++ packages/segno/test_segno.py | 37 ++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 packages/segno/meta.yaml create mode 100644 packages/segno/test_segno.py diff --git a/packages/segno/meta.yaml b/packages/segno/meta.yaml new file mode 100644 index 00000000..84168be7 --- /dev/null +++ b/packages/segno/meta.yaml @@ -0,0 +1,19 @@ +package: + name: segno + version: 1.6.6 + top-level: + - segno +source: + url: https://files.pythonhosted.org/packages/py3/s/segno/segno-1.6.6-py3-none-any.whl + sha256: 28c7d081ed0cf935e0411293a465efd4d500704072cdb039778a2ab8736190c7 +about: + home: https://github.com/heuer/segno/ + PyPI: https://pypi.org/project/segno + summary: QR Code and Micro QR Code generator for Python + license: BSD-3-Clause +test: + imports: + - segno +extra: + recipe-maintainers: + - anxkhn diff --git a/packages/segno/test_segno.py b/packages/segno/test_segno.py new file mode 100644 index 00000000..68fa7247 --- /dev/null +++ b/packages/segno/test_segno.py @@ -0,0 +1,37 @@ +from pytest_pyodide import run_in_pyodide + + +@run_in_pyodide(packages=["segno"]) +def test_segno_make_and_serialize(selenium_standalone): + import io + + import segno + + qr = segno.make("https://pyodide.org", micro=False, error="m") + assert qr.is_micro is False + assert qr.error in {"M", "Q", "H"} + + svg = io.BytesIO() + png = io.BytesIO() + txt = io.StringIO() + + qr.save(svg, kind="svg") + qr.save(png, kind="png", scale=2) + qr.save(txt, kind="txt", border=1) + + assert b" 0 + + +@run_in_pyodide(packages=["segno"]) +def test_segno_sequence_and_micro(selenium_standalone): + import segno + + micro = segno.make("RAIN") + assert micro.is_micro is True + assert micro.designator.startswith("M") + + sequence = segno.make_sequence("Day after day, alone on the hill", symbol_count=2) + assert len(sequence) == 2 + assert all(item.is_micro is False for item in sequence)