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: