def render(self, fn=None, prompt=False, **params):
from getpass import getpass<EOL>expected_keys = self.expected_param_keys()<EOL>compiled_params = Dict(**params)<EOL>for key in expected_keys:<EOL><INDENT>if key not in compiled_params.keys():<EOL><INDENT>if prompt==True:<EOL><INDENT>if key=='<STR_LIT:password>':<EOL><INDENT>compiled_params[key] = getpass("<STR_LIT>" % key)<EOL><DEDENT>else:<EOL><INDENT>compiled_params[key] = input("<STR_LIT>" % key)<EOL>if '<STR_LIT:path>' in key:<EOL><INDENT>compiled_params[key] = compiled_params[key].replace('<STR_LIT:\\>','<STR_LIT>')<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>compiled_params[key] = "<STR_LIT>" % key<EOL><DEDENT><DEDENT><DEDENT>config = ConfigTemplate(fn=fn, **self)<EOL>config.__dict__['<STR_LIT>'] = self.__dict__.get('<STR_LIT>')<EOL>for block in config.keys():<EOL><INDENT>for key in config[block].keys():<EOL><INDENT>if type(config[block][key])==str:<EOL><INDENT>config[block][key] = config[block][key] % compiled_params<EOL><DEDENT><DEDENT><DEDENT>return config<EOL>
return a Config with the given params formatted via ``str.format(**params)``.
        fn=None         : If given, will assign this filename to the rendered Config.
        prompt=False    : If True, will prompt for any param that is None.