mirror of
https://github.com/hwchase17/langchain.git
synced 2026-02-21 14:43:07 +00:00
- **Description:**
- Exception handling in `XMLOutputParser`
1. Add Exception handling at `root = ET.fromstring(text)` // raises
`ET.ParseError`
2. Fix Exception class (commonly uses in `BaseOutputParser` class)
- AS-IS: raise `ValueError`, `ET.ParserError` without handling
```python
# langchain_core/output_parsers/xml.py
text = text.strip()
if (text.startswith("<") or text.startswith("\n<")) and (
text.endswith(">") or text.endswith(">\n")
):
root = ET.fromstring(text)
return self._root_to_dict(root)
else:
raise ValueError(f"Could not parse output: {text}")
```
- TO-BE: raise `OutputParserException`
```python
# langchain_core/output_parsers/xml.py
text = text.strip()
if (text.startswith("<") or text.startswith("\n<")) and (
text.endswith(">") or text.endswith(">\n")
):
try:
root = ET.fromstring(text)
return self._root_to_dict(root)
except ET.ParseError:
raise OutputParserException(f"Could not parse output: {text}")
else:
raise OutputParserException(f"Could not parse output: {text}")
```
- **Issue:** #19107
- **Dependencies:** None