3 # Copyright 2007 Google Inc.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 """A simple line-oriented "tee"."""
24 class Tee(threading
.Thread
):
25 """A simple line-oriented "tee".
27 This class connects two file-like objects, piping the output of one to the
28 input of the other, and buffering the last 100 lines.
33 def __init__(self
, in_f
, out_f
):
34 threading
.Thread
.__init
__(self
, name
='Tee')
37 self
.__deque
= collections
.deque('', Tee
._MAX
_LINES
)
41 line
= self
.__in
.readline()
44 self
.__out
.write(line
)
45 self
.__deque
.append(line
)
48 return ''.join(self
.__deque
)