[Web-SIG] cusom config files. was (PasteDeploy 0.1)
Michal Wallace
michal at sabren.com
Wed Aug 24 09:05:36 CEST 2005
On Wed, 24 Aug 2005, Phillip J. Eby wrote:
> At 11:46 PM 8/23/2005 -0400, Michal Wallace wrote:
> > On Tue, 23 Aug 2005, Phillip J. Eby wrote:
>
> > > I would say that there is definitely a real need for a
> > > declarative Python object definition syntax that supports
> > > nesting and internal references, and so if we can come up
> > > with something good, it can and should *become* a standard for
> > > such purposes, well beyond the scope of its initial mission
> > > of being a WSGI deployment syntax.
>
> > Well, if that's all you want to do, then
> > why not just add some syntactic sugar
> > to pickle?
>
> pickles aren't a declarative format; they're procedural.
Huh. So it is. I didn't know that. :)
I guess my real point is that it seems like
a huge leap to come up with a whole new language,
when python itself can do the job just fine.
For example, if you set up a coding standard
where data classes have an empty constructor,
then you can do something like this:
class Instance(Class, **kwargs):
def __init__(self):
self.class_ = Class
self.kwargs = kwargs
def eval(self):
obj = self.class_()
for k, v in kw.items():
setattr(obj, kw)
return obj
and maybe this for forward references:
class Promise(thunk):
def __init__(self, thunk):
self.thunk = thunk
def eval(self):
return self.thunk()
Then you can make all kinds of complicated things
declaratively:
class Node:
pass
def aComplicatedStructure():
loop = Instance(Node, next=Promise(lambda: loop))
return Instance(Node, child=loop, other={"a":"b"})
The only thing missing is to walk the tree and replace
any Promise or Instance node with the result of its
eval().
I'm sure there's a way to do all that without the
restriction on __init__, too... Just add another
class along those lines that handles parameters to
the constructor.
Now, I'm *not* saying this is the way to go for WSGI.
But if you're going to shoot for the moon and propose
a standard to use for *everything*, I think plain old
python is more than adequate.
Sincerely,
Michal J Wallace
Sabren Enterprises, Inc.
-------------------------------------
contact: michal at sabren.com
hosting: http://www.cornerhost.com/
my site: http://www.withoutane.com/
-------------------------------------
More information about the Web-SIG
mailing list