Files
mlflow--mlflow/tests/utils/test_arguments_utils.py
2026-07-13 13:22:34 +08:00

61 lines
1.0 KiB
Python

import functools
import pytest
from mlflow.utils.arguments_utils import _get_arg_names
def no_args():
pass
def positional(a, b):
return a, b
def keyword(a=0, b=0):
return a, b
def positional_and_keyword(a, b=0):
return a, b
def keyword_only(*, a, b=0):
return a, b
def var_positional(*args):
return args
def var_keyword(**kwargs):
return kwargs
def var_positional_and_keyword(*args, **kwargs):
return args, kwargs
@functools.wraps(positional)
def wrapper(*args, **kwargs):
return positional(*args, **kwargs)
@pytest.mark.parametrize(
("func", "expected_args"),
[
(no_args, []),
(positional, ["a", "b"]),
(keyword, ["a", "b"]),
(positional_and_keyword, ["a", "b"]),
(keyword_only, ["a", "b"]),
(var_positional, ["args"]),
(var_keyword, ["kwargs"]),
(var_positional_and_keyword, ["args", "kwargs"]),
(wrapper, ["a", "b"]),
],
)
def test_get_arg_names(func, expected_args):
assert _get_arg_names(func) == expected_args