in awscli/formatter.py [0:0]
def __call__(self, command_name, response, stream=None):
if stream is None:
stream = self._get_default_stream()
try:
if is_response_paginated(response):
result_keys = response.result_keys
for i, page in enumerate(response):
if i > 0:
current = {}
else:
current = response.non_aggregate_part
for result_key in result_keys:
data = result_key.search(page)
set_value_from_jmespath(
current, result_key.expression, data
)
self._format_response(current, stream)
if response.resume_token:
# Tell the user about the next token so they can continue
# if they want.
self._format_response(
{'NextToken': {'NextToken': response.resume_token}},
stream,
)
else:
self._remove_request_id(response)
self._format_response(response, stream)
finally:
# flush is needed to avoid the "close failed in file object
# destructor" in python2.x (see http://bugs.python.org/issue11380).
self._flush_stream(stream)