diff --git a/formation/for_requests.py b/formation/for_requests.py index 1c60e7b..c7ab30a 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 @@ -172,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 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)],