summaryrefslogtreecommitdiff
path: root/lib/git_python/method_missing.py
blob: 63bc36a919bb26745182445139e76f4cca6608e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class MethodMissingMixin(object):
    """ 
    A Mixin' to implement the 'method_missing' Ruby-like protocol. 
    
    This was `taken from a blog post <http://blog.iffy.us/?p=43>`_
    """    
    def __getattribute__(self, attr):
        try:
            return object.__getattribute__(self, attr)
        except:
            class MethodMissing(object):
                def __init__(self, wrapped, method):
                    self.__wrapped__ = wrapped
                    self.__method__ = method
                def __call__(self, *args, **kwargs):
                    return self.__wrapped__.method_missing(self.__method__, *args, **kwargs)
            return MethodMissing(self, attr)
   
    def method_missing(self, *args, **kwargs):
        """ This method should be overridden in the derived class. """
        raise NotImplementedError(str(self.__wrapped__) + " 'method_missing' method has not been implemented.")