[PEAK] Permissions for class with __getitem__

Radek Kanovsky rk at dat.cz
Mon Feb 14 09:24:35 EST 2005


On Mon, Feb 14, 2005 at 08:39:35AM -0500, Phillip J. Eby wrote:

> At 01:46 PM 2/14/05 +0100, Radek Kanovsky wrote:
> >I know it is minor problem but anyway 'x in y' expression is slightly
> >ambiguous. Wouldn't be better to deprecate form 1 when we can now use
> >unambiguous and more clear ``isinstance(subj, classobj)'' expression?
> 
> It doesn't seem to me that it would fix your problem, since it's form 2 
> that's causing a problem in your case.

I thought about removing form 1 implementation from signature parser
and replacing existing '... in ...' expressions with more explicit
isinstance(...) or adapt(...) expressions:

    [binding.declareAttribute.when(PermissionType)]
    def _declare_permission(classobj,attrname,metadata):
        [Context.permissionFor.when(
            "isinstance(self,Context) and isinstance(subject,classobj) and name==attrname"
        )]
        def declared_permission(self,subject,name):
            return metadata

This solves my problem.

> I need to keep option 1 open though, because in future there will be other 
> things you can use on the right side of 'in'/'not in', in order to do 
> pattern matching.

There is some ambiguity or magic here from my point of view but my
opinion may change :-) Generic functions are novelty for me.

> So, maybe the fix would be to give form 1 priority over form 2, instead of 
> the other way around.  I don't remember why I made the priorities that way 
> anyway, except that it seemed like it would be more backward-compatible 
> with normal "in" expressions that way.

Or remove form 2 and reserve 'in' for GF??? I haven't seen any usage of it yet.

RadekK



More information about the PEAK mailing list