@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 5a2c76cbe1
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 15, 08:30 UTC

[CI] fix dump_input for str type (#18697)

Signed-off-by: Andy Xie <andy.xning@gmail.com>

Ning Xie committed May 26, 2025 at 18:23 UTC 5a2c76cbe148b050b5d77b3c638f9584eba8eee9
2 files changed +40 -4
tests/test_logger.py
+37 -1
@@ -1,10 +1,11 @@
1 # SPDX-License-Identifier: Apache-2.0
2 -
2 +import enum
3 import json
4 import logging
5 import os
6 import sys
7 import tempfile
8 +from dataclasses import dataclass
9 from json.decoder import JSONDecodeError
10 from tempfile import NamedTemporaryFile
11 from typing import Any
@@ -16,6 +17,7 @@ import pytest
17 from vllm.logger import (_DATE_FORMAT, _FORMAT, _configure_vllm_root_logger,
18 enable_trace_function_call, init_logger)
19 from vllm.logging_utils import NewLineFormatter
20 +from vllm.logging_utils.dump_input import prepare_object_to_dump
21
22
23 def f1(x):
@@ -216,3 +218,37 @@ def test_custom_logging_config_causes_an_error_if_configure_logging_is_off():
218 assert other_logger.handlers != root_logger.handlers
219 assert other_logger.level != root_logger.level
220 assert other_logger.propagate
221 +
222 +
223 +def test_prepare_object_to_dump():
224 + str_obj = 'str'
225 + assert prepare_object_to_dump(str_obj) == "'str'"
226 +
227 + list_obj = [1, 2, 3]
228 + assert prepare_object_to_dump(list_obj) == '[1, 2, 3]'
229 +
230 + dict_obj = {'a': 1, 'b': 'b'}
231 + assert prepare_object_to_dump(dict_obj) in [
232 + "{a: 1, b: 'b'}", "{b: 'b', a: 1}"
233 + ]
234 +
235 + set_obj = {1, 2, 3}
236 + assert prepare_object_to_dump(set_obj) == '[1, 2, 3]'
237 +
238 + tuple_obj = ('a', 'b', 'c')
239 + assert prepare_object_to_dump(tuple_obj) == "['a', 'b', 'c']"
240 +
241 + class CustomEnum(enum.Enum):
242 + A = enum.auto()
243 + B = enum.auto()
244 + C = enum.auto()
245 +
246 + assert prepare_object_to_dump(CustomEnum.A) == repr(CustomEnum.A)
247 +
248 + @dataclass
249 + class CustomClass:
250 + a: int
251 + b: str
252 +
253 + assert (prepare_object_to_dump(CustomClass(
254 + 1, 'b')) == "CustomClass(a=1, b='b')")
vllm/logging_utils/dump_input.py
+3 -3
@@ -18,7 +18,7 @@ logger = init_logger(__name__)
18
19 def prepare_object_to_dump(obj) -> str:
20 if isinstance(obj, str):
21 - return "'{obj}'" # Double quotes
21 + return f"'{obj}'" # Double quotes
22 elif isinstance(obj, dict):
23 dict_str = ', '.join({f'{str(k)}: {prepare_object_to_dump(v)}' \
24 for k, v in obj.items()})
@@ -42,9 +42,9 @@ def prepare_object_to_dump(obj) -> str:
42 return obj.anon_repr()
43 elif hasattr(obj, '__dict__'):
44 items = obj.__dict__.items()
45 - dict_str = ','.join([f'{str(k)}={prepare_object_to_dump(v)}' \
45 + dict_str = ', '.join([f'{str(k)}={prepare_object_to_dump(v)}' \
46 for k, v in items])
47 - return (f"{type(obj).__name__}({dict_str})")
47 + return f"{type(obj).__name__}({dict_str})"
48 else:
49 # Hacky way to make sure we can serialize the object in JSON format
50 try: