fromdataclassesimportdataclassfromenumimportEnumfromtimeimportsleepfromtypingimportOptionalimportrandom""" ) ( ( ) ) ) ( ( _______)_ .-'---------| ( C|/\/\/\/\/| '-./\/\/\/\/| '_________' '-------' THE PERFECT CUP OF COFFEE"""classBeanType(Enum):ETHIOPIAN_YIRGACHEFFE="floral and bright"GUATEMALA_ANTIGUA="chocolate and spice"SUMATRA_MANDHELING="earthy and deep"KENYA_AA="wine-like and bright"COLOMBIA_SUPREMO="caramel and nutty"@dataclassclassCoffeeBean:variety: BeanTyperoast_level: float# 0-1, light to darkdays_since_roast: int@propertydeffreshness(self) -> float:returnmax(0,1-(self.days_since_roast/14))classWaterQuality(Enum):TAP="municipal water, it'll do"FILTERED="clean and pure"MINERAL="perfectly balanced minerals"SPRING="straight from the mountains"classCoffeeMaker:def__init__(self,name: str):self.name=nameself.clean_level=1.0# Start clean!self.times_used=0defclean(self):print(f"♨️ Cleaning {self.name}...")sleep(1)# Good things take timeself.clean_level=1.0self.times_used=0print("✨ Sparkly clean!")classPerfectCup:""" The quest for the perfect cup of coffee { { } }_{ __{ .-{ } }-. ( } { ) |`-.._____..-'| | ;--. | (__ \ | | ) ) | |/ / | / / | ( /\ y' `-.._____..-' """def__init__(self,beans: CoffeeBean,water: WaterQuality):self.beans=beansself.water=waterself.maker=CoffeeMaker("Chemex")# Because we're fancyself.grind_size=Noneself.brew_temp=Noneself.last_message=Nonedefcheck_water_temp(self,temp: float) -> bool:""" The perfect temperature is 200°F ± 2°F Too hot = bitter Too cold = sour Just right = *chef's kiss* """return198<=temp<=202defdetermine_grind_size(self) -> float:""" Returns ideal grind size (0-1, fine to coarse) More art than science, but we try... """# Lighter roasts need finer grindbase_size=0.5+(self.beans.roast_level*0.2)# Adjust for freshnessbase_size+=(1-self.beans.freshness)*0.1returnmin(1,max(0,base_size))defadd_meditation_time(self):""" Sometimes you just need to breathe and appreciate the moment ~~~~~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~~~~~ """print("Taking a moment to appreciate the art of coffee...")sleep(2)defbrew(self,water_temp: float) -> Optional[str]:ifself.maker.clean_level<0.7:self.maker.clean()ifnotself.check_water_temp(water_temp):return"Temperature is not optimal! Adjusting..."self.grind_size=self.determine_grind_size()self.brew_temp=water_temp# The magic happens herequality_score=self._calculate_quality()ifquality_score>=0.9:self.add_meditation_time()returnself._generate_perfect_message()elifquality_score>=0.7:return"A very good cup. Not perfect, but close!"else:return"Hmm... Let's try again, shall we?"def_calculate_quality(self) -> float:base_score=random.uniform(0.8,1.0)# We're optimists# Freshness matters!base_score*=(0.7+(self.beans.freshness*0.3))# Water quality coefficientwater_coefficients={WaterQuality.TAP: 0.8,WaterQuality.FILTERED: 0.9,WaterQuality.MINERAL: 1.0,WaterQuality.SPRING: 1.0}base_score*=water_coefficients[self.water]# Cleanliness is next to godlinessbase_score*=self.maker.clean_levelreturnmin(1.0,base_score)def_generate_perfect_message(self) -> str:messages=["Ah, perfection in a cup! ☕","The coffee gods are pleased! 🙏","This... this is why we do this! ✨","Time stops for a cup like this... ⏰","Better than a barista's best! 🏆"]# Don't repeat messagesavailable_messages=[mforminmessagesifm!=self.last_message]self.last_message=random.choice(available_messages)returnself.last_messageif__name__=="__main__":# Let's make some coffee!beans=CoffeeBean(variety=BeanType.ETHIOPIA_YIRGACHEFFE,roast_level=0.3,# Light roastdays_since_roast=2# Fresh!)perfect_cup=PerfectCup(beans=beans,water=WaterQuality.MINERAL)result=perfect_cup.brew(water_temp=200.0)print(result)