Greg,
If you do update this PEP, please update the __not__ portion as well, at least regarding possible return values.
It currently says that __not__ can return NotImplemented, which falls back to the current semantics. (Why? to override an explicit __not__? Then why not just put the current semantics on __object__, and override by calling that directly?)
It does not yet say what will happen for objects that return something else outside of {True, False}, such as
class AntiBool(object): def __not__(self): return self
Is that OK, because "not not X" should now be spelled "bool(x)", and you haven't allowed the overriding of __bool__? (And, if so, how does that work Py3K?)
-jJ