[Numpy-discussion] Doctest items

Robert Kern robert.kern@gmail....
Tue Jul 1 19:39:29 CDT 2008


On Tue, Jul 1, 2008 at 19:19, Ryan May <rmay31@gmail.com> wrote:
> Robert Kern wrote:
>> On Tue, Jul 1, 2008 at 17:50, Fernando Perez <fperez.net@gmail.com> wrote:
>>> On Tue, Jul 1, 2008 at 1:41 PM, Pauli Virtanen <pav@iki.fi> wrote:
>>>
>>>> But it's a custom tweak to doctest, so it might break at some point in
>>>> the future, and I don't love the monkeypatching here...
>>> Welcome to the joys of extending doctest/unittest.  They hardcoded so
>>> much stuff in there that the only way to reuse that code is by
>>> copy/paste/monkeypatch.  It's absolutely atrocious.
>>>
>>>>> We could always just make the plotting section one of those "it's just
>>>>> an example not a doctest" things and remove the ">>>" (since it doesn't
>>>>> appear to provide any useful test coverage or anything).
>>>> If possible, I'd like other possibilities be considered first before
>>>> jumping this route. I think it would be nice to retain the ability to run
>>>> also the matplotlib examples as (optional) doctests, to make sure also
>>>> they execute correctly. Also, using two different markups in the
>>>> documentation to work around a shortcoming of doctest is IMHO not very
>>>> elegant.
>>> How about a much simpler approach?  Just pre-populate the globals dict
>>> where doctest executes with an object called 'plt' that basically does
>>>
>>> def noop(*a,**k): pass
>>>
>>> class dummy():
>>>  def __getattr__(self,k): return noop
>>>
>>> plt = dummy()
>>>
>>> This would ensure that all calls to plt.anything() silently succeed in
>>> the doctests.  Granted, we're not testing matplotlib, but it has the
>>> benefit of simplicity and of letting us keep consistent formatting,
>>> and examples that *users* can still paste into their sessions where
>>> plt refers to the real matplotlib.
>>
>> It's actually easier for users to paste the non-doctestable examples
>> since they don't have the >>> markers and any stdout the examples
>> produce as a byproduct.
>>
>
> I'm with Robert here.  It's definitely easier as an example without the
>  >>>>.  I also don't see the utility of being able to have the
> matplotlib code as tests of anything.  We're not testing matplotlib here
> and any behavior that matplotlib relies on (and hence tests) should be
> captured in a test for that behavior separate from matplotlib code.

To be clear, these aren't tests of the numpy code. The tests would be
to make sure the examples still run.

-- 
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 Numpy-discussion mailing list