code: def read_records(self, resource_path: str):
      records, ride_keys = [], []
      with open(resource_path, "r") as f:
          reader = csv.reader(f)
          header = next(reader)  # skip the header
          for row in reader:
              key, record = self.parse_row(row)
              ride_keys.append(key)
              records.append(record)
      return zip(ride_keys, records)
  
file_path: data-engineering-zoomcamp/cohorts/2023/week_6_stream_processing/producer_confluent.py
imports: from confluent_kafka import Producer
  import argparse
  import csv
  from typing import Dict
  from time import sleep
  from settings import CONFLUENT_CLOUD_CONFIG, GREEN_TAXI_TOPIC, FHV_TAXI_TOPIC, GREEN_TRIP_DATA_PATH, FHV_TRIP_DATA_PATH
label_desc: Use image node_id 3 for calling the RideCSVProducer obj's underlying member method code with example usage: obj.read_records(resource_path) and returns: zip