Skip to content

Commit cb2c6ad

Browse files
Revert "Define functools.partial as overloaded function instead of its own class (#2878)"
This reverts commit e45f443.
1 parent 58221cf commit cb2c6ad

File tree

3 files changed

+18
-219
lines changed

3 files changed

+18
-219
lines changed

stdlib/2/_functools.pyi

+6-73
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Tuple, overload
44

55
_T = TypeVar("_T")
6-
_T2 = TypeVar("_T2")
7-
_T3 = TypeVar("_T3")
8-
_T4 = TypeVar("_T4")
9-
_T5 = TypeVar("_T5")
106
_S = TypeVar("_S")
117

128
@overload
@@ -16,72 +12,9 @@ def reduce(function: Callable[[_T, _T], _T],
1612
def reduce(function: Callable[[_T, _S], _T],
1713
sequence: Iterable[_S], initial: _T) -> _T: ...
1814

19-
@overload
20-
def partial(__func: Callable[[_T], _S], __arg: _T) -> Callable[[], _S]: ...
21-
@overload
22-
def partial(__func: Callable[[_T, _T2], _S], __arg: _T) -> Callable[[_T2], _S]: ...
23-
@overload
24-
def partial(__func: Callable[[_T, _T2, _T3], _S], __arg: _T) -> Callable[[_T2, _T3], _S]: ...
25-
@overload
26-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S], __arg: _T) -> Callable[[_T2, _T3, _T4], _S]: ...
27-
@overload
28-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S], __arg: _T) -> Callable[[_T2, _T3, _T4, _T5], _S]: ...
29-
30-
@overload
31-
def partial(__func: Callable[[_T, _T2], _S],
32-
__arg1: _T,
33-
__arg2: _T2) -> Callable[[], _S]: ...
34-
@overload
35-
def partial(__func: Callable[[_T, _T2, _T3], _S],
36-
__arg1: _T,
37-
__arg2: _T2) -> Callable[[_T3], _S]: ...
38-
@overload
39-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
40-
__arg1: _T,
41-
__arg2: _T2) -> Callable[[_T3, _T4], _S]: ...
42-
@overload
43-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
44-
__arg1: _T,
45-
__arg2: _T2) -> Callable[[_T3, _T4, _T5], _S]: ...
46-
47-
@overload
48-
def partial(__func: Callable[[_T, _T2, _T3], _S],
49-
__arg1: _T,
50-
__arg2: _T2,
51-
__arg3: _T3) -> Callable[[], _S]: ...
52-
@overload
53-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
54-
__arg1: _T,
55-
__arg2: _T2,
56-
__arg3: _T3) -> Callable[[_T4], _S]: ...
57-
@overload
58-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
59-
__arg1: _T,
60-
__arg2: _T2,
61-
__arg3: _T3) -> Callable[[_T4, _T5], _S]: ...
62-
63-
@overload
64-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
65-
__arg1: _T,
66-
__arg2: _T2,
67-
__arg3: _T3,
68-
__arg4: _T4) -> Callable[[], _S]: ...
69-
@overload
70-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
71-
__arg1: _T,
72-
__arg2: _T2,
73-
__arg3: _T3,
74-
__arg4: _T4) -> Callable[[_T5], _S]: ...
75-
76-
@overload
77-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
78-
__arg1: _T,
79-
__arg2: _T2,
80-
__arg3: _T3,
81-
__arg4: _T4,
82-
__arg5: _T5) -> Callable[[], _S]: ...
83-
84-
@overload
85-
def partial(__func: Callable[..., _S],
86-
*args: Any,
87-
**kwargs: Any) -> Callable[..., _S]: ...
15+
class partial(object):
16+
func: Callable[..., Any]
17+
args: Tuple[Any, ...]
18+
keywords: Dict[str, Any]
19+
def __init__(self, func: Callable[..., Any], *args: Any, **kwargs: Any) -> None: ...
20+
def __call__(self, *args: Any, **kwargs: Any) -> Any: ...

stdlib/2/functools.pyi

