code: def get_block_details(self, block_ids):
          
          # Convert input to list if needed
          if not hasattr(block_ids, "__iter__"):
              block_ids = [block_ids]
  
          for _id in block_ids:
              block_key = self._db.get_block(_id)[0]
              block_data = self._db.get_all_field_value(block_key)
              # NOTE(BM) unfortunately this doesn't quite work for keys where \
              # the value is a python type (list, dict etc) \
              # The following hack works for now but is probably not infallible
              for key in block_data:
                  for char in ['[', '{']:
                      if char in block_data[key]:
                          block_data[key] = ast.literal_eval(
                              str(block_data[key]))
              yield block_data
docs: Get details of scheduling or processing block
  
          Args:
              block_ids (list): List of block IDs