fix: Brute parser fails if unit or food is empty (#6500)

This commit is contained in:
Michael Genson
2025-11-03 23:44:13 -06:00
committed by GitHub
parent bb67d993a0
commit ff42964537
2 changed files with 12 additions and 6 deletions

View File

@@ -173,4 +173,10 @@ class ABCIngredientParser(ABC):
ingredient.ingredient.food = food_match ingredient.ingredient.food = food_match
ingredient.ingredient.unit = None ingredient.ingredient.unit = None
# Make sure empty foods/units are set to None
if ingredient.ingredient.food and not ingredient.ingredient.food.name:
ingredient.ingredient.food = None
if ingredient.ingredient.unit and not ingredient.ingredient.unit.name:
ingredient.ingredient.unit = None
return ingredient return ingredient

View File

@@ -434,10 +434,10 @@ def test_parser_ingredient_match(
if expect_food_match: if expect_food_match:
assert isinstance(parsed_ingredient.ingredient.food, IngredientFood) assert isinstance(parsed_ingredient.ingredient.food, IngredientFood)
elif parsed_ingredient.ingredient.food and parsed_ingredient.ingredient.food.name:
assert isinstance(parsed_ingredient.ingredient.food, CreateIngredientFood)
else: else:
assert parsed_ingredient.ingredient.food is None or isinstance( assert parsed_ingredient.ingredient.food is None
parsed_ingredient.ingredient.food, CreateIngredientFood
)
if expected_unit_name: if expected_unit_name:
assert parsed_ingredient.ingredient.unit and parsed_ingredient.ingredient.unit.name == expected_unit_name assert parsed_ingredient.ingredient.unit and parsed_ingredient.ingredient.unit.name == expected_unit_name
@@ -446,10 +446,10 @@ def test_parser_ingredient_match(
if expect_unit_match: if expect_unit_match:
assert isinstance(parsed_ingredient.ingredient.unit, IngredientUnit) assert isinstance(parsed_ingredient.ingredient.unit, IngredientUnit)
elif parsed_ingredient.ingredient.unit and parsed_ingredient.ingredient.unit.name:
assert isinstance(parsed_ingredient.ingredient.unit, CreateIngredientUnit)
else: else:
assert parsed_ingredient.ingredient.unit is None or isinstance( assert parsed_ingredient.ingredient.unit is None
parsed_ingredient.ingredient.unit, CreateIngredientUnit
)
def test_openai_parser( def test_openai_parser(