ITP WiP
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from datetime import datetime
|
||||
import xml.etree.ElementTree as ET
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from .entry import Entry
|
||||
from .entry.background_entry import BackgroundEntry
|
||||
@@ -15,7 +15,7 @@ class IterationParser:
|
||||
"""Parses iteration XML files into entries"""
|
||||
|
||||
@staticmethod
|
||||
def parse_iteration(content: str, io_buffer) -> tuple[str, str, List[Entry]]:
|
||||
def parse_iteration(content: str, work_dir: Path, io_buffer) -> tuple[str, str, List[Entry]]:
|
||||
"""
|
||||
Parse iteration XML content into context, response and entries
|
||||
|
||||
@@ -37,7 +37,7 @@ class IterationParser:
|
||||
entries = []
|
||||
for elem in context:
|
||||
if elem.tag == "background":
|
||||
entries.append(IterationParser._parse_background(elem))
|
||||
entries.append(IterationParser._parse_background(elem, work_dir))
|
||||
elif elem.tag == "parse_error":
|
||||
entries.append(IterationParser._parse_parse_error(elem))
|
||||
elif elem.tag == "read_stdin":
|
||||
@@ -45,19 +45,20 @@ class IterationParser:
|
||||
elif elem.tag == "reasoning":
|
||||
entries.append(IterationParser._parse_reasoning(elem))
|
||||
elif elem.tag == "repeat":
|
||||
entries.append(IterationParser._parse_repeat(elem))
|
||||
entries.append(IterationParser._parse_repeat(elem, work_dir))
|
||||
elif elem.tag == "single":
|
||||
entries.append(IterationParser._parse_single(elem))
|
||||
entries.append(IterationParser._parse_single(elem, work_dir))
|
||||
elif elem.tag == "write_stdout":
|
||||
entries.append(IterationParser._parse_write(elem, io_buffer))
|
||||
|
||||
return entries
|
||||
|
||||
@staticmethod
|
||||
def _parse_background(elem: ET.Element) -> BackgroundEntry:
|
||||
def _parse_background(elem: ET.Element, work_dir: Path) -> BackgroundEntry:
|
||||
entry = BackgroundEntry(
|
||||
id=elem.get("id"),
|
||||
script=elem.text
|
||||
script=elem.text,
|
||||
work_dir=work_dir
|
||||
)
|
||||
if elem.get("exit_code"):
|
||||
entry.exit_code = int(elem.get("exit_code"))
|
||||
@@ -97,9 +98,10 @@ class IterationParser:
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def _parse_repeat(elem: ET.Element) -> RepeatEntry:
|
||||
def _parse_repeat(elem: ET.Element, work_dir: Path) -> RepeatEntry:
|
||||
entry = RepeatEntry(
|
||||
id=elem.get("id"),
|
||||
work_dir=work_dir,
|
||||
script=elem.text,
|
||||
timeout=float(elem.get("timeout")) if elem.get("timeout") else None,
|
||||
limit=int(elem.get("limit")) if elem.get("limit") else None
|
||||
@@ -116,9 +118,10 @@ class IterationParser:
|
||||
return entry
|
||||
|
||||
@staticmethod
|
||||
def _parse_single(elem: ET.Element) -> SingleEntry:
|
||||
def _parse_single(elem: ET.Element, work_dir: Path) -> SingleEntry:
|
||||
entry = SingleEntry(
|
||||
id=elem.get("id"),
|
||||
work_dir=work_dir,
|
||||
script=elem.text,
|
||||
timeout=float(elem.get("timeout")) if elem.get("timeout") else None,
|
||||
limit=int(elem.get("limit")) if elem.get("limit") else None
|
||||
|
||||
Reference in New Issue
Block a user