feedback_list: ['... Solution: Line 121: self.place_at_grid(... )', ...]
(self, feedback_list: List[str])
| 774 | return "\n".join(modified_lines) |
| 775 | |
| 776 | def parse_feedback_and_modify(self, feedback_list: List[str]) -> str: |
| 777 | """feedback_list: ['... Solution: Line 121: self.place_at_grid(... )', ...]""" |
| 778 | if not isinstance(feedback_list, list): |
| 779 | return self.original_code |
| 780 | |
| 781 | modifications: List[Dict[str, Any]] = [] |
| 782 | line_pat = re.compile(r"\bline\s+(\d+)\b", re.IGNORECASE) |
| 783 | call_pat = re.compile(r"self\.(?:place_at_grid|place_in_area)\([^\n\r]*?\)") |
| 784 | |
| 785 | for item in feedback_list: |
| 786 | if not isinstance(item, str): |
| 787 | continue |
| 788 | # Extract line number and new code from feedback |
| 789 | m_sol = re.search(r"solution\s*:\s*(.*)$", item, flags=re.IGNORECASE) |
| 790 | sol = m_sol.group(1).strip() if m_sol else item.strip() |
| 791 | # Extract line number from feedback |
| 792 | m_line = line_pat.search(sol) |
| 793 | if not m_line: |
| 794 | continue |
| 795 | line_number = int(m_line.group(1)) |
| 796 | # Extract new code from feedback |
| 797 | m_call = call_pat.search(sol) |
| 798 | if not m_call: |
| 799 | continue |
| 800 | new_code = m_call.group(0) |
| 801 | modifications.append({"line_number": line_number, "new_code": new_code}) |
| 802 | return self.apply_grid_modifications(modifications) |
no test coverage detected