+6-73
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ from collections import namedtuple
99
_AnyCallable = Callable[..., Any]
1010

1111
_T = TypeVar("_T")
12-
_T2 = TypeVar("_T2")
13-
_T3 = TypeVar("_T3")
14-
_T4 = TypeVar("_T4")
15-
_T5 = TypeVar("_T5")
1612
_S = TypeVar("_S")
1713
@overload
1814
def reduce(function: Callable[[_T, _T], _T],
@@ -30,72 +26,9 @@ def wraps(wrapped: _AnyCallable, assigned: Sequence[str] = ..., updated: Sequenc
3026
def total_ordering(cls: type) -> type: ...
3127
def cmp_to_key(mycmp: Callable[[_T, _T], int]) -> Callable[[_T], Any]: ...
3228

33-
@overload
34-
def partial(__func: Callable[[_T], _S], __arg: _T) -> Callable[[], _S]: ...
35-
@overload
36-
def partial(__func: Callable[[_T, _T2], _S], __arg: _T) -> Callable[[_T2], _S]: ...
37-
@overload
38-
def partial(__func: Callable[[_T, _T2, _T3], _S], __arg: _T) -> Callable[[_T2, _T3], _S]: ...
39-
@overload
40-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S], __arg: _T) -> Callable[[_T2, _T3, _T4], _S]: ...
41-
@overload
42-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S], __arg: _T) -> Callable[[_T2, _T3, _T4, _T5], _S]: ...
43-
44-
@overload
45-
def partial(__func: Callable[[_T, _T2], _S],
46-
__arg1: _T,
47-
__arg2: _T2) -> Callable[[], _S]: ...
48-
@overload
49-
def partial(__func: Callable[[_T, _T2, _T3], _S],
50-
__arg1: _T,
51-
__arg2: _T2) -> Callable[[_T3], _S]: ...
52-
@overload
53-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
54-
__arg1: _T,
55-
__arg2: _T2) -> Callable[[_T3, _T4], _S]: ...
56-
@overload
57-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
58-
__arg1: _T,
59-
__arg2: _T2) -> Callable[[_T3, _T4, _T5], _S]: ...
60-
61-
@overload
62-
def partial(__func: Callable[[_T, _T2, _T3], _S],
63-
__arg1: _T,
64-
__arg2: _T2,
65-
__arg3: _T3) -> Callable[[], _S]: ...
66-
@overload
67-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
68-
__arg1: _T,
69-
__arg2: _T2,
70-
__arg3: _T3) -> Callable[[_T4], _S]: ...
71-
@overload
72-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
73-
__arg1: _T,
74-
__arg2: _T2,
75-
__arg3: _T3) -> Callable[[_T4, _T5], _S]: ...
76-
77-
@overload
78-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
79-
__arg1: _T,
80-
__arg2: _T2,
81-
__arg3: _T3,
82-
__arg4: _T4) -> Callable[[], _S]: ...
83-
@overload
84-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
85-
__arg1: _T,
86-
__arg2: _T2,
87-
__arg3: _T3,
88-
__arg4: _T4) -> Callable[[_T5], _S]: ...
89-
90-
@overload
91-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
92-
__arg1: _T,
93-
__arg2: _T2,
94-
__arg3: _T3,
95-
__arg4: _T4,
96-
__arg5: _T5) -> Callable[[], _S]: ...
97-
98-
@overload
99-
def partial(__func: Callable[..., _S],
100-
*args: Any,
101-
**kwargs: Any) -> Callable[..., _S]: ...
29+
class partial(Generic[_T]):
30+
func = ... # Callable[..., _T]
31+
args: Tuple[Any, ...]
32+
keywords: Dict[str, Any]
33+
def __init__(self, func: Callable[..., _T], *args: Any, **kwargs: Any) -> None: ...
34+
def __call__(self, *args: Any, **kwargs: Any) -> _T: ...

stdlib/3/functools.pyi

+6-73
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@ from typing import Any, Callable, Generic, Dict, Iterable, Mapping, Optional, Se
44
_AnyCallable = Callable[..., Any]
55

