From 06521cf006bc74dd9416203b1b4e58d39a64c9c8 Mon Sep 17 00:00:00 2001 From: Seth Michael Larson Date: Mon, 20 Apr 2020 12:54:05 -0500 Subject: [PATCH] [7.x] Allow for passing params=None or headers=None --- elasticsearch/client/utils.py | 14 ++++++-------- test_elasticsearch/test_client/test_utils.py | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/elasticsearch/client/utils.py b/elasticsearch/client/utils.py index 90a6a7d4..d2f37e47 100644 --- a/elasticsearch/client/utils.py +++ b/elasticsearch/client/utils.py @@ -68,14 +68,12 @@ def query_params(*es_query_params): def _wrapper(func): @wraps(func) def _wrapped(*args, **kwargs): - params = {} - headers = {} - if "params" in kwargs: - params = kwargs.pop("params").copy() - if "headers" in kwargs: - headers = { - k.lower(): v for k, v in (kwargs.pop("headers") or {}).items() - } + params = (kwargs.pop("params", None) or {}).copy() + headers = { + k.lower(): v + for k, v in (kwargs.pop("headers", None) or {}).copy().items() + } + if "opaque_id" in kwargs: headers["x-opaque-id"] = kwargs.pop("opaque_id") diff --git a/test_elasticsearch/test_client/test_utils.py b/test_elasticsearch/test_client/test_utils.py index 8e350c98..f73f8909 100644 --- a/test_elasticsearch/test_client/test_utils.py +++ b/test_elasticsearch/test_client/test_utils.py @@ -42,6 +42,22 @@ class TestQueryParams(TestCase): self.calls, [((), {"params": {}, "headers": {"x-opaque-id": "request-id"}})] ) + def test_handles_empty_none_and_normalization(self): + self.func_to_wrap(params=None) + self.assertEqual(self.calls[-1], ((), {"params": {}, "headers": {}})) + + self.func_to_wrap(headers=None) + self.assertEqual(self.calls[-1], ((), {"params": {}, "headers": {}})) + + self.func_to_wrap(headers=None, params=None) + self.assertEqual(self.calls[-1], ((), {"params": {}, "headers": {}})) + + self.func_to_wrap(headers={}, params={}) + self.assertEqual(self.calls[-1], ((), {"params": {}, "headers": {}})) + + self.func_to_wrap(headers={"X": "y"}) + self.assertEqual(self.calls[-1], ((), {"params": {}, "headers": {"x": "y"}})) + class TestMakePath(TestCase): def test_handles_unicode(self):