[Bugfix] [Parser] Fix Qwen3 latent bug in partial params dropping values containing `<` (#46047)
Signed-off-by: Ben Browning <bbrownin@redhat.com>
Ben Browning committed
Jun 18, 2026 at 14:04 UTC
09f3cd5c1080de42c9001803f638852b7f6a4310
2 files changed
+19
-1
tests/parser/engine/test_qwen3.py
+18
@@ -615,6 +615,24 @@ class TestArgConverter:
615
assert result["command"] == "ls -la"
616
assert result["desc"] == "\npartial value"
617
618
+ def test_partial_value_with_angle_bracket(self):
619
+ from vllm.parser.qwen3 import (
620
+ _qwen3_arg_converter,
621
+ )
622
+
623
+ raw = "<parameter=expr>x<5"
624
+ result = json.loads(_qwen3_arg_converter(raw, partial=True))
625
+ assert result == {"expr": "x<5"}
626
+
627
+ def test_partial_value_with_angle_bracket_and_complete_param(self):
628
+ from vllm.parser.qwen3 import (
629
+ _qwen3_arg_converter,
630
+ )
631
+
632
+ raw = "<parameter=city>Tokyo</parameter>\n<parameter=expr>x<5"
633
+ result = json.loads(_qwen3_arg_converter(raw, partial=True))
634
+ assert result == {"city": "Tokyo", "expr": "x<5"}
635
+
636
637
class TestSchemaAwareTypeCoercion:
638
"""Verify that _fix_arg_types corrects miscoerced values using the
vllm/parser/qwen3.py
+1
-1
@@ -49,7 +49,7 @@ _PARAM_RE = re.compile(
49
r"(?:<\s*/\s*parameter\s*>|(?=<\s*parameter\s*=))",
50
re.DOTALL,
51
)
52
-_PARTIAL_PARAM_RE = re.compile(r"<\s*parameter\s*=\s*([^>]+)>([^<]*)$", re.DOTALL)
52
+_PARTIAL_PARAM_RE = re.compile(r"<\s*parameter\s*=\s*([^>]+)>(.*)$", re.DOTALL)
53
54
55
def _qwen3_arg_converter(raw_args: str, partial: bool) -> str: