[PEAK] ZConfigInterpreter with data from STDIN

Alexey Smishlayev alexey at xtech2.lv
Wed Apr 15 08:49:51 EDT 2015


Hello!
I am trying to refactor existing peak application. I need to be able to 
load ZConfig file from data incoming by STDIN. Now, the loader included 
in peak is using files, so I implemented a subclass which should 
simulate a file resource (in file zconfig.py). I also searched peak.ini 
for any lines regarding zconfig. I copied all settings and changed them 
to point to my custom classes (in file custom.ini; "ank.BBS" is my 
project package).

In the python script, ZConfigInperpreter was used to get the application 
root component in the following way:
 >    _argv=["ZConfig", scheme, cfgName]
 >    _argv.extend(sys.argv[1:])
 >    return ZConfigInterpreter(
 >        config.makeRoot(),
 >        argv=_argv,
 >        componentName="MYAPP"
 >    )

Now I want to pass no cfgName and get interpreter to process the STDIN. 
But the PEAK seem to not find settings which I've put in my .ini file 
and I'm stuck.
I've narrowed it down - the 
ZConfigInterpreter.lookupComponent('zconfig.schema:'+str(url)) returns 
peak.config.load_zconfig.ConfigLoader, instead of my custom class 
(STDINConfigLoader from my file). I tried to trace down the stack with 
pdb, and it seems that some lookup for 
"zconfig.schema:/path/to/schema/file.xml" returns 
peak.config.load_zconfig.ZConfigSchemaContext.
I've subclassed that one too, but have no success.

Can anyone, please, help me, how to replace the standard ZConfig classes?

Best regards,
Alexey
-------------- next part --------------
A non-text attachment was scrubbed...
Name: zconfig.py
Type: text/x-python-script
Size: 2618 bytes
Desc: not available
Url : http://www.eby-sarna.com/pipermail/peak/attachments/20150415/4b4d66ff/zconfig.bin
-------------- next part --------------
# [...]
[peak.naming.factories]
zconfig.schema = importString(
        "ank.BBS.zconfig:STDINSchemaLoader"
    )(targetObj)

[peak.naming.schemes]
zconfig.schema = "ank.BBS.zconfig:STDINZConfigSchemaContext"

#[...]


More information about the PEAK mailing list