Code Duplication    Length = 14-15 lines in 2 locations

kuon/watcher/condition_checker.py 2 locations

@@ 57-71 (lines=15) @@
54
        else:
55
            return item[condition.key] >= 0 and (item[condition.key] < avg_value + condition.value)
56
57
    def _check_below_cheapest_last_sold(self, item: LockedDict, condition: LockedDict) -> bool:
58
        """Check if the value of the item is below the average of the cheapest sold items
59
        of the last 20 purchases
60
61
        :type item: LockedDict
62
        :type condition: LockedDict
63
        :return:
64
        """
65
        last_sold = self.get_sold_history(market_name=item.market_name, no_delay=True)
66
        lowest_value = min([sold_item[condition.key] for sold_item in last_sold.data.sales])
67
68
        if condition.unit == "%":
69
            return item[condition.key] >= 0 and (item[condition.key] < lowest_value * (1 + condition.value))
70
        else:
71
            return item[condition.key] >= 0 and (item[condition.key] < lowest_value + condition.value)
72
73
    def check_condition(self, item: LockedDict, settings: LockedDict) -> bool:
74
        """Check if the set condition matches on the passed item
@@ 42-55 (lines=14) @@
39
        """
40
        return item[condition.key] >= 0 and (item[condition.key] < condition.value)
41
42
    def _check_below_average_last_sold(self, item: LockedDict, condition: LockedDict) -> bool:
43
        """Check if the value of the item is below the average of the last 20 sold items
44
45
        :type item: LockedDict
46
        :type condition: LockedDict
47
        :return:
48
        """
49
        last_sold = self.get_sold_history(market_name=item.market_name, no_delay=True)
50
        avg_value = sum([sold_item[condition.key] for sold_item in last_sold.data.sales]) / len(last_sold.data.sales)
51
52
        if condition.unit == "%":
53
            return item[condition.key] >= 0 and (item[condition.key] < avg_value * (1 + condition.value))
54
        else:
55
            return item[condition.key] >= 0 and (item[condition.key] < avg_value + condition.value)
56
57
    def _check_below_cheapest_last_sold(self, item: LockedDict, condition: LockedDict) -> bool:
58
        """Check if the value of the item is below the average of the cheapest sold items