Re: ZConfigInterpreter with data from STDIN
Alexey Smishlayev <[email protected]> Thu, 16 Apr 2015 11:36:07 +0300
| Newsgroups | gmane.comp.python.peak |
|---|---|
| Message-ID | <[email protected]> |
Yes, I understand and adore the reasoning behind PEAK component architecture. But it is quite hard to grasp that feeling, especially because I know a very little subset of PEAK, I'm just unaware of all its capabilities (: Alexey On 16/04/15 01:48, PJ Eby wrote: > No problem. The whole idea behind adaptation and generic components > in PEAK is so that you don't have to replace things. For that matter, > the idea behind the naming system is that you should be able to turn > arbitrary names into arbitrary things; if the `fd.file:` scheme didn't > already exist, it would be straightforward to make it yourself. (See > the last 80 lines of peak.naming.factories.openable for the code.) > > In fact, your original script could have been implemented simply using > a #! line, like '#!/bin/invoke peak ZConfig' at the beginning of your > schema file. Or you could make your app's .ini file executable, with > '#!/bin/invoke peak runIni'. Everywhere the original PEAK framework > tries to make things composable and to map names of things to objects > so that coding isn't needed when you're just gluing together existing > tools. > > > On Wed, Apr 15, 2015 at 4:42 PM, Alexey Smishlayev <[email protected]> wrote: >> I looks like it worked. So simple! Great thanks for the advice, PJ! >> >> Alexey >> >> >> >> On 15/04/15 20:19, PJ Eby wrote: >>> Have you tried just using "fd.file:stdin" as the cfgName? >>> >>> On Wed, Apr 15, 2015 at 8:49 AM, Alexey Smishlayev <[email protected]> >>> wrote: >>>> 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 >>>> >>>> _______________________________________________ >>>> PEAK mailing list >>>> [email protected] >>>> http://www.eby-sarna.com/mailman/listinfo/peak >> >> _______________________________________________ >> PEAK mailing list >> [email protected] >> http://www.eby-sarna.com/mailman/listinfo/peak