[Numpy-discussion] ANN: NumPy 1.2.0
Francesc Alted
faltet at pytables.org
Mon Sep 29 14:43:39 EDT 2008
A Monday 29 September 2008, Charles R Harris escrigué:
> On Mon, Sep 29, 2008 at 11:50 AM, Robert Kern <robert.kern at gmail.com>
wrote:
> > On Mon, Sep 29, 2008 at 12:40, Charles R Harris
> >
> > <charlesr.harris at gmail.com> wrote:
> > > On Mon, Sep 29, 2008 at 11:35 AM, Robert Kern
> > > <robert.kern at gmail.com>
> >
> > wrote:
> > >> On Mon, Sep 29, 2008 at 12:30, Charles R Harris
> > >>
> > >> <charlesr.harris at gmail.com> wrote:
> > >> > On Mon, Sep 29, 2008 at 11:27 AM, Robert Kern
> > >> > <robert.kern at gmail.com>
> > >> >
> > >> > wrote:
> > >> >> When is -OO ever used for running tests? The assert statement
> > >> >> is used for tests under nose.
> > >> >
> > >> > When it is the default on windows platforms. There was a
> > >> > ticket..
> > >>
> > >> I see #893, which talks about when -OO is used explicitly and
> > >> when numpy is part of a py2exe application. This does not refer
> > >> to any default configuration on Windows platforms.
> > >
> > > Let's put it this way, if the tests were consistent with assert
> > > then they couldn't be run with the -OO option. If they *can* be
> > > run with the -OO option then they had better run correctly.
> >
> > I'm afraid that I don't understand what you are referring to.
>
> Asserts are transparent. If they go away, programs containing asserts
> should still run correctly. It's like bounds checking in array
> references, say in the std::vector class. If compiled with -DNODEBUG,
> the programs still run. Programs shouldn't use asserts for
> non-debugging purposes, they should raise real exceptions. If you
> think the numpy tests are essentially debugging tests, then they
> should all disappear when run with the -OO option, i.e., nose should
> do nothing. If nose wants to make that change, that is fine with me.
> But as is, incorrect failures may be reported and that is an error.
Plain assert clauses used to be the most common way to check for test
units in the original "unittest" module. Later on, the authors started
to introduce things like self.assert_() and family and warned that the
use of the "assert" clause should be avoided (maybe thinking about
possible changes in semantics inside Python itself, maybe thinking
about the use of -OO).
But I agree with Robert Kern that tests *should* never be run under -OO
because they are *tests*, not production code, and using the -OO for
running the test units is simply a wrong practice.
However, in the long term it should be useful to get rid of all the
plain asserts in the test suite.
My two cents,
--
Francesc Alted
More information about the NumPy-Discussion
mailing list