@@ -2370,17 +2370,38 @@ def run3(func: Callable[Concatenate[int, P], T], *args: P.args, **kwargs: P.kwar
23702370 func2(**d) # E: Argument 1 has incompatible type "**Dict[str, str]"; expected "P.kwargs"
23712371 return func2(**kwargs)
23722372
2373+ def run4(func: Callable[Concatenate[int, P], T], *args: P.args, **kwargs: P.kwargs) -> T:
2374+ func2 = partial(func, 1)
2375+ return func2(*args, **kwargs)
2376+
2377+ def run5(func: Callable[Concatenate[int, P], T], *args: P.args, **kwargs: P.kwargs) -> T:
2378+ func2 = partial(func, 1, *args, **kwargs)
2379+ func2()
2380+ return func2(**kwargs)
2381+
23732382def run_bad(func: Callable[Concatenate[int, P], T], *args: P.args, **kwargs: P.kwargs) -> T:
23742383 func2 = partial(func, *args) # E: Argument 1 has incompatible type "*P.args"; expected "int"
23752384 return func2(1, **kwargs) # E: Argument 1 has incompatible type "int"; expected "P.args"
23762385
23772386def run_bad2(func: Callable[Concatenate[int, P], T], *args: P.args, **kwargs: P.kwargs) -> T:
23782387 func2 = partial(func, 1, *args)
2388+ func2() # E: Too few arguments
2389+ func2(*args, **kwargs) # E: Too many arguments
23792390 return func2(1, **kwargs) # E: Argument 1 has incompatible type "int"; expected "P.args"
23802391
23812392def run_bad3(func: Callable[Concatenate[int, P], T], *args: P.args, **kwargs: P.kwargs) -> T:
2382- func2 = partial(func, 1, *args)
2383- return func2(1, **kwargs) # E: Argument 1 has incompatible type "int"; expected "P.args"
2384-
2393+ func2 = partial(func, 1, **kwargs)
2394+ func2() # E: Too few arguments
2395+ return func2(1, *args) # E: Argument 1 has incompatible type "int"; expected "P.args"
2396+
2397+ def run_bad4(func: Callable[Concatenate[int, P], T], *args: P.args, **kwargs: P.kwargs) -> T:
2398+ func2 = partial(func, 1)
2399+ func2() # E: Too few arguments
2400+ func2(*args) # E: Too few arguments
2401+ func2(1, *args) # E: Too few arguments \
2402+ # E: Argument 1 has incompatible type "int"; expected "P.args"
2403+ func2(1, **kwargs) # E: Too few arguments \
2404+ # E: Argument 1 has incompatible type "int"; expected "P.args"
2405+ return func2(**kwargs) # E: Too few arguments
23852406
23862407[builtins fixtures/paramspec.pyi]
0 commit comments