[Python-ideas] PEP 485: A Function for testing approximate equality

Zero Piraeus schesis at gmail.com
Tue Jan 27 18:42:27 CET 2015


Disclaimer: I haven't read all of this thread, and what I have read I've
sometimes skimmed (and apparently some of the discusion was offlist

On Mon, Jan 26, 2015 at 10:24:07PM -0800, Chris Barker wrote:
> So what I haven't seen yet is an example use case where you really
> need the symmetric case -- i.e. it matters that is_close(a,b) is
> guaranteed to be the same as is_close(b,a).
> Does anyone have a use-case??

Once this exists, at some point somebody's going to write:

    def near_miss(data, tol):
        pairs = itertools.combinations(data.values(), 2)
        return any(is_close(a, b, tol) for a, b in pairs)

and then (if it's asymmetric) be very surprised when this:

    example = {'A': 0.01, 'B': 2.34, 'C': 5.67, 'D': 5.68, 'E': 9.99}

    near_miss(example, 1/568)

returns True half the time and False the other half. That's going to be
a really nasty heisenbug when it crops up in real code, especially since
it's only going to change for each invocation of the interpreter.

I don't really buy the idea that it'll almost always be used with
tolerances of 1e-8 etc. If it goes in the stdlib, it'll be used in ways
no-one here anticipates (and which are not, intuitively, "wrong").


Zero Piraeus: absit invidia

More information about the Python-ideas mailing list