-
-
Notifications
You must be signed in to change notification settings - Fork 165
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
Convention for specifying that arguments are keyword only? #330
Comments
There's no standard way to do this. There's def my_func(a, *, b, c, d=None):
""" My function does stuff
a : object
Something about `a`.
b : object, keyword-only
Something about `b`.
c : object, keyword-only
Something about `c`.
d : object, optional, keyword-only
""" |
Personal opinion: keyword-only (and positional-only) are just syntactic usage aspects. They don't carry information for understanding the function and its parameters. I therefore propose that it's sufficient to let the user infer the usage from the signature and would not document that aspect in the parameters section at all. |
I just found this again. I think keyword-only does carry carry information for understanding the function and its parameters. Consider: def func(a, *, b):
return a * b You might want to be reminded that Parameters
-----------
a : object
b : object
Returns
--------
c : object
Result of ``a * b`` And then do: func(1, 2) and be surprised by |
My 2 cents: from numpydoc's perspective, there is no requirement/prohibition of adding such information to the parameter type line or description. In other words, adding such information will no affect the docstring parsing. So, if a project wants to add I'd be hesitant to add something to the standard to prescribe how specifically one should do so though. IMO, libraries should be able to choose their own patterns. For example:
is no more or less valid than:
However a project chooses to specify this info, they can use numpydoc's parameter cross-linking feature to "codify" it. For example, let's say you prefer option 2, then add: numpydoc_xref_aliases = {
... # other aliases
"kw-only": ":external:py:ref:`kw-only <keyword-only_param>`,
} to So - to summarize my personal take: numpydoc should (and currently does) support adding this info to docstrings, but the adopting libraries should be free to choose specifically whether/how they want to do so. |
@rossbar Can you tell offhand whether scipy/scipy#22323 is a SciPy-specific issue? The |
Off the top of my head I have no idea. Comparing with the NetworkX docs, I don't see the same issue: the keyword-only bit is rendering properly on the autodoc'ed function pages as well as in autosummaries. However, the fact that this seems to show up in scipy in methods specifically makes me suspicious... |
Is there a standard way for the docstring to tell the user that the arguments (or following arguments) are keyword only? Other than some note for each argument? I mean for a situation like this:
The text was updated successfully, but these errors were encountered: