def on_valid(valid_content_type, on_invalid=json): """Renders as the specified content type only if no errors are found in the provided data object""" invalid_kwargs = introspect.generate_accepted_kwargs( on_invalid, 'request', 'response') invalid_takes_response = introspect.takes_all_arguments( on_invalid, 'response') def wrapper(function): valid_kwargs = introspect.generate_accepted_kwargs( function, 'request', 'response') valid_takes_response = introspect.takes_all_arguments( function, 'response') @content_type(valid_content_type) @wraps(function) def output_content(content, response, **kwargs): if type(content) == dict and 'errors' in content: response.content_type = on_invalid.content_type if invalid_takes_response: kwargs['response'] = response return on_invalid(content, **invalid_kwargs(kwargs)) if valid_takes_response: kwargs['response'] = response return function(content, **valid_kwargs(kwargs)) return output_content return wrapper
def wrapper(function): valid_kwargs = introspect.generate_accepted_kwargs(function, 'request', 'response') valid_takes_response = introspect.takes_all_arguments(function, 'response') @content_type(valid_content_type) @wraps(function) def output_content(content, response, **kwargs): if type(content) == dict and 'errors' in content: response.content_type = on_invalid.content_type if invalid_takes_response: kwargs['response'] = response return on_invalid(content, **invalid_kwargs(kwargs)) if valid_takes_response: kwargs['response'] = response return function(content, **valid_kwargs(kwargs)) return output_content
def on_valid(valid_content_type, on_invalid=json): """Renders as the specified content type only if no errors are found in the provided data object""" invalid_kwargs = introspect.generate_accepted_kwargs(on_invalid, 'request', 'response') invalid_takes_response = introspect.takes_all_arguments(on_invalid, 'response') def wrapper(function): valid_kwargs = introspect.generate_accepted_kwargs(function, 'request', 'response') valid_takes_response = introspect.takes_all_arguments(function, 'response') @content_type(valid_content_type) @wraps(function) def output_content(content, response, **kwargs): if type(content) == dict and 'errors' in content: response.content_type = on_invalid.content_type if invalid_takes_response: kwargs['response'] = response return on_invalid(content, **invalid_kwargs(kwargs)) if valid_takes_response: kwargs['response'] = response return function(content, **valid_kwargs(kwargs)) return output_content return wrapper
self.start = time.time() def __exit__(self, *args): print("{0} took {1}".format(self.name, time.clock() - self.start)) def my_method(name, request=None): pass def my_method_with_kwargs(name, request=None, **kwargs): pass with Timer('generate_kwargs'): accept_kwargs = generate_accepted_kwargs(my_method, ('request', 'response', 'version')) for test in range(100000): my_method(test, **accept_kwargs(DATA)) with Timer('auto_kwargs'): wrapped_method = auto_kwargs(my_method) for test in range(100000): wrapped_method(test, **DATA) with Timer('native_kwargs'): for test in range(100000): my_method_with_kwargs(test, **DATA)
self.start = time.time() def __exit__(self, *args): print("{0} took {1}".format(self.name, time.clock() - self.start)) def my_method(name, request=None): pass def my_method_with_kwargs(name, request=None, **kwargs): pass with Timer("generate_kwargs"): accept_kwargs = generate_accepted_kwargs(my_method, ("request", "response", "version")) for test in range(100000): my_method(test, **accept_kwargs(DATA)) with Timer("auto_kwargs"): wrapped_method = auto_kwargs(my_method) for test in range(100000): wrapped_method(test, **DATA) with Timer("native_kwargs"): for test in range(100000): my_method_with_kwargs(test, **DATA)
self.start = time.time() def __exit__(self, *args): print("{0} took {1}".format(self.name, time.clock() - self.start)) def my_method(name, request=None): pass def my_method_with_kwargs(name, request=None, **kwargs): pass with Timer('generate_kwargs'): accept_kwargs = generate_accepted_kwargs( my_method, ('request', 'response', 'version')) for test in range(100000): my_method(test, **accept_kwargs(DATA)) with Timer('auto_kwargs'): wrapped_method = auto_kwargs(my_method) for test in range(100000): wrapped_method(test, **DATA) with Timer('native_kwargs'): for test in range(100000): my_method_with_kwargs(test, **DATA) with Timer('no_kwargs'):