Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

Commit b87a5fe

Browse files
authored
Merge pull request #185 from roycaihw/watch-unmarshal
watch stream: don't unmarshal responses when streaming log
2 parents d30f1e6 + ea11e44 commit b87a5fe

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

watch/watch.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,7 @@ def get_watch_argument_name(self, func):
8484
return 'watch'
8585

8686
def unmarshal_event(self, data, return_type):
87-
try:
88-
js = json.loads(data)
89-
except ValueError:
90-
return data
91-
if not (isinstance(js, dict) and 'object' in js):
92-
return data
87+
js = json.loads(data)
9388
js['raw_object'] = js['object']
9489
if return_type:
9590
obj = SimpleNamespace(data=json.dumps(js['raw_object']))
@@ -132,7 +127,8 @@ def stream(self, func, *args, **kwargs):
132127

133128
self._stop = False
134129
return_type = self.get_return_type(func)
135-
kwargs[self.get_watch_argument_name(func)] = True
130+
watch_arg = self.get_watch_argument_name(func)
131+
kwargs[watch_arg] = True
136132
kwargs['_preload_content'] = False
137133
if 'resource_version' in kwargs:
138134
self.resource_version = kwargs['resource_version']
@@ -142,7 +138,12 @@ def stream(self, func, *args, **kwargs):
142138
resp = func(*args, **kwargs)
143139
try:
144140
for line in iter_resp_lines(resp):
145-
yield self.unmarshal_event(line, return_type)
141+
# unmarshal when we are receiving events from watch,
142+
# return raw string when we are streaming log
143+
if watch_arg == "watch":
144+
yield self.unmarshal_event(line, return_type)
145+
else:
146+
yield line
146147
if self._stop:
147148
break
148149
finally:

0 commit comments

Comments
 (0)