@classmethod
def _get_backend_owner(cls):
    """
        return base class that we're actually switching backends on
        (needed in since backends frequently modify class attrs,
        and .set_backend may be called from a subclass).
        """
    if not cls._backend_mixin_target:
        raise AssertionError('_backend_mixin_target not set')
    for base in cls.__mro__:
        if base.__dict__.get('_backend_mixin_target'):
            return base
    raise AssertionError(
        "expected to find class w/ '_backend_mixin_target' set")
