docs: def csv_to_map(fields, delimiter=','):
      """
      Convert csv to dict
  
      :param delimiter:
      :param fields:
      :return:
      """
  
      def _csv_to_list(csv_input):
          """
          Util function to overcome the use of files by in-memory io buffer
  
          :param csv_input:
          :return:
          """
          io_file = io.StringIO(csv_input)
          return next(csv.reader(io_file, delimiter=delimiter))
  
      def _app(current_tuple, e=None):
          if current_tuple is None or len(current_tuple) == 0:
              return None, "no input"
          csv_list = _csv_to_list(current_tuple)
          if len(csv_list) != len(fields):
              e = {"input": "unexpected number of fields {} obtained {} expected".format(len(csv_list), len(fields))}
              return None, e
          return {k: v for (k, v) in zip(fields, csv_list)}, e
      if fields is None or len(fields) == 0:
          return fixed_input(None, "no fields provided, cannot proceed without order")
      return _app