import csv from io import TextIOWrapper from config import item_attributes def get_csv_data(file): csv_file = TextIOWrapper(file, encoding='utf-8') reader = csv.DictReader(csv_file, delimiter='|') # Validate CSV headers based on config required_headers = set(item_attributes.keys()) if not required_headers.issubset(reader.fieldnames): raise ValueError(f"CSV file must include headers: {', '.join(required_headers)}.") # Extract data dynamically based on config return [{attrib: row[attrib] for attrib in item_attributes} for row in reader]