-
-
Notifications
You must be signed in to change notification settings - Fork 31.9k
Clarify documentation of positional-only default values #67926
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
This patch adds the PEP-457 positional-only slash “/” indicator to some function signatures in the documentation. I only looked at the the os, builtin, binascii, zlib and fcntl modules, and their functions where the documentation incorrectly suggests that they accept keyword arguments. For example, I changed eval(expression, globals=None, locals=None) to eval(expression, globals=None, locals=None, /) References:
There are many more instances where square brackets are used, or the arguments are mandatory. See the PEP for examples, but I do not think it is so important to “fix” them. I also fixed parameter name mismatches that I discovered for a quite a few functions that do take keyword arguments. One more thing I noticed, that I do not know how to fix, is the Argument Clinic signatures list invalid default values for zlib.compressobj(zdict=None) and os.utime(ns=None): >>> zlib.compressobj(zdict=None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' does not support the buffer interface
>>> os.utime("dummy", ns=None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: utime: 'ns' must be a tuple of two ints |
Hmm it seems my change for os.utimes() in Modules/posixmodule.c does not automatically get reflected in the doc string. Is there some script I can run to regenerate it, or do I have to do it manually? |
./python Tools/clinic/clinic.py --make or just
|
Personally I would rather stick to the [] syntax in the docs, with the default values mentioned in the text. |
I say switch to what Argument Clinic uses, else there's a disconnect syntactically between help() and the docs. |
That's a good point. |
pos-defaults.v2.patch includes the results of “make clinic” to fix the doc strings. Is there a consensus to use PEP-457’s slash “/” notation? At one point I think I saw Serhiy was concerned that it might be confusing. |
New changeset fdb5d84f9948 by Martin Panter <vadmium> in branch '3.4': New changeset 40bf1ca3f715 by Martin Panter <vadmium> in branch '3.5': New changeset 6177482ce6a1 by Martin Panter <vadmium> in branch 'default': |
I have committed the obvious keyword argument name fixes from my patch. Now patch v3 contains just the PEP-457 changes to be considered. |
Here is a more conservative patch using square brackets, and documenting the defaults in the text. I updated all the documentation from my previous patch, and added new changes for the “io” module. One quirk was that BufferedReader.read1() does not actually support the value −1. Therefore I changed the base class to BufferedIOBase.read1([size]) without mentioning what happens when size is omitted. Related: bpo-23214. |
One thought that occurred to me is that we could make the * and / in the signature links that point to a relevant section of the documentation. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: