Merge PR #444: fix: add missing re.DOTALL flag to DeepSeek V3 tool call parser

Authored by PercyDikec. Fixes #443. Without re.DOTALL, the regex .*
doesn't match newlines, so multi-line JSON arguments (the normal case)
silently fail to parse. Every other parser in the codebase that matches
across lines already uses re.DOTALL.
This commit is contained in:
teknium1 2026-03-06 04:39:53 -08:00
commit 936fda3f9e

View file

@ -38,7 +38,8 @@ class DeepSeekV3ToolCallParser(ToolCallParser):
# Regex captures: type, function_name, function_arguments # Regex captures: type, function_name, function_arguments
PATTERN = re.compile( PATTERN = re.compile(
r"<tool▁call▁begin>(?P<type>.*)<tool▁sep>(?P<function_name>.*)\n```json\n(?P<function_arguments>.*)\n```<tool▁call▁end>" r"<tool▁call▁begin>(?P<type>.*)<tool▁sep>(?P<function_name>.*)\n```json\n(?P<function_arguments>.*)\n```<tool▁call▁end>",
re.DOTALL,
) )
def parse(self, text: str) -> ParseResult: def parse(self, text: str) -> ParseResult: