def __init__(self, mapping=(), fvars={}, autoreload=None): if autoreload is None: autoreload = web.config.get('debug', False) self.mapping = mapping self.fvars = fvars self.processors = [] if autoreload: def modname(fvars): """find name of the module name from fvars.""" file, name = fvars['__file__'], fvars['__name__'] if name == '__main__': # Since the __main__ module can't be reloaded, the module has # to be imported using its file name. name = os.path.splitext(os.path.basename(file))[0] return name mapping_name = utils.dictfind(fvars, mapping) module_name = modname(fvars) def reload_mapping(): """loadhook to reload mapping and fvars.""" mod = __import__(module_name) self.fvars = mod.__dict__ self.mapping = getattr(mod, mapping_name) # to reload modified modules self.add_processor(loadhook(Reloader())) # to update mapping and fvars self.add_processor(loadhook(reload_mapping))
def __init__(self, mapping=(), fvars={}, autoreload=None): if autoreload is None: autoreload = web.config.get('debug', False) self.mapping = mapping self.mapping_add_later = tuple() self.fvars = fvars self.processors = [] self.add_processor(loadhook(self._load)) self.add_processor(unloadhook(self._unload)) if autoreload: def main_module_name(): mod = sys.modules['__main__'] file = getattr(mod, '__file__', None) # make sure this works even from python interpreter return file and os.path.splitext(os.path.basename(file))[0] def modname(fvars): """find name of the module name from fvars.""" file, name = fvars.get('__file__'), fvars.get('__name__') if file is None or name is None: return None if name == '__main__': # Since the __main__ module can't be reloaded, the module has # to be imported using its file name. name = main_module_name() return name mapping_name = utils.dictfind(fvars, mapping) module_name = modname(fvars) def reload_mapping(): """loadhook to reload mapping and fvars.""" mod = __import__(module_name) mapping = getattr(mod, mapping_name, None) if mapping: self.fvars = mod.__dict__ # fixed map in add_mapping if self.mapping_add_later: mapping += self.mapping_add_later self.mapping = mapping self.add_processor(loadhook(Reloader())) if mapping_name and module_name: self.add_processor(loadhook(reload_mapping)) # load __main__ module usings its filename, so that it can be reloaded. if main_module_name() and '__main__' in sys.argv: try: __import__(main_module_name()) except ImportError: pass
def __init__(self, mapping=(), fvars={}, autoreload=None): if autoreload is None: autoreload = web.config.get('debug', False) # init self.mapping # mapping is ('a', 'b', 'c', 'd') # after invoke # self.mapping is [['a','b'], ['c', 'd']] self.init_mapping(mapping) self.fvars = fvars self.processors = [] # _load will be implement before the normal handler of the request self.add_processor(loadhook(self._load)) # _unload will be implement after the normal handler of the request self.add_processor(unloadhook(self._unload)) if autoreload: def main_module_name(): mod = sys.modules['__main__'] file = getattr(mod, '__file__', None) # make sure this works even from python interpreter return file and os.path.splitext(os.path.basename(file))[0] def modname(fvars): """find name of the module name from fvars.""" file, name = fvars.get('__file__'), fvars.get('__name__') if file is None or name is None: return None if name == '__main__': # Since the __main__ module can't be reloaded, the module has # to be imported using its file name. name = main_module_name() return name mapping_name = utils.dictfind(fvars, mapping) module_name = modname(fvars) def reload_mapping(): """loadhook to reload mapping and fvars.""" mod = __import__(module_name, None, None, ['']) mapping = getattr(mod, mapping_name, None) if mapping: self.fvars = mod.__dict__ self.init_mapping(mapping) self.add_processor(loadhook(Reloader())) if mapping_name and module_name: self.add_processor(loadhook(reload_mapping)) # load __main__ module usings its filename, so that it can be reloaded. if main_module_name() and '__main__' in sys.argv: try: __import__(main_module_name()) except ImportError: pass
def __init__(self, mapping=(), fvars={}, autoreload=None): if autoreload is None: autoreload = web.config.get('debug', False) self.init_mapping(mapping) self.fvars = fvars self.processors = [] self.add_processor(loadhook(self._load)) self.add_processor(unloadhook(self._unload)) self._simpleserver = None if autoreload: def main_module_name(): mod = sys.modules['__main__'] file = getattr( mod, '__file__', None) # make sure this works even from python interpreter return file and os.path.splitext(os.path.basename(file))[0] def modname(fvars): """find name of the module name from fvars.""" file, name = fvars.get('__file__'), fvars.get('__name__') if file is None or name is None: return None if name == '__main__': # Since the __main__ module can't be reloaded, the module has # to be imported using its file name. name = main_module_name() return name mapping_name = utils.dictfind(fvars, mapping) module_name = modname(fvars) def reload_mapping(): """loadhook to reload mapping and fvars.""" mod = __import__(module_name, None, None, ['']) mapping = getattr(mod, mapping_name, None) if mapping: self.fvars = mod.__dict__ self.init_mapping(mapping) self.add_processor(loadhook(Reloader())) if mapping_name and module_name: self.add_processor(loadhook(reload_mapping)) # load __main__ module usings its filename, so that it can be reloaded. if main_module_name() and '__main__' in sys.argv: try: __import__(main_module_name()) except ImportError: pass
def webpyfunc(inp, fvars, autoreload=False): """If `inp` is a url mapping, returns a function that calls handle.""" if not hasattr(inp, '__call__'): if autoreload: # black magic to make autoreload work: mod = __import__(fvars['__name__'], None, None, [""]) #@@probably should replace this with some inspect magic name = utils.dictfind(fvars, inp) func = lambda: handle(getattr(mod, name), mod) else: func = lambda: handle(inp, fvars) else: func = inp return func
def webpyfunc(inp, fvars, autoreload=False): """If `inp` is a url mapping, returns a function that calls handle.""" if not hasattr(inp, '__call__'): if autoreload: # black magic to make autoreload work: mod = \ __import__( fvars['__file__'].split(os.path.sep).pop().split('.')[0]) #@@probably should replace this with some inspect magic name = utils.dictfind(fvars, inp) func = lambda: handle(getattr(mod, name), mod) else: func = lambda: handle(inp, fvars) else: func = inp return func
def webpyfunc(inp, fvars, autoreload=False): """If `inp` is a url mapping, returns a function that calls handle.""" if not hasattr(inp, '__call__'): if autoreload: def modname(): """find name of the module name from fvars.""" file, name = fvars['__file__'], fvars['__name__'] if name == '__main__': # Since the __main__ module can't be reloaded, the module has # to be imported using its file name. name = os.path.splitext(os.path.basename(file))[0] return name mod = __import__(modname(), None, None, [""]) #@@probably should replace this with some inspect magic name = utils.dictfind(fvars, inp) func = lambda: handle(getattr(mod, name), mod) else: func = lambda: handle(inp, fvars) else: func = inp return func