@@ -60,16 +60,18 @@ def _parse_clean_record_response(cls, response: common.V1ResponseData) -> CleanR
6060 if isinstance (response [- 1 ], dict ):
6161 records = [CleanRecord .from_dict (rec ) for rec in response ]
6262 final_record = records [- 1 ]
63- # Aggregate basic stats from prior partial records (exclude last which is full)
64- final_record .begin = records [0 ].begin
65- final_record .start_type = records [0 ].start_type
66- for rec in records [0 :- 1 ]:
67- final_record .duration = (final_record .duration or 0 ) + (rec .duration or 0 )
68- final_record .area = (final_record .area or 0 ) + (rec .area or 0 )
69- final_record .avoid_count = (final_record .avoid_count or 0 ) + (rec .avoid_count or 0 )
70- final_record .wash_count = (final_record .wash_count or 0 ) + (rec .wash_count or 0 )
71- return final_record
72- # There are still a few unknown variables in this.
63+ try :
64+ # This code is semi-presumptuous - so it is put in a try finally to be safe.
65+ final_record .begin = records [0 ].begin
66+ final_record .start_type = records [0 ].start_type
67+ for rec in records [0 :- 1 ]:
68+ final_record .duration = (final_record .duration or 0 ) + (rec .duration or 0 )
69+ final_record .area = (final_record .area or 0 ) + (rec .area or 0 )
70+ final_record .avoid_count = (final_record .avoid_count or 0 ) + (rec .avoid_count or 0 )
71+ final_record .wash_count = (final_record .wash_count or 0 ) + (rec .wash_count or 0 )
72+ except Exception :
73+ # Return final record when an exception occurred
74+ return final_record # There are still a few unknown variables in this.
7375 begin , end , duration , area = unpack_list (response , 4 )
7476 return CleanRecord (begin = begin , end = end , duration = duration , area = area )
7577 raise ValueError (f"Unexpected clean record format: { response !r} " )
0 commit comments