61 lines
1.0 KiB
Python
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
|