diff --git a/.coverage b/.coverage index 1fb750d5..cb7cf9a9 100644 Binary files a/.coverage and b/.coverage differ diff --git a/python/gilded_rose.py b/python/gilded_rose.py index d392139a..dfda4309 100755 --- a/python/gilded_rose.py +++ b/python/gilded_rose.py @@ -1,11 +1,22 @@ -# utf-8 +from typing import Final + + +class Item: + def __init__(self, name, sell_in, quality): + self.name = name + self.sell_in = sell_in + self.quality = quality + + def __repr__(self): + return "%s, %s, %s" % (self.name, self.sell_in, self.quality) + class Updater(object): - MIN_QUALITY = 0 - MAX_QUALITY = 50 + MIN_QUALITY:Final[int] = 0 + MAX_QUALITY: Final[int] = 50 - def normal_item(self, item): + def normal_item(self, item:Item): if item.sell_in > 0: depreciation = -1 else: @@ -13,7 +24,7 @@ class Updater(object): item.quality = max((item.quality + depreciation), self.MIN_QUALITY) item.sell_in += -1 - def aged_brie(self, item): + def aged_brie(self, item:Item): if item.sell_in > 0: appreciation = 1 else: @@ -21,10 +32,10 @@ class Updater(object): item.quality = min((item.quality + appreciation), self.MAX_QUALITY) item.sell_in += -1 - def sulfuras(self, item): + def sulfuras(self, item:Item): pass - def backstage_passes(self, item): + def backstage_passes(self, item:Item): def get_quality(item, appreciation): item.quality = min(item.quality + appreciation , self.MAX_QUALITY) @@ -42,7 +53,7 @@ class Updater(object): item.quality = 0 item.sell_in += -1 - def conjured(self, item): + def conjured(self, item:Item): if item.sell_in > 0: depreciation = -2 else: @@ -54,31 +65,25 @@ class Updater(object): class GildedRose(object): - def __init__(self, items): + AGED_BRIE: Final[str] = "Aged Brie" + BACKSTAGE_PASSES: Final[str] = "Backstage passes to a TAFKAL80ETC concert" + SULFURAS: Final[str] = "Sulfuras, Hand of Ragnaros" + CONJURED: Final[str] = "Conjured Mana Cake" + + def __init__(self, items:Item): self.items = items def update_quality(self): updater = Updater() for item in self.items: - if item.name == 'Aged Brie': + if item.name == self.AGED_BRIE: updater.aged_brie(item) - elif item.name == 'Backstage passes to a TAFKAL80ETC concert': + elif item.name == self.BACKSTAGE_PASSES: updater.backstage_passes(item) - elif item.name == 'Sulfuras, Hand of Ragnaros': + elif item.name == self.SULFURAS: updater.sulfuras(item) - elif item.name == 'Conjured Mana Cake': + elif item.name == self.CONJURED: updater.conjured(item) else: updater.normal_item(item) - - -class Item: - def __init__(self, name, sell_in, quality): - self.name = name - self.sell_in = sell_in - self.quality = quality - - def __repr__(self): - return "%s, %s, %s" % (self.name, self.sell_in, self.quality) - \ No newline at end of file