66
_T = TypeVar("_T")
7-
_T2 = TypeVar("_T2")
8-
_T3 = TypeVar("_T3")
9-
_T4 = TypeVar("_T4")
10-
_T5 = TypeVar("_T5")
117
_S = TypeVar("_S")
128
@overload
139
def reduce(function: Callable[[_T, _S], _T],
@@ -44,75 +40,12 @@ def wraps(wrapped: _AnyCallable, assigned: Sequence[str] = ..., updated: Sequenc
4440
def total_ordering(cls: type) -> type: ...
4541
def cmp_to_key(mycmp: Callable[[_T, _T], int]) -> Callable[[_T], Any]: ...
4642

47-
@overload
48-
def partial(__func: Callable[[_T], _S], __arg: _T) -> Callable[[], _S]: ...
49-
@overload
50-
def partial(__func: Callable[[_T, _T2], _S], __arg: _T) -> Callable[[_T2], _S]: ...
51-
@overload
52-
def partial(__func: Callable[[_T, _T2, _T3], _S], __arg: _T) -> Callable[[_T2, _T3], _S]: ...
53-
@overload
54-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S], __arg: _T) -> Callable[[_T2, _T3, _T4], _S]: ...
55-
@overload
56-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S], __arg: _T) -> Callable[[_T2, _T3, _T4, _T5], _S]: ...
57-
58-
@overload
59-
def partial(__func: Callable[[_T, _T2], _S],
60-
__arg1: _T,
61-
__arg2: _T2) -> Callable[[], _S]: ...
62-
@overload
63-
def partial(__func: Callable[[_T, _T2, _T3], _S],
64-
__arg1: _T,
65-
__arg2: _T2) -> Callable[[_T3], _S]: ...
66-
@overload
67-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
68-
__arg1: _T,
69-
__arg2: _T2) -> Callable[[_T3, _T4], _S]: ...
70-
@overload
71-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
72-
__arg1: _T,
73-
__arg2: _T2) -> Callable[[_T3, _T4, _T5], _S]: ...
74-
75-
@overload
76-
def partial(__func: Callable[[_T, _T2, _T3], _S],
77-
__arg1: _T,
78-
__arg2: _T2,
79-
__arg3: _T3) -> Callable[[], _S]: ...
80-
@overload
81-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
82-
__arg1: _T,
83-
__arg2: _T2,
84-
__arg3: _T3) -> Callable[[_T4], _S]: ...
85-
@overload
86-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
87-
__arg1: _T,
88-
__arg2: _T2,
89-
__arg3: _T3) -> Callable[[_T4, _T5], _S]: ...
90-
91-
@overload
92-
def partial(__func: Callable[[_T, _T2, _T3, _T4], _S],
93-
__arg1: _T,
94-
__arg2: _T2,
95-
__arg3: _T3,
96-
__arg4: _T4) -> Callable[[], _S]: ...
97-
@overload
98-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
99-
__arg1: _T,
100-
__arg2: _T2,
101-
__arg3: _T3,
102-
__arg4: _T4) -> Callable[[_T5], _S]: ...
103-
104-
@overload
105-
def partial(__func: Callable[[_T, _T2, _T3, _T4, _T5], _S],
106-
__arg1: _T,
107-
__arg2: _T2,
108-
__arg3: _T3,
109-
__arg4: _T4,
110-
__arg5: _T5) -> Callable[[], _S]: ...
111-
112-
@overload
113-
def partial(__func: Callable[..., _S],
114-
*args: Any,
115-
**kwargs: Any) -> Callable[..., _S]: ...
43+
class partial(Generic[_T]):
44+
func: Callable[..., _T]
45+
args: Tuple[Any, ...]
46+
keywords: Dict[str, Any]
47+
def __init__(self, func: Callable[..., _T], *args: Any, **kwargs: Any) -> None: ...
48+
def __call__(self, *args: Any, **kwargs: Any) -> _T: ...
11649

11750
# With protocols, this could change into a generic protocol that defines __get__ and returns _T
11851
_Descriptor = Any

0 commit comments

Comments
 (0)