Hi, am very newbie in Python, but as part of a project i need to load configuration -a settings.py file in the package dir- of my apps recursively, something like this:
settings.load_config("project.test.app") settings.load_config("project.test.*") settings.load_config("project.test") settings.load_config("*") this allows me to load them as: settings.project.CONFIG_PARAMETER_1 # project configuration settings.project.test.CONFIG_PARAMETER_1 # sub project and so on. This it's what i've done, class Settings: def __getattr__( self, attr): return self.__dict__['flags'][attr] def __setattr__(self, attr, value): self.__dict__['flags'][attr]=value def __init__(self, package = None, parent = None): self.__package = package self.__parent = None self.__dict__['flags']={} def get_parent ( self): return self.__parent def create_config_structure( self, pkg, parent = None ): # ... assuming no error and all that if pkg.count(".") > 0: if parent is None: if not self.__dict__['flags'].has_key(pkg[:pkg.find(".")]): father=self.__dict__['flags'][pkg]=Settings( \ pkg[:pkg.find(".")],self) else: father = parent else: if not parent.__dict__['flags'].has_key(pkg[:pkg.find(".")]): father=parent.__dict__['flags'][pkg[:pkg.find(".")]]= \ Settings(pkg[:pkg.find(".")], parent) else: father = parent self.create_config_structure( pkg [pkg.find(".")+1:],father) else: if not parent.__dict__['flags'].has_key: parent.__dict__['flags'][pkg]=Settings(pkg,parent) return parent.__dict__['flags'][pkg] def load_config ( self, pkg= None ): config_module_object = self.create_config_structure( pkg ) # the loading configuration part try: if pkg is not None: mod = __import__( pkg + ".settings", {},{},['']) else: mod = __import__( "settings", {},{},['']) except: raise ImportError("Settings not found") data={} for setting in dir(mod): if setting == setting.upper(): data[setting]=getattr(mod, setting) for key in data: if pkg is not None: setattr( config_module_object.__dict__['flags'], key, data[key]) else: setattr(self.__dict__['flags'], key, data[key]) Any idea it's welcome --------------------------------------- Red Telematica de Salud - Cuba CNICM - Infomed -- http://mail.python.org/mailman/listinfo/python-list