def __new__(self, *args):
        obj = super(Matcher, self).__new__(self)

        try:
            argspec = inspect.getargspec(type(obj).__init__)
        except __HOLE__:
            return obj
        else:
            if argspec.varargs or argspec.keywords:
                return obj

        nargs = len(argspec.args) - 1
        if len(args) <= nargs:  # <= because for example (at least) copy.copy causes us to be called with no arguments
            return obj
        else:
            obj.__init__(*args[:nargs])
            return obj.__eq__(*args[nargs:])
dataset/ETHPy150Open eallik/spinoff/spinoff/util/pattern_matching.py/Matcher.__new__