def get_required_args(fn) -> list:
    """
    Returns a list of required arguments for the function fn.

    >>> def foo(x, y, z=100): return x + y + z
    >>> get_required_args(foo)
    ['x', 'y']

    >>> def bar(x, y=100, *args, **kwargs): return x
    >>> get_required_args(bar)
    ['x']
    """
    sig = inspect.signature(fn)
    return [
        name for name, param in sig.parameters.items()
        if param.default == inspect._empty and param.kind not in VAR_ARGS
    ]
def get_required_args ( fn ) -> list : sig = inspect . signature ( fn ) return [ name for name , param in sig . parameters . items ( ) if param . default == inspect . _empty and param . kind not in VAR_ARGS ]
Returns a list of required arguments for the function fn.

    >>> def foo(x, y, z=100): return x + y + z
    >>> get_required_args(foo)
    ['x', 'y']

    >>> def bar(x, y=100, *args, **kwargs): return x
    >>> get_required_args(bar)
    ['x']