Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > about recursive load

Reply
Thread Tools

about recursive load

 
 
Michel Perez
Guest
Posts: n/a
 
      10-30-2008
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[kg.find(".")]):
father=self.__dict__['flags'][pkg]=Settings( \
pkg[kg.find(".")],self)
else:
father = parent
else:
if not parent.__dict__['flags'].has_key(pkg[kg.find(".")]):
father=parent.__dict__['flags'][pkg[kg.find(".")]]= \
Settings(pkg[kg.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
 
Reply With Quote
 
 
 
 
alex23
Guest
Posts: n/a
 
      10-31-2008
On Oct 30, 2:22*pm, Michel Perez <(E-Mail Removed)> wrote:
> 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.


I'm not sure if I follow your full requirements, but are you after
something like this?

class Settings(object):
def load_config(self, module_name):
module = __import__(module_name)
self.__dict__[module_name] = module

>>> settings = Settings()
>>> settings.load_config('project.test')
>>> settings.load_config('project')
>>> settings.project.CONFIG_PARAMETER_1

'project.config_parameter_1'
>>> settings.project.test.CONFIG_PARAMETER_1

'project.test.config_parameter_1'

 
Reply With Quote
 
 
 
 
alex23
Guest
Posts: n/a
 
      10-31-2008
On Fri, Oct 31, 2008 at 3:50 PM, Abah Joseph <(E-Mail Removed)>
wrote:
> what will module_name looks like?. i mean the new loaded
> module. i am very new to this also. thank you.


I'm not sure if I'm following what you want... I thought you were
asking for a way to load modules containing configuration information
into a single object, in order to be able to refer to them all through
one instance:

> 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


Is that correct?

If so, in my example 'module_name' will be arguments like
"project.test.app", which the load_config module imports and then
injects into its attribute dictionary, to allow for dot notation
lookups...

If you're after something different, could you try explaining it
another way?

(You should also reply to the group/mailing list rather than to me
personally, it increases the potential sources of help...)
 
Reply With Quote
 
alex23
Guest
Posts: n/a
 
      10-31-2008
On Oct 31, 4:58*pm, alex23 <(E-Mail Removed)> wrote:
> "project.test.app", which the load_config module imports and then


Sorry, that should be "load_config *method*".


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Recursive functions Vs Non-recursive functions - performance aspect vamsi C Programming 21 03-09-2009 10:53 PM
Two recursive calls inside of a recursive function n00m C++ 12 03-13-2008 03:18 PM
Load Balancing / Load Sharing over parallel paths ciscortp@hotmail.com Cisco 1 11-21-2005 03:57 PM
Page Load and webcontrol page load venky ASP .Net 5 07-11-2005 03:16 PM
beginning page load immediately on postback with a long load time ? Mad Scientist Jr ASP .Net 7 06-30-2004 07:40 PM



Advertisments