def error_reported_bug() -> None:
    # example from https://github.com/python/typeshed/issues/4051
    top: Optional[int] = None
    try:
        my.max(5, top)
    except TypeError as exc:
        print(exc)
def test_multi_with_key_params(
    first: LessT,
    rest: Iterable[LessT],
    key: Optional[KeyFun],
    expected: LessT,
) -> None:
    result = mymax.max(first, *rest, key=key)
    assert result == expected
def demo_args_iter_str() -> None:
    args = iter('banana kiwi mango apple'.split())
    expected = 'mango'
    result = my.max(args)
    print(args, expected, result, sep='\n')
    assert result == expected
    if TYPE_CHECKING:
        reveal_type(args)
        reveal_type(expected)
        reveal_type(result)
def demo_args_iter_int() -> None:
    args = [30, 10, 20]
    expected = 30
    result = my.max(args)
    print(args, expected, result, sep='\n')
    assert result == expected
    if TYPE_CHECKING:
        reveal_type(args)
        reveal_type(expected)
        reveal_type(result)
def demo_args_list_float() -> None:
    args = [2.5, 3.5, 1.5]
    expected = 3.5
    result = my.max(*args)
    print(args, expected, result, sep='\n')
    assert result == expected
    if TYPE_CHECKING:
        reveal_type(args)
        reveal_type(expected)
        reveal_type(result)
Example #6
0
def demo_args_fraction() -> None:
    a, b = Fraction(5, 8), Fraction(7, 12)
    expected = a
    result = my.max(a, b)
    assert result == expected
    print((a, b), '->', result)
    if TYPE_CHECKING:
        reveal_type(a)
        reveal_type(b)
        reveal_type(result)
Example #7
0
def error_args_str() -> None:
    a, b = 'apple', 'banana'
    expected = b
    result = my.max(a, b)
    assert result == expected
    print((a, b), '->', result)
    print(result.upper())
    if TYPE_CHECKING:
        reveal_type(a)
        reveal_type(b)
        reveal_type(result)
Example #8
0
def demo_args_float_fraction() -> None:
    a, b = .9, Fraction(5, 8)
    expected = a
    result = my.max(a, b)
    assert result == expected
    print((a, b), '->', result)
    print(result.numerator, result.denominator, sep='/')
    if TYPE_CHECKING:
        reveal_type(a)
        reveal_type(b)
        reveal_type(result)
def demo_empty_iterable_with_default() -> None:
    args: List[float] = []
    default = None
    expected = None
    result = my.max(args, default=default)
    print(args, default, expected, result, sep='\n')
    assert result == expected
    if TYPE_CHECKING:
        reveal_type(args)
        reveal_type(default)
        reveal_type(expected)
        reveal_type(result)
def demo_different_key_none() -> None:
    args = iter('banana kiwi mango apple'.split())
    key = None
    expected = 'mango'
    result = my.max(args, key=key)
    print(args, key, expected, result, sep='\n')
    assert result == expected
    if TYPE_CHECKING:
        reveal_type(args)
        reveal_type(key)
        reveal_type(expected)
        reveal_type(result)
def demo_args_iter_not_comparable_with_key() -> None:
    args = [object(), object(), object()]
    key = id
    expected = max(args, key=id)
    result = my.max(args, key=key)
    print(args, key, expected, result, sep='\n')
    assert result == expected
    if TYPE_CHECKING:
        reveal_type(args)
        reveal_type(key)
        reveal_type(expected)
        reveal_type(result)
def error_args_iter_not_comparable() -> None:
    try:
        my.max([None, None])
    except TypeError as exc:
        print(exc)
def test_two_complex():
    a = 5 + 4j
    b = 3 + 5j
    result = mymax.max(a, b, key=abs)
    assert result == a
def test_multi_params(first: LessT, rest: Iterable[LessT],
                      expected: LessT) -> None:
    result = mymax.max(first, *rest)
    assert result == expected
def test_two_comparables_params(a: LessT, b: LessT, expected: LessT) -> None:
    result = mymax.max(a, b)
    assert result == expected
def test_two_comparables_params(a: SupportsLessThan, b: SupportsLessThan,
                                expected: SupportsLessThan) -> None:
    result = mymax.max(a, b)
    assert result == expected
def test_two_numbers_params(a: NumberT, b: NumberT, expected: NumberT) -> None:
    result = mymax.max(a, b)
    assert result == expected
Example #18
0
def test_max_iterable(iterable, expected):
    result = my.max(iterable)
    assert result == expected
Example #19
0
def test_max_args(args, expected):
    result = my.max(*args)
    assert result == expected
Example #20
0
def test_two_numbers_params(a: Numeric, b: Numeric, expected: Numeric) -> None:
    result = my.max(a, b)
    assert result == expected
Example #21
0
def test_two_floats(a: float, b: float, expected: float) -> None:
    result: float = my.max(a, b)
    assert result == expected
def test_two_ints(a: int, b: int, expected: int) -> None:
    result = mymax.max(a, b)
    assert result == expected
def test_two_numbers() -> None:
    result = mymax.max(Fraction(1, 3), Fraction(1, 4))
    assert result == Fraction(1, 3)
def error_single_arg_not_iterable() -> None:
    try:
        my.max(1)
    except TypeError as exc:
        print(exc)
def test_two_comparables() -> None:
    result = mymax.max('a', 'B')
    assert result == 'a'
Example #26
0
def test_max_empty_iterable_with_default(iterable, default, expected):
    result = my.max(iterable, default=default)
    assert result == expected
Example #27
0
def test_max_single_arg_not_iterable():
    msg = "'int' object is not iterable"
    with pytest.raises(TypeError) as exc:
        my.max(1)
    assert exc.value.args[0] == msg
Example #28
0
def test_max_iterable_with_key(fruits: List[str], key: Callable[[str], str],
                               expected: str) -> None:
    result = my.max(fruits, key=key)
    assert result == expected
Example #29
0
def demo_args_float() -> None:
    a, b = 2.5, 3.5
    expected = b
    result = my.max(a, b)
    assert result == expected
    print((a, b), '->', result)
Example #30
0
def test_max_empty_iterable_no_default():
    with pytest.raises(ValueError) as exc:
        my.max([])
    assert exc.value.args[0] == my.EMPTY_MSG