docs: def getLocalID(self):
          """Return the identifier that should be sent as the
          openid.identity parameter to the server."""
          # I looked at this conditional and thought "ah-hah! there's the bug!"
          # but Python actually makes that one big expression somehow, i.e.
          # "x is x is x" is not the same thing as "(x is x) is x".
          # That's pretty weird, dude.  -- kmt, 1/07
          if (self.local_id is self.canonicalID is None):
              return self.claimed_id
          else:
              return self.local_id or self.canonicalID