From cdd84b4fe4c5d750c2786503666b7d77d789f2e2 Mon Sep 17 00:00:00 2001 From: Derrick Gilland Date: Mon, 4 Nov 2024 09:03:53 -0500 Subject: [PATCH] fix: handle empty keys and values in zip_object and zip_object_deep Fixes #235 --- src/pydash/arrays.py | 15 +++++++++++---- tests/test_arrays.py | 5 +++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/pydash/arrays.py b/src/pydash/arrays.py index fc393bb..2bc3bc9 100644 --- a/src/pydash/arrays.py +++ b/src/pydash/arrays.py @@ -2694,9 +2694,12 @@ def zip_object(keys, values=None): .. versionchanged:: 4.0.0 Removed alias ``object_``. """ - if values is None: - keys, values = unzip(keys) + keys_values = unzip(keys) + if len(keys_values) == 0: + keys, values = [], [] + else: + keys, values = keys_values return dict(zip(keys, values)) @@ -2722,8 +2725,12 @@ def zip_object_deep( .. versionadded:: 4.0.0 """ - if values is None: # pragma: no cover - keys, values = unzip(keys) + if values is None: + keys_values = unzip(keys) + if len(keys_values) == 0: + keys, values = [], [] + else: + keys, values = keys_values obj: t.Dict[t.Any, t.Any] = {} for idx, key in enumerate(keys): diff --git a/tests/test_arrays.py b/tests/test_arrays.py index a0070cf..fe65d84 100644 --- a/tests/test_arrays.py +++ b/tests/test_arrays.py @@ -915,6 +915,8 @@ def test_zip_(case, expected): [ ((["moe", "larry"], [30, 40]), {"moe": 30, "larry": 40}), (([["moe", 30], ["larry", 40]],), {"moe": 30, "larry": 40}), + (([],), {}), + (([], []), {}), ], ) def test_zip_object(case, expected): @@ -925,7 +927,10 @@ def test_zip_object(case, expected): "case,expected", [ ((["a.b.c", "a.b.d"], [1, 2]), {"a": {"b": {"c": 1, "d": 2}}}), + (([["a.b.c", 1], ["a.b.d", 2]],), {"a": {"b": {"c": 1, "d": 2}}}), ((["a.b[0].c", "a.b[1].d"], [1, 2]), {"a": {"b": [{"c": 1}, {"d": 2}]}}), + (([],), {}), + (([], []), {}), ], ) def test_zip_object_deep(case, expected):