4.6. VLCP Configuration Desigin and Implementations¶
As Configuration Manual description, VLCP use config file to change the behaviors of all the internal objects.
each key value in file will be store into ConfigTree
an data structure named manager
. every key made up of
multi parts split by . , describe an inherit relationship, so config key has a close relationship with source class code.
class instance attribution will map with ConfigTree
, so we can change value through config file. The steps are:
- read config file to manager ConfigTree.
- map class instance attribution with ConfigTree.
4.6.1. Read config file to ConfigTree¶
When VLCP start, it will read config , parse it , and store it to manager
. as code below:
server.py:: main: manager.loadfrom(configpath)
config.py:: manager: loadfromfile(file)
every key value will be store as manager
attribution.
Note
ConfigTree class has implements __setitems__ , so you can read config.py to know how to store attribution.
4.6.2. Map class instace attribution¶
After perpare ConfigTree
, every class want to map attribution to manager ConfigTree
, must be inherit from
Configurable
an class has implements __getattr__
method. as steps:
1. try return manager[getattr(cls, 'configkey') + '.' + key] as value
2. try return cls.__dict__['_default_' + key] as value
3. try parent class goto 1
so when class get attribution will get manager value first.
but as step 1 we need class configkey
attribution to find value. so class must have configkey
attribution also.
there is three help method in config.py
to create configkey attribution:
configbase(key)
config(key)
defaultconfig(key)
for example an configurable class mybe link this:
@config('server')
class Server(Configurable):
......
Note
configkey has relationship with base class , you can read function declaration in source code.