I'm struggling with this `partial` business. Can we do away with it? To me, it looks like excess that we don't need.
To back up my argument I had to test it out. So I wrote this to mimic what your code is doing:
```python
def class_decorator(value):
    def inner(cls):
        class ClassMixin(cls):
            def run(self):
                return cls.run(self, value)
        return ClassMixin
    return inner

decorator = partial(class_decorator, 'VALUE')

@decorator()
class Foo(object):

    def run(self, value):
        print "In Foo.run() given", value

f = Foo()
f.run()
# outputs:
# In Foo.run() given VALUE
```

Now, the same without the `partial` which I argue don't need:
```python
def class_decorator(value):
    def inner(cls):
        class ClassMixin(cls):
            def run(self):
                return cls.run(self, value)
        return ClassMixin
    return inner

# created once and for all, for all classes that need to use it as a decorator
decorator = class_decorator('VALUE')

# Notice! No calling needed
@decorator
class Foo(object):

    def run(self, value):
        print "In Foo.run() given", value

f = Foo()
f.run()
# outputs:
# In Foo.run() given VALUE
```

The difference is that the decorator is only ever created once. This might be important if in the decorator reation something expensive has to happen.