Reject whitespace in iteration parser

This commit is contained in:
2025-04-20 12:08:43 +02:00
parent a165772411
commit 243e4177cb
2 changed files with 168 additions and 172 deletions

View File

@@ -1,34 +1,30 @@
from setuptools import setup, find_packages from setuptools import setup, find_packages
setup( setup(
name="train", name="sia",
version="0.1.0", version="0.1.0",
packages=find_packages(), packages=find_packages(),
scripts=[ entry_points={
'bin/train' 'console_scripts': [
'sia=sia.__main__:main',
], ],
},
install_requires=[ install_requires=[
'accelerate>=0.25.0',
'bitsandbytes>=0.45.0',
'black>=22.0.0',
'datasets>=2.14.6',
'einops>=0.7.0',
'flake8>=4.0.0',
'ipykernel>=6.0.0',
'ipywidgets>=8.0.0',
'peft>=0.8.0',
'peft>=0.8.0',
'pytest-cov>=4.0.0',
'pytest>=7.0.0',
'pyyaml>=6.0',
'requests>=2.28.0',
'sentencepiece>=0.1.99',
'torch>=2.0.0', 'torch>=2.0.0',
'accelerate>=0.26.0',
'aiohttp>=3.8.0',
'bitsandbytes>=0.41.0',
'dotenv-python>=0.0.1',
'huggingface_hub>=0.16.0',
'lxml>=4.9.0',
'mistral-common>=1.0.0',
'mistralai>=0.0.7',
'openai>=1.0.0',
'psutil>=5.9.0',
'python-dotenv>=1.0.0',
'tiktoken>=0.4.0',
'transformers>=4.30.0', 'transformers>=4.30.0',
'trl>=0.7.8', 'xml_schema_validator @ file:///root/sia/lib/xml_schema_validator',
'unsloth>=2025.3',
'vllm==0.8.2',
], ],
python_requires='>=3.10', python_requires='>=3.10',
) )

View File

@@ -57,17 +57,17 @@ class IterationParser:
def _parse_background(elem: ET.Element, work_dir: Path) -> BackgroundEntry: def _parse_background(elem: ET.Element, work_dir: Path) -> BackgroundEntry:
entry = BackgroundEntry( entry = BackgroundEntry(
id=elem.get("id"), id=elem.get("id"),
script=elem.text, script=(elem.text or "").strip(),
work_dir=work_dir work_dir=work_dir
) )
if elem.get("exit_code"): if elem.get("exit_code"):
entry.exit_code = int(elem.get("exit_code")) entry.exit_code = int(elem.get("exit_code"))
stdout = elem.find("stdout") stdout = elem.find("stdout")
if stdout is not None: if stdout is not None:
entry.stdout = stdout.text or "" entry.stdout = (stdout.text or "").strip()
stderr = elem.find("stderr") stderr = elem.find("stderr")
if stderr is not None: if stderr is not None:
entry.stderr = stderr.text or "" entry.stderr = (stderr.text or "").strip()
return entry return entry
@staticmethod @staticmethod
@@ -76,8 +76,8 @@ class IterationParser:
content = elem.find("content") content = elem.find("content")
return ParseErrorEntry( return ParseErrorEntry(
id=elem.get("id"), id=elem.get("id"),
content=content.text if content is not None else "", content=(content.text or "").strip(),
error=error.text if error is not None else "" error=(error.text or "").strip()
) )
@staticmethod @staticmethod
@@ -86,7 +86,7 @@ class IterationParser:
id=elem.get("id"), id=elem.get("id"),
io_buffer=io_buffer io_buffer=io_buffer
) )
entry.content = elem.text or "" entry.content = (elem.text or "").strip()
entry.read = True entry.read = True
return entry return entry
@@ -94,7 +94,7 @@ class IterationParser:
def _parse_reasoning(elem: ET.Element) -> ReasoningEntry: def _parse_reasoning(elem: ET.Element) -> ReasoningEntry:
return ReasoningEntry( return ReasoningEntry(
id=elem.get("id"), id=elem.get("id"),
content=elem.text or "" content=(elem.text or "").strip()
) )
@staticmethod @staticmethod
@@ -102,7 +102,7 @@ class IterationParser:
entry = RepeatEntry( entry = RepeatEntry(
id=elem.get("id"), id=elem.get("id"),
work_dir=work_dir, work_dir=work_dir,
script=elem.text, script=(elem.text or "").strip(),
timeout=float(elem.get("timeout")) if elem.get("timeout") else None, timeout=float(elem.get("timeout")) if elem.get("timeout") else None,
limit=int(elem.get("limit")) if elem.get("limit") else None limit=int(elem.get("limit")) if elem.get("limit") else None
) )
@@ -111,10 +111,10 @@ class IterationParser:
entry.timed_out = elem.get("timed_out") == "true" entry.timed_out = elem.get("timed_out") == "true"
stdout = elem.find("stdout") stdout = elem.find("stdout")
if stdout is not None: if stdout is not None:
entry.stdout = stdout.text or "" entry.stdout = (stdout.text or "").strip()
stderr = elem.find("stderr") stderr = elem.find("stderr")
if stderr is not None: if stderr is not None:
entry.stderr = stderr.text or "" entry.stderr = (stderr.text or "").strip()
return entry return entry
@staticmethod @staticmethod
@@ -122,7 +122,7 @@ class IterationParser:
entry = SingleEntry( entry = SingleEntry(
id=elem.get("id"), id=elem.get("id"),
work_dir=work_dir, work_dir=work_dir,
script=elem.text, script=(elem.text or "").strip(),
timeout=float(elem.get("timeout")) if elem.get("timeout") else None, timeout=float(elem.get("timeout")) if elem.get("timeout") else None,
limit=int(elem.get("limit")) if elem.get("limit") else None limit=int(elem.get("limit")) if elem.get("limit") else None
) )
@@ -132,17 +132,17 @@ class IterationParser:
entry.timed_out = elem.get("timed_out") == "true" entry.timed_out = elem.get("timed_out") == "true"
stdout = elem.find("stdout") stdout = elem.find("stdout")
if stdout is not None: if stdout is not None:
entry.stdout = stdout.text or "" entry.stdout = (stdout.text or "").strip()
stderr = elem.find("stderr") stderr = elem.find("stderr")
if stderr is not None: if stderr is not None:
entry.stderr = stderr.text or "" entry.stderr = (stderr.text or "").strip()
return entry return entry
@staticmethod @staticmethod
def _parse_write(elem: ET.Element, io_buffer) -> WriteEntry: def _parse_write(elem: ET.Element, io_buffer) -> WriteEntry:
entry = WriteEntry( entry = WriteEntry(
id=elem.get("id"), id=elem.get("id"),
content=elem.text or "", content=(elem.text or "").strip(),
io_buffer=io_buffer io_buffer=io_buffer
) )
entry.written = True entry.written = True