Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
vllm_cscc
Commits
d2740faf
Unverified
Commit
d2740faf
authored
Oct 16, 2025
by
Cyrus Leung
Committed by
GitHub
Oct 16, 2025
Browse files
[Chore] Separate out `vllm.utils.collections` (#26990)
Signed-off-by:
DarkLight1337
<
tlleungac@connect.ust.hk
>
parent
17838e50
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
54 additions
and
43 deletions
+54
-43
tests/conftest.py
tests/conftest.py
+2
-1
tests/models/multimodal/generation/vlm_utils/model_utils.py
tests/models/multimodal/generation/vlm_utils/model_utils.py
+1
-1
tests/models/multimodal/processing/test_tensor_schema.py
tests/models/multimodal/processing/test_tensor_schema.py
+1
-1
tests/utils_/test_collections.py
tests/utils_/test_collections.py
+31
-0
tests/utils_/test_utils.py
tests/utils_/test_utils.py
+0
-25
vllm/entrypoints/llm.py
vllm/entrypoints/llm.py
+2
-1
vllm/entrypoints/openai/serving_chat.py
vllm/entrypoints/openai/serving_chat.py
+1
-1
vllm/entrypoints/openai/serving_completion.py
vllm/entrypoints/openai/serving_completion.py
+1
-1
vllm/entrypoints/openai/serving_embedding.py
vllm/entrypoints/openai/serving_embedding.py
+1
-1
vllm/entrypoints/openai/serving_engine.py
vllm/entrypoints/openai/serving_engine.py
+2
-1
vllm/entrypoints/openai/tool_parsers/abstract_tool_parser.py
vllm/entrypoints/openai/tool_parsers/abstract_tool_parser.py
+2
-1
vllm/inputs/parse.py
vllm/inputs/parse.py
+1
-1
vllm/model_executor/layers/activation.py
vllm/model_executor/layers/activation.py
+1
-1
vllm/model_executor/layers/quantization/gptq.py
vllm/model_executor/layers/quantization/gptq.py
+1
-1
vllm/model_executor/layers/quantization/gptq_marlin.py
vllm/model_executor/layers/quantization/gptq_marlin.py
+1
-1
vllm/model_executor/models/deepseek_vl2.py
vllm/model_executor/models/deepseek_vl2.py
+1
-1
vllm/model_executor/models/llava_next_video.py
vllm/model_executor/models/llava_next_video.py
+1
-1
vllm/model_executor/models/minicpmv.py
vllm/model_executor/models/minicpmv.py
+1
-1
vllm/model_executor/models/qwen3_vl.py
vllm/model_executor/models/qwen3_vl.py
+1
-1
vllm/multimodal/inputs.py
vllm/multimodal/inputs.py
+2
-1
No files found.
tests/conftest.py
View file @
d2740faf
...
...
@@ -57,7 +57,8 @@ from vllm.multimodal.utils import fetch_image
from
vllm.outputs
import
RequestOutput
from
vllm.sampling_params
import
BeamSearchParams
from
vllm.transformers_utils.utils
import
maybe_model_redirect
from
vllm.utils
import
is_list_of
,
set_default_torch_num_threads
from
vllm.utils
import
set_default_torch_num_threads
from
vllm.utils.collections
import
is_list_of
logger
=
init_logger
(
__name__
)
...
...
tests/models/multimodal/generation/vlm_utils/model_utils.py
View file @
d2740faf
...
...
@@ -25,7 +25,7 @@ from transformers import (
from
transformers.video_utils
import
VideoMetadata
from
vllm.logprobs
import
SampleLogprobs
from
vllm.utils
import
is_list_of
from
vllm.utils
.collections
import
is_list_of
from
.....conftest
import
HfRunner
,
ImageAsset
,
ImageTestAssets
from
.types
import
RunnerOutput
...
...
tests/models/multimodal/processing/test_tensor_schema.py
View file @
d2740faf
...
...
@@ -35,7 +35,7 @@ from vllm.multimodal import MULTIMODAL_REGISTRY, BatchedTensorInputs
from
vllm.multimodal.processing
import
BaseMultiModalProcessor
,
InputProcessingContext
from
vllm.multimodal.utils
import
group_mm_kwargs_by_modality
from
vllm.transformers_utils.tokenizer
import
cached_tokenizer_from_config
from
vllm.utils
import
is_list_of
from
vllm.utils
.collections
import
is_list_of
from
...registry
import
_MULTIMODAL_EXAMPLE_MODELS
,
HF_EXAMPLE_MODELS
from
...utils
import
dummy_hf_overrides
...
...
tests/utils_/test_collections.py
0 → 100644
View file @
d2740faf
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
import
pytest
from
vllm.utils.collections
import
swap_dict_values
@
pytest
.
mark
.
parametrize
(
"obj,key1,key2"
,
[
# Tests for both keys exist
({
1
:
"a"
,
2
:
"b"
},
1
,
2
),
# Tests for one key does not exist
({
1
:
"a"
,
2
:
"b"
},
1
,
3
),
# Tests for both keys do not exist
({
1
:
"a"
,
2
:
"b"
},
3
,
4
),
],
)
def
test_swap_dict_values
(
obj
,
key1
,
key2
):
original_obj
=
obj
.
copy
()
swap_dict_values
(
obj
,
key1
,
key2
)
if
key1
in
original_obj
:
assert
obj
[
key2
]
==
original_obj
[
key1
]
else
:
assert
key2
not
in
obj
if
key2
in
original_obj
:
assert
obj
[
key1
]
==
original_obj
[
key2
]
else
:
assert
key1
not
in
obj
tests/utils_/test_utils.py
View file @
d2740faf
...
...
@@ -38,7 +38,6 @@ from vllm.utils import (
sha256
,
split_host_port
,
split_zmq_path
,
swap_dict_values
,
unique_filepath
,
)
...
...
@@ -516,30 +515,6 @@ def test_placeholder_module_error_handling():
_
=
placeholder_attr
.
module
@
pytest
.
mark
.
parametrize
(
"obj,key1,key2"
,
[
# Tests for both keys exist
({
1
:
"a"
,
2
:
"b"
},
1
,
2
),
# Tests for one key does not exist
({
1
:
"a"
,
2
:
"b"
},
1
,
3
),
# Tests for both keys do not exist
({
1
:
"a"
,
2
:
"b"
},
3
,
4
),
],
)
def
test_swap_dict_values
(
obj
,
key1
,
key2
):
original_obj
=
obj
.
copy
()
swap_dict_values
(
obj
,
key1
,
key2
)
if
key1
in
original_obj
:
assert
obj
[
key2
]
==
original_obj
[
key1
]
else
:
assert
key2
not
in
obj
if
key2
in
original_obj
:
assert
obj
[
key1
]
==
original_obj
[
key2
]
else
:
assert
key1
not
in
obj
def
test_model_specification
(
parser_with_config
,
cli_config_file
,
cli_config_file_with_model
):
...
...
vllm/entrypoints/llm.py
View file @
d2740faf
...
...
@@ -75,7 +75,8 @@ from vllm.transformers_utils.tokenizer import (
get_cached_tokenizer
,
)
from
vllm.usage.usage_lib
import
UsageContext
from
vllm.utils
import
Counter
,
Device
,
as_iter
,
is_list_of
from
vllm.utils
import
Counter
,
Device
from
vllm.utils.collections
import
as_iter
,
is_list_of
from
vllm.v1.engine
import
EngineCoreRequest
from
vllm.v1.engine.llm_engine
import
LLMEngine
from
vllm.v1.sample.logits_processor
import
LogitsProcessor
...
...
vllm/entrypoints/openai/serving_chat.py
View file @
d2740faf
...
...
@@ -70,7 +70,7 @@ from vllm.transformers_utils.tokenizers import (
truncate_tool_call_ids
,
validate_request_params
,
)
from
vllm.utils
import
as_list
from
vllm.utils
.collections
import
as_list
logger
=
init_logger
(
__name__
)
...
...
vllm/entrypoints/openai/serving_completion.py
View file @
d2740faf
...
...
@@ -34,8 +34,8 @@ from vllm.logprobs import Logprob
from
vllm.outputs
import
RequestOutput
from
vllm.sampling_params
import
BeamSearchParams
,
SamplingParams
from
vllm.transformers_utils.tokenizer
import
AnyTokenizer
from
vllm.utils
import
as_list
from
vllm.utils.asyncio
import
merge_async_iterators
from
vllm.utils.collections
import
as_list
logger
=
init_logger
(
__name__
)
...
...
vllm/entrypoints/openai/serving_embedding.py
View file @
d2740faf
...
...
@@ -39,8 +39,8 @@ from vllm.outputs import (
RequestOutput
,
)
from
vllm.pooling_params
import
PoolingParams
from
vllm.utils
import
chunk_list
from
vllm.utils.asyncio
import
merge_async_iterators
from
vllm.utils.collections
import
chunk_list
logger
=
init_logger
(
__name__
)
...
...
vllm/entrypoints/openai/serving_engine.py
View file @
d2740faf
...
...
@@ -90,13 +90,14 @@ from vllm.tracing import (
log_tracing_disabled_warning
,
)
from
vllm.transformers_utils.tokenizer
import
AnyTokenizer
,
MistralTokenizer
from
vllm.utils
import
is_list_of
,
random_uuid
from
vllm.utils
import
random_uuid
from
vllm.utils.asyncio
import
(
AsyncMicrobatchTokenizer
,
collect_from_async_generator
,
make_async
,
merge_async_iterators
,
)
from
vllm.utils.collections
import
is_list_of
from
vllm.v1.engine
import
EngineCoreRequest
logger
=
init_logger
(
__name__
)
...
...
vllm/entrypoints/openai/tool_parsers/abstract_tool_parser.py
View file @
d2740faf
...
...
@@ -12,7 +12,8 @@ from vllm.entrypoints.openai.protocol import (
)
from
vllm.logger
import
init_logger
from
vllm.transformers_utils.tokenizer
import
AnyTokenizer
from
vllm.utils
import
import_from_path
,
is_list_of
from
vllm.utils
import
import_from_path
from
vllm.utils.collections
import
is_list_of
logger
=
init_logger
(
__name__
)
...
...
vllm/inputs/parse.py
View file @
d2740faf
...
...
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Literal, NamedTuple, TypeAlias, TypedDict, cas
from
typing_extensions
import
TypeIs
from
vllm.utils
import
is_list_of
from
vllm.utils
.collections
import
is_list_of
from
.data
import
(
EmbedsPrompt
,
...
...
vllm/model_executor/layers/activation.py
View file @
d2740faf
...
...
@@ -17,7 +17,7 @@ from vllm.logger import init_logger
from
vllm.model_executor.custom_op
import
CustomOp
from
vllm.model_executor.utils
import
set_weight_attrs
from
vllm.platforms
import
current_platform
from
vllm.utils
import
LazyDict
from
vllm.utils
.collections
import
LazyDict
logger
=
init_logger
(
__name__
)
...
...
vllm/model_executor/layers/quantization/gptq.py
View file @
d2740faf
...
...
@@ -28,7 +28,7 @@ from vllm.model_executor.parameter import (
RowvLLMParameter
,
)
from
vllm.transformers_utils.config
import
get_safetensors_params_metadata
from
vllm.utils
import
is_list_of
from
vllm.utils
.collections
import
is_list_of
if
TYPE_CHECKING
:
from
vllm.model_executor.layers.quantization
import
QuantizationMethods
...
...
vllm/model_executor/layers/quantization/gptq_marlin.py
View file @
d2740faf
...
...
@@ -57,7 +57,7 @@ from vllm.model_executor.parameter import (
from
vllm.platforms
import
current_platform
from
vllm.scalar_type
import
scalar_types
from
vllm.transformers_utils.config
import
get_safetensors_params_metadata
from
vllm.utils
import
is_list_of
from
vllm.utils
.collections
import
is_list_of
logger
=
init_logger
(
__name__
)
...
...
vllm/model_executor/models/deepseek_vl2.py
View file @
d2740faf
...
...
@@ -49,7 +49,7 @@ from vllm.transformers_utils.configs.deepseek_vl2 import (
)
from
vllm.transformers_utils.processors.deepseek_vl2
import
DeepseekVLV2Processor
from
vllm.transformers_utils.tokenizer
import
cached_tokenizer_from_config
from
vllm.utils
import
is_list_of
from
vllm.utils
.collections
import
is_list_of
from
vllm.utils.tensor_schema
import
TensorSchema
,
TensorShape
from
.interfaces
import
MultiModalEmbeddings
,
SupportsMultiModal
,
SupportsPP
...
...
vllm/model_executor/models/llava_next_video.py
View file @
d2740faf
...
...
@@ -33,7 +33,7 @@ from vllm.multimodal.processing import (
)
from
vllm.multimodal.profiling
import
BaseDummyInputsBuilder
from
vllm.sequence
import
IntermediateTensors
from
vllm.utils
import
is_list_of
from
vllm.utils
.collections
import
is_list_of
from
vllm.utils.tensor_schema
import
TensorSchema
,
TensorShape
from
.interfaces
import
MultiModalEmbeddings
,
SupportsMultiModal
,
SupportsPP
...
...
vllm/model_executor/models/minicpmv.py
View file @
d2740faf
...
...
@@ -86,7 +86,7 @@ from vllm.multimodal.processing import (
from
vllm.multimodal.profiling
import
BaseDummyInputsBuilder
from
vllm.platforms
import
current_platform
from
vllm.sequence
import
IntermediateTensors
from
vllm.utils
import
flatten_2d_lists
from
vllm.utils
.collections
import
flatten_2d_lists
from
vllm.utils.tensor_schema
import
TensorSchema
,
TensorShape
from
.idefics2_vision_model
import
Idefics2VisionTransformer
...
...
vllm/model_executor/models/qwen3_vl.py
View file @
d2740faf
...
...
@@ -79,7 +79,7 @@ from vllm.multimodal.processing import (
)
from
vllm.multimodal.profiling
import
BaseDummyInputsBuilder
from
vllm.sequence
import
IntermediateTensors
from
vllm.utils
import
is_list_of
from
vllm.utils
.collections
import
is_list_of
from
.interfaces
import
(
MultiModalEmbeddings
,
...
...
vllm/multimodal/inputs.py
View file @
d2740faf
...
...
@@ -22,7 +22,8 @@ from typing import (
import
numpy
as
np
from
typing_extensions
import
NotRequired
,
TypeVar
,
deprecated
from
vllm.utils
import
LazyLoader
,
full_groupby
,
is_list_of
from
vllm.utils
import
LazyLoader
from
vllm.utils.collections
import
full_groupby
,
is_list_of
from
vllm.utils.jsontree
import
json_map_leaves
if
TYPE_CHECKING
:
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment