Skip to content

Commit 480cc12

Browse files
committed
[GR-16747] [GH-62] Convert '_functools.partial' to a class.
PullRequest: graalpython/567
2 parents d4f0b54 + 60509d8 commit 480cc12

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

graalpython/lib-graalpython/_functools.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
1+
# Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
22
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
33
#
44
# The Universal Permissive License (UPL), Version 1.0
@@ -49,13 +49,18 @@ def reduce(function, iterable, initializer=None):
4949
return value
5050

5151

52-
@__builtin__
53-
def partial(func, *args, **keywords):
54-
def newfunc(*fargs, **fkeywords):
55-
newkeywords = keywords.copy()
56-
newkeywords.update(fkeywords)
57-
return func(*args, *fargs, **newkeywords)
58-
newfunc.func = func
59-
newfunc.args = args
60-
newfunc.keywords = keywords
61-
return newfunc
52+
class partial:
53+
def __init__(self, func, *args, **keywords):
54+
def newfunc(*fargs, **fkeywords):
55+
newkeywords = keywords.copy()
56+
newkeywords.update(fkeywords)
57+
return func(*args, *fargs, **newkeywords)
58+
self.func = func
59+
self.args = args
60+
self.keywords = keywords
61+
self.newfunc = newfunc
62+
63+
def __call__(self, *args, **keywords):
64+
return self.newfunc(*args, **keywords)
65+
66+
# TODO: correctly implement '__reduce__' and '__setstate__'

0 commit comments

Comments
 (0)