def get_default_args(fn) -> dict:
    """
    It takes a function and returns a dictionary of the default arguments

    Args:
      func: The function you want to get the default arguments from.

    Returns:
      A dictionary of the default arguments for the function.
    """
    arg_spec = inspect.getfullargspec(fn)
    # `arg_spec` contains the default values for the optional arguments, starting on the first optional, so there
    # may be mandatory arguments before with no default value, those will be set to `None`, while the rest should match
    # the default values in `arg_spec.defaults`
    default_args = (
        dict(zip(arg_spec.args, [None] * (len(arg_spec.args) - len(arg_spec.defaults)) + list(arg_spec.defaults)))
        if arg_spec.defaults
        else {}
    )
    for key in args_to_remove:
        if key in default_args:
            del default_args[key]
    return default_args

    It takes a function and returns a dictionary of the default arguments

    Args:
      func: The function you want to get the default arguments from.

    Returns:
      A dictionary of the default arguments for the function.
    
argilla-v1/src/argilla_v1/training/utils.py