<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_block_details(self, block_ids):
 """Get details of scheduling or processing block Args: block_ids (list):
 List of 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