def prepare_user_module(self, user_module=None, user_ns=None):
if user_module is None and user_ns is not None:<EOL><INDENT>user_ns.setdefault("<STR_LIT>", "<STR_LIT:__main__>")<EOL>class DummyMod(object):<EOL><INDENT>"<STR_LIT>"<EOL>pass<EOL><DEDENT>user_module = DummyMod()<EOL>user_module.__dict__ = user_ns<EOL><DEDENT>if user_module is None:<EOL><INDENT>user_module = types.ModuleType("<STR_LIT:__main__>",<EOL>doc="<STR_LIT>")<EOL><DEDENT>user_module.__dict__.setdefault('<STR_LIT>', builtin_mod)<EOL>user_module.__dict__.setdefault('<STR_LIT>', builtin_mod)<EOL>if user_ns is None:<EOL><INDENT>user_ns = user_module.__dict__<EOL><DEDENT>return user_module, user_ns<EOL>
Prepare the module and namespace in which user code will be run.

        When IPython is started normally, both parameters are None: a new module
        is created automatically, and its __dict__ used as the namespace.

        If only user_module is provided, its __dict__ is used as the namespace.
        If only user_ns is provided, a dummy module is created, and user_ns
        becomes the global namespace. If both are provided (as they may be
        when embedding), user_ns is the local namespace, and user_module
        provides the global namespace.

        Parameters
        ----------
        user_module : module, optional
            The current user module in which IPython is being run. If None,
            a clean module will be created.
        user_ns : dict, optional
            A namespace in which to run interactive commands.

        Returns
        -------
        A tuple of user_module and user_ns, each properly initialised.