From 73477b402ce9ac7a66a872bccaff9dadda80c4dd Mon Sep 17 00:00:00 2001 From: Didi Bar-Zev Date: Wed, 17 Jun 2020 12:14:18 +0300 Subject: [PATCH 1/2] Avoid using a mutable default value as an argument --- formation/for_requests.py | 8 +++++--- formation/formation.py | 3 ++- formation/middleware/breaker.py | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/formation/for_requests.py b/formation/for_requests.py index 1c60e7b..e057360 100644 --- a/formation/for_requests.py +++ b/formation/for_requests.py @@ -138,12 +138,14 @@ def text_response(ctx): return res.text, res.status_code, res.headers -def build_sender(middleware=[], base_uri=None, default_response_as=None): +def build_sender(middleware=None, base_uri=None, default_response_as=None): + middleware = middleware or [] wrapped = wrap(requests_adapter, middleware=middleware) - def sender(method, url, session_context={}, params={}, response_as=None, **kwargs): + def sender(method, url, session_context=None, params=None, response_as=None, **kwargs): + session_context = session_context or {} + params = params if isinstance(params, dict) else {} if not params else params.to_dict() resolved_response_as = response_as or default_response_as or _raw_response - params = params if isinstance(params, dict) else params.to_dict() (url, params) = apply_params(url, params) req = FormationHttpRequest( url=urljoin(base_uri, url), method=method, params=params, **kwargs diff --git a/formation/formation.py b/formation/formation.py index e410267..87df58c 100644 --- a/formation/formation.py +++ b/formation/formation.py @@ -11,7 +11,8 @@ _REQ_DURATION = "req.duration_us" -def wrap(call, middleware=[]): +def wrap(call, middleware=None): + middleware = middleware or [] return reduce( lambda acc, m: lambda ctx: m(ctx, acc), reversed(middleware), diff --git a/formation/middleware/breaker.py b/formation/middleware/breaker.py index feb71c5..3bf6884 100644 --- a/formation/middleware/breaker.py +++ b/formation/middleware/breaker.py @@ -31,8 +31,9 @@ def trigger_breaker_middleware(ctx, call): def circuit_breaker( - logger, name, fail_max=5, reset_timeout=60, state_storage=None, exclude=[] + logger, name, fail_max=5, reset_timeout=60, state_storage=None, exclude=None ): + exclude = exclude or [] breaker = pybreaker.CircuitBreaker( name=name, listeners=[breaker_logger(logger)], From a8bb75ec76882fac1512caf00133ca36db9b1700 Mon Sep 17 00:00:00 2001 From: Didi Bar-Zev Date: Wed, 17 Jun 2020 15:31:46 +0300 Subject: [PATCH 2/2] fixed one more --- formation/for_requests.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/formation/for_requests.py b/formation/for_requests.py index e057360..c7ab30a 100644 --- a/formation/for_requests.py +++ b/formation/for_requests.py @@ -174,7 +174,8 @@ def delete(self, path, **kwargs): return self.send("delete", path, **kwargs) -def build(middleware=[], base_uri=None, response_as=None): +def build(middleware=None, base_uri=None, response_as=None): + middleware = middleware or [] return Sender( build_sender( middleware=middleware, base_uri=base_uri, default_response_as=response_as