Unverified Commit 5a2c76cb authored by Ning Xie's avatar Ning Xie Committed by GitHub
Browse files

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


Signed-off-by: default avatarAndy Xie <andy.xning@gmail.com>
parent 38b13dfe
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
import enum
import json import json
import logging import logging
import os import os
import sys import sys
import tempfile import tempfile
from dataclasses import dataclass
from json.decoder import JSONDecodeError from json.decoder import JSONDecodeError
from tempfile import NamedTemporaryFile from tempfile import NamedTemporaryFile
from typing import Any from typing import Any
...@@ -16,6 +17,7 @@ import pytest ...@@ -16,6 +17,7 @@ import pytest
from vllm.logger import (_DATE_FORMAT, _FORMAT, _configure_vllm_root_logger, from vllm.logger import (_DATE_FORMAT, _FORMAT, _configure_vllm_root_logger,
enable_trace_function_call, init_logger) enable_trace_function_call, init_logger)
from vllm.logging_utils import NewLineFormatter from vllm.logging_utils import NewLineFormatter
from vllm.logging_utils.dump_input import prepare_object_to_dump
def f1(x): def f1(x):
...@@ -216,3 +218,37 @@ def test_custom_logging_config_causes_an_error_if_configure_logging_is_off(): ...@@ -216,3 +218,37 @@ def test_custom_logging_config_causes_an_error_if_configure_logging_is_off():
assert other_logger.handlers != root_logger.handlers assert other_logger.handlers != root_logger.handlers
assert other_logger.level != root_logger.level assert other_logger.level != root_logger.level
assert other_logger.propagate assert other_logger.propagate
def test_prepare_object_to_dump():
str_obj = 'str'
assert prepare_object_to_dump(str_obj) == "'str'"
list_obj = [1, 2, 3]
assert prepare_object_to_dump(list_obj) == '[1, 2, 3]'
dict_obj = {'a': 1, 'b': 'b'}
assert prepare_object_to_dump(dict_obj) in [
"{a: 1, b: 'b'}", "{b: 'b', a: 1}"
]
set_obj = {1, 2, 3}
assert prepare_object_to_dump(set_obj) == '[1, 2, 3]'
tuple_obj = ('a', 'b', 'c')
assert prepare_object_to_dump(tuple_obj) == "['a', 'b', 'c']"
class CustomEnum(enum.Enum):
A = enum.auto()
B = enum.auto()
C = enum.auto()
assert prepare_object_to_dump(CustomEnum.A) == repr(CustomEnum.A)
@dataclass
class CustomClass:
a: int
b: str
assert (prepare_object_to_dump(CustomClass(
1, 'b')) == "CustomClass(a=1, b='b')")
...@@ -18,7 +18,7 @@ logger = init_logger(__name__) ...@@ -18,7 +18,7 @@ logger = init_logger(__name__)
def prepare_object_to_dump(obj) -> str: def prepare_object_to_dump(obj) -> str:
if isinstance(obj, str): if isinstance(obj, str):
return "'{obj}'" # Double quotes return f"'{obj}'" # Double quotes
elif isinstance(obj, dict): elif isinstance(obj, dict):
dict_str = ', '.join({f'{str(k)}: {prepare_object_to_dump(v)}' \ dict_str = ', '.join({f'{str(k)}: {prepare_object_to_dump(v)}' \
for k, v in obj.items()}) for k, v in obj.items()})
...@@ -42,9 +42,9 @@ def prepare_object_to_dump(obj) -> str: ...@@ -42,9 +42,9 @@ def prepare_object_to_dump(obj) -> str:
return obj.anon_repr() return obj.anon_repr()
elif hasattr(obj, '__dict__'): elif hasattr(obj, '__dict__'):
items = obj.__dict__.items() items = obj.__dict__.items()
dict_str = ','.join([f'{str(k)}={prepare_object_to_dump(v)}' \ dict_str = ', '.join([f'{str(k)}={prepare_object_to_dump(v)}' \
for k, v in items]) for k, v in items])
return (f"{type(obj).__name__}({dict_str})") return f"{type(obj).__name__}({dict_str})"
else: else:
# Hacky way to make sure we can serialize the object in JSON format # Hacky way to make sure we can serialize the object in JSON format
try: try:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment