GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — gh-131885: Updates docs to make max and min iterable param positional only by ekohilas · Pull Request #131868 · python/cpython Conversation
|
|
Actually, I'm finding more examples of these cases such as map and range. If the above looks good I'll add more commits to include those too. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Actually, I'm finding more examples of these cases such as map and range. If the above looks good I'll add more commits to include those too.
Previously similar change was reverted: #99476 See also #125945
While devguide suggests now using correct function signatures, I'm not sure we shold push this that way.
We definitely need an issue, e.g. to adjust all signatures on the builtin functions page. We should also consider if we could actually simplify function signatures to avoid '/' and/or '*' syntax. See https://discuss.python.org/t/81003
CC @AA-Turner
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
|
||
| PyDoc_STRVAR(min_doc, | ||
| "min(iterable, *[, default=obj, key=func]) -> value\n\ | ||
| "min(iterable, /, *[, default=obj, key=func]) -> value\n\ |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
This is not a valid Python syntax. Same for max().
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I understand the issue being that the square brackets make it invalid syntax, and that without this change, the documentation would still be wrong.
The reason for change here is to ensure that the web docs align with the code docs, similar to sorted:
Line 2575 in 5a3f13b
| "sorted($module, iterable, /, *, key=None, reverse=False)\n" |
Would it be more correct to instead write:
| "min(iterable, /, *[, default=obj, key=func]) -> value\n\ | |
| "min(iterable, /, *, key=None) -> value\n\ | |
| min(iterable, /, *, default, key=None) -> value\n\ | |
| min(arg1, arg2, *args, /, *, key=None) -> value\n\ |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
@skirpichev Could you please help me understand why -> value should be removed?
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Rationale is just same as for sphinx docs: it's not a valid syntax (you will get a NameError trying to parse such signature with inspect.signature()).
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I understand the issue being that the square brackets make it invalid syntax, and that without this change, the documentation would still be wrong.
Actually, it's a valid Sphinx syntax. It's the "legacy" way of writing signatures. Many built-ins are written that way. As for ->, I think it was meant for "readability" even if it's unparsable. I would personally leave this untouched in this PR (namely, only add positional-only marker but leave out the ->). In a follow-up, we could clean-up the way "invalid" syntaxes, but this is something different than adding the markers.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Thanks for these references!
Thank you for linking this read! I too would like to see simplifying these built-in function signatures, and have functions like As I understand it, doing so would be a one day door that would require additional thought and decisions, as if it went through and started to be used, it would no longer be backwards compatible. Until then, this seems like the next best step. It's what the Editorial board has agreed on, it brings consistency, and reverting these changes in the future if and when they are simplified would be easy. As it stands, without these changes:
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Created issue: #131885 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Personally, I read this is as requirement and not a suggestion. Namely,
Here, the
So I think it's fine to accept those changes. The reversal of previous changes was mostly done because it was incorrect, albeit |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Probably, yes. But rather than mechanically accept "complex" signatures - we should revisit on case-by-case basis if we could simplify them. E.g. support
@picnixz, are you about #99476? Reversion was argued not by correctness: #98340 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Wait, were you talking about #100547 or another reversal? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Ah no I see. Ok you were talking about another PR. My bad. Well, the EB decision is quite recent and the reversal was done before that decision so I think it doesn't apply here. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
For this reason, I'm not sure the tracking issue is helpful -- it will encourage people to create many PRs to 'fix' the issue, when it is not just a mechanical transformation at hand. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
This is the reason why I didn't add the "easy" label. But tracking is fine I think. I can add a warning note to say that it's not an easy one as the transformation is not just mechanical |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Someone could comment on issue to clarify it further. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I've added a red caution box, hopefully it will be seen |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
We should avoid mixing C-style [,optional-arg] with the / etc markers.
I think we should also not conflate changes to the documentation, which support a wider range of syntax, with changes to function signatures in docstrings, which are interpreted by pydoc, help(), etc. See Raymond's Discourse post on improving support for signatures, and Serhiy's draft work on multi-signature support for inspect.
For now, please revert the changes to bltinmodule.c, and we can start with iterative improvements to the rST documentation.
A
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated. Once you have made the requested changes, please leave a comment on this pull request containing the phrase And if you don't make the requested changes, you will be put in the comfy chair! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Co-authored-by: Evan Kohilas <[email protected]>
|
@ekohilas, please avoid force-pushing to the PR. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Ah sorry I'm clicking the rebase button via GitHub. Are there guidelines on why I should avoid force pushing in the cpython repo? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Sure, they listed in the devguide: https://devguide.python.org/getting-started/pull-request-lifecycle/#id2 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@AA-Turner You requested removal of changes from the .c module, and this was done. Anything else? or dismiss change? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Thanks @ekohilas for the PR, and @AA-Turner for merging it 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…)`` (pythonGH-131868) (cherry picked from commit dd079db) Co-authored-by: Evan Kohilas <[email protected]>
…)`` (pythonGH-131868) (cherry picked from commit dd079db) Co-authored-by: Evan Kohilas <[email protected]>
|
GH-137656 is a backport of this pull request to the 3.14 branch. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
GH-137657 is a backport of this pull request to the 3.13 branch. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…()`` (GH-131868) (#137657) Co-authored-by: Evan Kohilas <[email protected]>
* main: pythongh-137288: Update 3.14 magic numbers (pythonGH-137665) pythongh-135228: When @DataClass(slots=True) replaces a dataclass, make the original class collectible (take 2) (pythonGH-137047) pythongh-126008: Improve docstrings for Tkinter cget and configure methods (pythonGH-133303) pythongh-131885: Use positional-only markers for ``max()`` and ``min()`` (python#131868) pythonGH-137426: Remove code deprecation of `importlib.abc.ResourceLoader` (pythonGH-137567) pythongh-125897: Mark range function parameters as positional only (python#125945) pythongh-137400: Fix a crash when disabling profiling across all threads (pythongh-137471) pythongh-115766: Fix IPv4Interface.is_unspecified (pythonGH-137326) pythongh-128813: cleanup C-API docs for PyComplexObject (pythonGH-137579) pythongh-135953: Profile a module or script with sampling profiler (python#136777) Fix documentation of hash in PyHash_FuncDef (python#137595)
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.