@@ -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