Public Access
Products missing a parseable sale or regular price would previously yield a GroceryItem with current_price=None. That broke the downstream matcher (ingredient typical_price is non-null) and cluttered the table. Added a guard in map_product() to return None when both reg_price and sale_price are None. Fixes test_map_product_returns_none_for_unparseable.