from typing import Tuple


def test_keyword_arguments() -> None:
    """Keyword arguments are arguments of the form `kwarg=value`."""

    def keyword_arguments(
        first: int, second: int = 2, third: int = 3
    ) -> Tuple[int, int, int]:
        """Accept 1 required argument and 2 optional arguments."""
        return (first, second, third)

    # 1 positional argument
    assert keyword_arguments(10) == (10, 2, 3)
    # 1 keyword argument
    assert keyword_arguments(first=10) == (10, 2, 3)
    # 2 keyword arguments, order unimportant
    assert keyword_arguments(second=20, first=10) == (10, 20, 3)
    # 1 positional argument, 1 keyword argument
    assert keyword_arguments(10, third=30) == (10, 2, 30)
    # Positional argument cannot follow a keyword argument
    # keyword_arguments(second=20, 10)