| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
This PR is stale because it has been open for 30 days with no activity. |
Sorry, something went wrong.
|
From my side, this is ready to go, afaict. |
Sorry, something went wrong.
There was a problem hiding this comment.
Please add / to the prototype.
| .. function:: call(obj, *args, **kwargs) | |
| .. function:: call(obj, /, *args, **kwargs) |
Sorry, something went wrong.
There was a problem hiding this comment.
done, thanks for noticing.
Sorry, something went wrong.
Having `operator.call(obj, arg)` mean `type(obj).__call__(obj, arg)` is consistent with the other dunder operators. The semantics with `*args, **kwargs` then follow naturally from the single-arg semantics.
|
The user experience isn’t good for reviewers when history is rewritten in a PR, so please do regular commits and pushes for CPython (see https://devguide.python.org/pullrequest/#submitting) |
Sorry, something went wrong.
There was a problem hiding this comment.
LGTM. The implementation is correct. I'm not convinced of the usefulness of this change, but the benchmark is interesting. I let other core dev merging the change :-)
Sorry, something went wrong.
|
Apologies for the squash commit, I did not realize this was the policy here. |
Sorry, something went wrong.
There was a problem hiding this comment.
LGTM. This seems like a fairly natural addition to the operator module for me.
Sorry, something went wrong.
|
Do we need a "what's new" entry for this? |
Sorry, something went wrong.
|
There's a NEWS.d entry, did you mean anything else? |
Sorry, something went wrong.
|
@anntzer: I meant the https://github.com/python/cpython/blob/main/Doc/whatsnew/3.11.rst file. I think it's worth a mention there (following the guidelines in https://devguide.python.org/committing/?highlight=what%27s%20new#updating-news-and-what-s-new-in-python). |
Sorry, something went wrong.
|
Ah yes please, document the addition in What's New in Python 3.11. |
Sorry, something went wrong.
|
Done. |
Sorry, something went wrong.
I don't see any change on Doc/whatsnew/3.11.rst. |
Sorry, something went wrong.
Sorry, something went wrong.
| * A new function ``operator.call`` has been added, such that | ||
| ``operator.call(obj, *args, **kwargs) == obj(*args, **kwargs)``. | ||
| (Contributed by Antony Lee in :issue:`44019`.) |
There was a problem hiding this comment.
| * A new function ``operator.call`` has been added, such that | |
| ``operator.call(obj, *args, **kwargs) == obj(*args, **kwargs)``. | |
| (Contributed by Antony Lee in :issue:`44019`.) | |
| * A new function ``operator.call`` has been added, such that | |
| ``operator.call(obj, *args, **kwargs) == obj(*args, **kwargs)``. | |
| (Contributed by Antony Lee in :issue:`44019`.) |
Sorry, something went wrong.
There was a problem hiding this comment.
woopsie, thanks, fixed.
Sorry, something went wrong.
There was a problem hiding this comment.
LGTM. I let another core dev merge this PR.
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Having operator.call(obj, arg) mean type(obj).__call__(obj, arg) is
consistent with the other dunder operators. The semantics with *args, **kwargs then follow naturally from the single-arg semantics.
I realize that I proposed different semantics in the original bug report, but that didn't even actually match to the proposed use case; the second proposal in the thread is the correct one. The semantics here work for at least two different use cases that I have seen:
Using concurrent.futures.Executor.map on a list of callables (executor.map(operator.call, callables)). In that case the performance doesn't actually matter much and a Python helper would in fact be fine.
Loading a "typed" csv file (cf. numpy.loadtxt), where each column has a separate type, e.g.
Here the performance actually matters (with numpy, one may easily be loading millions of rows). A simple benchmark gives
i.e. map(operator.call, ...) gives a significant speedup.
https://bugs.python.org/issue44019