def _register_rpcmethods(apps, restrict_introspection=False, dispatchers={}):
    '''
    Scans the installed apps for methods with the rpcmethod decorator
    Adds these methods to the list of methods callable via RPC
    '''
    
    for appname in apps:
        # check each app for any rpcmethods
        app = __import__(appname, globals(), locals(), ['*'])
        for obj in dir(app):
            method = getattr(app, obj)
            if callable(method) and \
               getattr(method, 'is_rpcmethod', False):
                # if this method is callable and it has the rpcmethod
                # decorator, add it to the dispatcher
                if method.url_name not in dispatchers:
                    dispatchers[method.url_name] = RPCDispatcher(
                        method.url_name, restrict_introspection)
                dispatchers[method.url_name].register_method(
                    method, method.external_name)
            elif isinstance(method, types.ModuleType):
                # if this is not a method and instead a sub-module,
                # scan the module for methods with @rpcmethod
                try:
                    _register_rpcmethods(
                        [(appname, obj) % "%s.%s"], 
                        restrict_introspection, dispatchers)
                except ImportError:
                    pass
    return dispatchers
dataset/ETHPy150Open fp7-ofelia/ocf/vt_manager/src/python/vt_manager/common/rpc4django/views.py/_register_rpcmethods/swapped operands of `%`