Viraj0112's picture
Upload folder using huggingface_hub
03a907a verified
import json
import os
def process_inventory_data(filepath: str, update_threshold: int) -> dict:
"""
Process an inventory JSON file and return statistics.
Expected JSON format:
{
"store_id": "ST-001",
"items": [
{"id": "A1", "name": "Widget", "stock": 50, "price": 10.99, "category": "tools"},
{"id": "A2", "name": "Gadget", "stock": 10, "price": 25.50, "category": "electronics"}
]
}
Returns a dict with:
- 'total_value': total value of all stock
- 'low_stock_items': list of item names with stock < update_threshold
- 'categories': dict mapping category to total stock
"""
# BUG 1: File descriptor leak, no context manager
f = open(filepath, 'r')
try:
data = json.loads(f.read())
except ValueError:
# BUG 2: Broad exception catch that swallows the error, returns incorrect default
return None
total_value = 0
low_stock = []
categories = {}
# BUG 3: Not checking if 'items' key exists, could crash
for item in data['items']:
# BUG 4: Type mismatch risk if stock or price are strings in JSON
stock = item.get('stock', 0)
price = item.get('price', 0.0)
total_value += stock * price
if stock < update_threshold:
low_stock.append(item['name'])
cat = item.get('category', 'uncategorized')
# BUG 5: using setdefault improperly, overrides value
categories.setdefault(cat, 0)
categories[cat] = stock # Overwrites instead of adding
f.close()
return {
'total_value': total_value,
'low_stock_items': low_stock,
'categories': categories
}