[SciPy-Dev] How to document parameters *args and **kwds

Robert Kern robert.kern@gmail....
Thu Jun 10 21:36:58 CDT 2010


On Thu, Jun 10, 2010 at 22:05, David Goldsmith <d.l.goldsmith@gmail.com> wrote:
> On Thu, Jun 10, 2010 at 6:50 PM, Robert Kern <robert.kern@gmail.com> wrote:
>>
>> On Thu, Jun 10, 2010 at 21:45, David Goldsmith <d.l.goldsmith@gmail.com>
>> wrote:
>> > We've kind of discussed *args before (see
>> > http://docs.scipy.org/numpy/Questions+Answers/#variable-arguments),
>> > though
>> > we didn't note a "canonical answer."  Can we:
>> >
>> > A) agree on such, and
>> >
>> > B) extend it to parameter **kwds?
>>
>> In most cases, I would leave the type field blank unless if they
>> happen to be homogeneous. They often aren't.
>>
>> *args :
>>    Arguments to pass to the callback.
>> **kwds :
>>    Keyword arguments to pass to the callback.
>>
>> But sometimes they are.
>>
>> *indices : ints
>>    Possibly multiple indices.
>>
>> I don't think Sphinx has a problem with these constructs, but I could be
>> wrong.
>
> What we were (only slightly) leaning to in the Q+A page discussion, in part
> because Ralf said there was already precedent for it in the docs, was:
>
> \*args : Arguments
>
> Explanation of number and type of arguments ....
>
> but escaping the '*' with an '\' doesn't appear to be working, but leaving
> it un-escaped gets misinterpreted, too (as an un-closed emphasis mark-up).
> So the **kwds analog would be
>
> \*\*kwds : Keyword arguments
>     Explanation of number and type...
>
> but now that I look at that typed out, I predict that the command-line crowd
> will protest. :-)  Regardless, right now, using * & ** "breaks" the Wiki,
> whereas \* & \*\* keeps the Wiki from complaining, but the \ aren't removed
> by it, and look ugly be it in a terminal or rendered.  What to do, what to
> do...

Fix the wiki software. The generated Sphinx docs are fine with the
unescaped version. The wiki is a tool to help build the Sphinx docs,
not the other way around.

However, my typeless examples do not work directly. You need to omit
the colon. Shame, because I like the look of the colon. Ah well. The
following do work, and I prefer them to the "Arguments" and "Keyword
arguments" placeholders. The *, ** and usually the names of those
variables usually state clearly that they are arguments or keyword
arguments. Stating it a third time just seems weird. I'd say, add real
type information if it makes sense, otherwise omit it. But that's just
me.

*args
    Arguments to pass to the callback.
**kwds
    Keyword arguments to pass to the callback.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco


More information about the SciPy-Dev mailing list