"""function testcase"""

from collections.abc import Callable
import types
from typing import Annotated, Any, overload


def test_01() -> None: ...

def test_02(up: int = 8, down: int = 1) -> int: ...

def test_03(arg0: int, arg1: int, /) -> int: ...

def test_04() -> int: ...

@overload
def test_05(arg: int, /) -> int:
    """doc_1"""

@overload
def test_05(arg: float, /) -> int:
    """doc_2"""

@overload
def test_05b(arg: int, /) -> int:
    """doc_1"""

@overload
def test_05b(arg: float, /) -> int: ...

@overload
def test_05c(arg: int, /) -> int:
    """doc_1"""

@overload
def test_05c(arg: float, /) -> int: ...

def test_06() -> None: ...

@overload
def test_07(arg0: int, arg1: int, /, *args, **kwargs) -> tuple[int, int]: ...

@overload
def test_07(a: int, b: int, *myargs, **mykwargs) -> tuple[int, int]: ...

def test_simple(arg0: int, arg1: int, arg2: int, arg3: int, arg4: int, arg5: int, arg6: int, arg7: int, /) -> int: ...

@overload
def test_tuple() -> tuple[str, int]: ...

@overload
def test_tuple(arg: tuple[int, ...], /) -> int: ...

def test_bad_tuple() -> tuple[str, object]: ...

def test_call_1(arg: Callable[[int], int], /) -> object: ...

def test_call_2(arg: Callable[[int, int], None], /) -> object: ...

def test_call_extra(arg0: Callable[..., None], /, *args, **kwargs) -> object: ...

def test_list(arg: list, /) -> None: ...

def test_call_guard_wrapper_rvalue_ref(arg: int, /) -> int: ...

def test_call_guard() -> int: ...

def call_guard_value() -> int: ...

def test_release_gil() -> bool: ...

def test_print() -> None: ...

def test_iter(arg: object, /) -> list: ...

def test_iter_tuple(arg: tuple, /) -> list: ...

def test_iter_list(arg: list, /) -> list: ...

@overload
def test_08(arg: int, /) -> int:
    """first docstring"""

@overload
def test_08(x: Annotated[float, 'foo']) -> int:
    """another docstring"""

def test_09(arg: type, /) -> bool: ...

def test_10(arg: dict, /) -> dict: ...

def test_10_contains(arg: dict, /) -> bool: ...

def test_11_sl(arg: int, /) -> int: ...

def test_11_ul(arg: int, /) -> int: ...

def test_11_sll(arg: int, /) -> int: ...

def test_11_ull(arg: int, /) -> int: ...

def test_12(arg: str, /) -> str: ...

def test_13() -> str: ...

def test_14(arg: object, /) -> str: ...

def test_15(arg: bytes, /) -> str: ...

def test_15_d(arg: bytes, /) -> bytes: ...

def test_16(arg: str, /) -> bytes: ...

def test_17(arg: bytes, /) -> int: ...

def test_18(arg0: str, arg1: int, /) -> bytes: ...

def test_19(arg: int, /) -> object: ...

def test_20(arg: str, /) -> object: ...

def test_21(arg: int, /) -> int: ...

def test_21_f(arg: float, /) -> int: ...

def test_21_g() -> int: ...

def test_21_h() -> int: ...

def test_21_dnc(arg: float) -> float: ...

def test_21_fnc(arg: float) -> float: ...

def test_22() -> types.CapsuleType: ...

def test_23() -> types.CapsuleType: ...

def test_24(p: types.CapsuleType | None) -> int: ...

def test_25(arg: slice, /) -> slice: ...

def test_26() -> slice: ...

def test_27() -> slice: ...

def test_28() -> slice: ...

def test_29(arg: types.EllipsisType, /) -> types.EllipsisType: ...

def test_30(arg: Callable, /) -> str: ...

def test_31(arg: int, /) -> int: ...

def test_32(arg: int, /) -> int: ...

def identity_i8(arg: int, /) -> int: ...

def identity_u8(arg: int, /) -> int: ...

def identity_i16(arg: int, /) -> int: ...

def identity_u16(arg: int, /) -> int: ...

def identity_i32(arg: int, /) -> int: ...

def identity_u32(arg: int, /) -> int: ...

def identity_i64(arg: int, /) -> int: ...

def identity_u64(arg: int, /) -> int: ...

def test_33(self, arg: int, /) -> int: ...

def test_34(self, y: int) -> int: ...

def test_35() -> object: ...

def test_cast_char(arg: object, /) -> str: ...

def test_cast_str(arg: object, /) -> str: ...

def test_set() -> set: ...

def test_set_contains(arg0: set, arg1: object, /) -> bool: ...

def test_frozenset() -> frozenset: ...

def test_frozenset_contains(arg0: frozenset, arg1: object, /) -> bool: ...

def test_memoryview() -> memoryview: ...

def test_bad_memview() -> memoryview: ...

def test_del_list(arg: list, /) -> None: ...

def test_del_dict(arg: dict, /) -> None: ...

def test_ptr_return() -> tuple[int, int]: ...

def test_args_kwonly(i: int, j: float, *args, z: int) -> tuple: ...

def test_args_kwonly_kwargs(i: int, j: float, *args, z: int, **kwargs) -> tuple: ...

def test_kwonly_kwargs(i: int, *, j: float, **kwargs) -> tuple: ...

def test_kw_only_all(*, i: int, j: int) -> tuple: ...

def test_kw_only_some(arg0: int, *, j: int, k: int) -> tuple: ...

def test_kw_only_with_defaults(arg0: int = 3, j: int = 4, *, k: int = 5, z: int) -> tuple: ...

def test_kw_only_mixed(i: int, *, j: int) -> tuple: ...

class kw_only_methods:
    def __init__(self, *, v: int) -> None: ...

    @property
    def v(self) -> int: ...

    @v.setter
    def v(self, arg: int, /) -> None: ...

    def method_2k(self, *, i: int = 1, j: int = 2) -> tuple: ...

    def method_1p1k(self, i: int = 1, *, j: int = 2) -> tuple: ...

def test_any(arg: Any, /) -> Any: ...

def test_wrappers_list() -> bool: ...

def test_wrappers_dict() -> bool: ...

def test_wrappers_set() -> bool: ...

def hash_it(arg: object, /) -> int: ...

@overload
def test_bytearray_new() -> bytearray: ...

@overload
def test_bytearray_new(arg0: str, arg1: int, /) -> bytearray: ...

def test_bytearray_copy(arg: bytearray, /) -> bytearray: ...

def test_bytearray_c_str(arg: bytearray, /) -> str: ...

def test_bytearray_size(arg: bytearray, /) -> int: ...

def test_bytearray_resize(arg0: bytearray, arg1: int, /) -> None: ...

def test_call_policy(arg0: str, arg1: str, /) -> str: ...

def call_policy_record() -> list[tuple[tuple, object]]: ...

def abi_tag() -> str: ...

@overload
def test_fallback_1(arg: float, /) -> int: ...

@overload
def test_fallback_1(arg: object, /) -> int: ...

@overload
def test_fallback_2(arg: float, /) -> int: ...

@overload
def test_fallback_2(arg: object, /) -> int: ...

def test_get_dict_default(arg: dict, /) -> object: ...
