def _run_filter(output_filter, input_stream=None, output_stream=None, *args, **kwargs): """Feeds stdin to an instance of OutputFilter and spews to stdout. Args: output_filter: An instance of OutputFilter. input_stream: Where to read input from. output_stream: Where to write output to. """ if not input_stream: input_stream = sys.stdin if not output_stream: output_stream = sys.stdout for json_string in _unbuffered_input(input_stream): try: blob = simplejson.loads(json_string) except simplejson.JSONDecodeError as e: write_exception(e) continue blob = output_filter.filter_line(blob) if blob: output_stream.write(simplejson.dumps(blob)) output_stream.write('\n') final_blobs = output_filter.end_of_lines() for blob in final_blobs: output_stream.write(simplejson.dumps(blob)) output_stream.write('\n') output_stream.flush()
def _to_url(cls, url_path): try: return u'{0}{1}'.format(cls.BASE_URL, url_path) except Exception as e: write_error_message(url_path) write_exception(e) raise e
def test_specific_exception(self): try: raise BadDomainError() except Exception as e: write_exception(e) output = self._stringio.getvalue() T.assert_equal(0, output.find('[ERROR] BadDomainError'))
def test_simple_exception(self): try: raise Exception() except Exception as e: write_exception(e) output = self._stringio.getvalue() T.assert_equal(0, output.find('[ERROR]'))
def test_exception_message(self): try: raise BadDomainError('Look for me in validation') except Exception as e: write_exception(e) output = self._stringio.getvalue() T.assert_equal(0, output.find('[ERROR] BadDomainError Look for me in validation'))
def test_exception_message(self, capsys): try: raise BadDomainError('Look for me in validation') except Exception as e: write_exception(e) output = capsys.readouterr().err assert output.find('[ERROR] BadDomainError Look for me in validation') == 0
def test_specific_exception(self, capsys): try: raise BadDomainError() except Exception as e: write_exception(e) output = capsys.readouterr().err assert output.find('[ERROR] BadDomainError') == 0
def test_simple_exception(self, capsys): try: raise Exception() except Exception as e: write_exception(e) output = capsys.readouterr().err assert 0 == output.find('[ERROR]')
def _to_urls(cls, fmt_url_path, url_path_args): url_paths = [] for path_arg in url_path_args: try: url_paths.append(fmt_url_path.format(path_arg)) except Exception as e: write_error_message(path_arg) write_exception(e) raise e return [cls._to_url(url_path) for url_path in url_paths]
def wrapper(*args, **kwargs): try: result = fn(*args, **kwargs) return result except InvalidRequestError as e: write_exception(e) if hasattr(e, 'request'): write_error_message('request {0}'.format(repr(e.request))) if hasattr(e, 'response'): write_error_message('response {0}'.format(repr(e.response))) raise e
def run_filter(output_filter, input_stream=None, output_stream=None): """Feeds stdin to an instance of OutputFilter and spews to stdout. Args: output_filter: An instance of OutputFilter. input_stream: Where to read input from. output_stream: Where to write output to. """ def _unbuffered_input(read_from): """A generator to allow lines to be read before EOF is reached. Args: read_from: A stream to read from Returns: yields strings """ line = read_from.readline() while bool(line): yield line.decode('latin-1', errors='ignore').encode('utf-8', errors='ignore') line = read_from.readline() if not input_stream: input_stream = sys.stdin if not output_stream: output_stream = sys.stdout for json_string in _unbuffered_input(input_stream): try: blob = simplejson.loads(json_string) except simplejson.JSONDecodeError as e: write_exception(e) continue blob = output_filter.filter_line(blob) if blob: output_stream.write(simplejson.dumps(blob)) output_stream.write('\n') final_blobs = output_filter.end_of_lines() for blob in final_blobs: output_stream.write(simplejson.dumps(blob)) output_stream.write('\n') output_stream.flush()