Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(140)

Side by Side Diff: recipe_engine/stream.py

Issue 2088343002: improve unicode support (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/recipes-py@master
Patch Set: Copyright Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « recipe_engine/step_runner.py ('k') | recipe_engine/third_party/expect_tests/serialize.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2015 The LUCI Authors. All rights reserved. 1 # Copyright 2015 The LUCI Authors. All rights reserved.
2 # Use of this source code is governed under the Apache License, Version 2.0 2 # Use of this source code is governed under the Apache License, Version 2.0
3 # that can be found in the LICENSE file. 3 # that can be found in the LICENSE file.
4 4
5 """Abstract stream interface for representing recipe runs. 5 """Abstract stream interface for representing recipe runs.
6 6
7 We need to create streams for steps (and substeps) and also LOG_LINE steps. 7 We need to create streams for steps (and substeps) and also LOG_LINE steps.
8 LogDog will implement LOG_LINE steps as real logs (i.e. uniformly), but 8 LogDog will implement LOG_LINE steps as real logs (i.e. uniformly), but
9 annotations will implement them differently from normal logs, so we need 9 annotations will implement them differently from normal logs, so we need
10 a way to distinguish. 10 a way to distinguish.
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 264
265 class AnnotationStepStream(StreamEngine.StepStream): 265 class AnnotationStepStream(StreamEngine.StepStream):
266 def __init__(self, emit_timestamps=False, time_fn=None): 266 def __init__(self, emit_timestamps=False, time_fn=None):
267 self.emit_timestamps = emit_timestamps 267 self.emit_timestamps = emit_timestamps
268 self.time_fn = time_fn or time.time 268 self.time_fn = time_fn or time.time
269 269
270 def basic_write(self, line): 270 def basic_write(self, line):
271 raise NotImplementedError() 271 raise NotImplementedError()
272 272
273 def output_annotation(self, *args): 273 def output_annotation(self, *args):
274 self.basic_write('@@@' + '@'.join(map(str, args)) + '@@@\n') 274 self.basic_write('@@@' + '@'.join(map(unicode, args)) + '@@@\n')
275 275
276 def write_line(self, line): 276 def write_line(self, line):
277 if line.startswith('@@@'): 277 if line.startswith('@@@'):
278 self.basic_write('!' + line + '\n') 278 self.basic_write('!' + line + '\n')
279 else: 279 else:
280 self.basic_write(line + '\n') 280 self.basic_write(line + '\n')
281 281
282 def close(self): 282 def close(self):
283 if self.emit_timestamps: 283 if self.emit_timestamps:
284 self.output_annotation('CURRENT_TIMESTAMP', self.time_fn()) 284 self.output_annotation('CURRENT_TIMESTAMP', self.time_fn())
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 """A StepStream that is not tied to any engine, and emits assuming it has the 403 """A StepStream that is not tied to any engine, and emits assuming it has the
404 cursor. 404 cursor.
405 405
406 This is used for capturing the annotations in the engine. 406 This is used for capturing the annotations in the engine.
407 """ 407 """
408 def __init__(self, outstream): 408 def __init__(self, outstream):
409 self._outstream = outstream 409 self._outstream = outstream
410 410
411 def basic_write(self, line): 411 def basic_write(self, line):
412 self._outstream.write(line) 412 self._outstream.write(line)
OLDNEW
« no previous file with comments | « recipe_engine/step_runner.py ('k') | recipe_engine/third_party/expect_tests/serialize.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698