Source code for pierogis.ingredients.dish
import numpy as np
from .ingredient import Ingredient
from .pierogi import Pierogi
from .recipe import Recipe
[docs]class Dish(Ingredient):
"""
cook a pierogi with a recipe
"""
_pierogi: Pierogi = None
[docs] def prep(
self,
pierogi: Pierogi,
recipe: Recipe = None,
**kwargs
):
"""
set the recipe to cook for this dish
:param recipe: something callable that returns a cook(pixels) method.
Any Ingredient (including Recipe) is an example of this
:param pierogis: a list of Pierogi to cook
"""
self.pierogi = pierogi
if recipe is None:
recipe = Recipe()
self.recipe = recipe
[docs] def cook(self, pixels: np.ndarray) -> np.ndarray:
return self.recipe.cook(self.pierogi.pixels)
[docs] def serve(self) -> 'Dish':
"""
cook the recipe and set the output to this object's pixel array
"""
# cook with these pixels as first input
cooked_pixels = self.recipe.cook(self.pierogi.pixels)
# ensure that the cooked pixels do not overflow 0-255
clipped_pixels = np.clip(cooked_pixels, 0, 255)
# # set the objects own pixels to the result of cooking
cooked_pierogi = Pierogi(pixels=clipped_pixels)
return Dish(pierogi=cooked_pierogi)