Code Duplication    Length = 24-27 lines in 2 locations

utilities.py 2 locations

@@ 394-420 (lines=27) @@
391
        maximum = None
392
        counter = 0
393
        current_datetime_utc = start_datetime_utc.replace(minute=0, second=0, microsecond=0, tzinfo=None)
394
        while current_datetime_utc <= end_datetime_utc:
395
            sub_total = Decimal(0.0)
396
            sub_maximum = None
397
            sub_counter = 0
398
            for row in rows_hourly:
399
                if current_datetime_utc <= row[0] < current_datetime_utc + \
400
                        timedelta(minutes=config.minutes_to_count):
401
                    sub_total += row[1]
402
                    if sub_maximum is None:
403
                        sub_maximum = row[1]
404
                    elif sub_maximum < row[1]:
405
                        sub_maximum = row[1]
406
                    sub_counter += 1
407
408
            sub_average = (sub_total / sub_counter) if sub_counter > 0 else None
409
            result_rows_hourly.append((current_datetime_utc, sub_average, sub_maximum))
410
411
            total += sub_total
412
            counter += sub_counter
413
            if sub_maximum is None:
414
                pass
415
            elif maximum is None:
416
                maximum = sub_maximum
417
            elif maximum < sub_maximum:
418
                maximum = sub_maximum
419
420
            current_datetime_utc += timedelta(minutes=config.minutes_to_count)
421
422
        average = total / counter if counter > 0 else None
423
        return result_rows_hourly, average, maximum
@@ 435-458 (lines=24) @@
432
        # calculate the start datetime in utc of the first day in local
433
        start_datetime_local = start_datetime_utc + timedelta(hours=int(config.utc_offset[1:3]))
434
        current_datetime_utc = start_datetime_local.replace(hour=0) - timedelta(hours=int(config.utc_offset[1:3]))
435
        while current_datetime_utc <= end_datetime_utc:
436
            sub_total = Decimal(0.0)
437
            sub_maximum = None
438
            sub_counter = 0
439
            for row in rows_hourly:
440
                if current_datetime_utc <= row[0] < current_datetime_utc + timedelta(days=1):
441
                    sub_total += row[1]
442
                    if sub_maximum is None:
443
                        sub_maximum = row[1]
444
                    elif sub_maximum < row[1]:
445
                        sub_maximum = row[1]
446
                    sub_counter += 1
447
448
            sub_average = (sub_total / sub_counter) if sub_counter > 0 else None
449
            result_rows_daily.append((current_datetime_utc, sub_average, sub_maximum))
450
            total += sub_total
451
            counter += sub_counter
452
            if sub_maximum is None:
453
                pass
454
            elif maximum is None:
455
                maximum = sub_maximum
456
            elif maximum < sub_maximum:
457
                maximum = sub_maximum
458
            current_datetime_utc += timedelta(days=1)
459
460
        return result_rows_daily, average, maximum
461