| 1 | # SPDX-License-Identifier: Apache-2.0 |
| 2 | # SPDX-FileCopyrightText: Copyright contributors to the vLLM project |
| 3 | # ruff: noqa |
| 4 | |
| 5 | import pytest |
| 6 | |
| 7 | from vllm.utils.func_utils import supports_kw |
| 8 | |
| 9 | |
| 10 | @pytest.mark.parametrize( |
| 11 | ("callable", "kw_name", "requires_kw_only", "allow_var_kwargs", "is_supported"), |
| 12 | [ |
| 13 | # Tests for positional argument support |
| 14 | (lambda foo: None, "foo", True, True, False), |
| 15 | (lambda foo: None, "foo", False, True, True), |
| 16 | # Tests for positional or keyword / keyword only |
| 17 | (lambda foo=100: None, "foo", True, True, False), |
| 18 | (lambda *, foo: None, "foo", False, True, True), |
| 19 | # Tests to make sure the names of variadic params are NOT supported |
| 20 | (lambda *args: None, "args", False, True, False), |
| 21 | (lambda **kwargs: None, "kwargs", False, True, False), |
| 22 | # Tests for if we allow var kwargs to add support |
| 23 | (lambda foo: None, "something_else", False, True, False), |
| 24 | (lambda foo, **kwargs: None, "something_else", False, True, True), |
| 25 | (lambda foo, **kwargs: None, "kwargs", True, True, False), |
| 26 | (lambda foo, **kwargs: None, "foo", True, True, False), |
| 27 | ], |
| 28 | ) |
| 29 | def test_supports_kw( |
| 30 | callable, kw_name, requires_kw_only, allow_var_kwargs, is_supported |
| 31 | ): |
| 32 | assert ( |
| 33 | supports_kw( |
| 34 | callable=callable, |
| 35 | kw_name=kw_name, |
| 36 | requires_kw_only=requires_kw_only, |
| 37 | allow_var_kwargs=allow_var_kwargs, |
| 38 | ) |
| 39 | == is_supported |
| 40 | ) |