Merge r71220 from old branch:

  Warming up: Make acquisition wrappers have __parent__ in addition to aq_parent
  (they point to the same thing).
parent ee57fbc8
...@@ -419,18 +419,27 @@ Wrapper_findattr(Wrapper *self, PyObject *oname, ...@@ -419,18 +419,27 @@ Wrapper_findattr(Wrapper *self, PyObject *oname,
char *name=""; char *name="";
if (PyString_Check(oname)) name=PyString_AS_STRING(oname); if (PyString_Check(oname)) name=PyString_AS_STRING(oname);
if (*name=='a' && name[1]=='q' && name[2]=='_') if ((*name=='a' && name[1]=='q' && name[2]=='_') ||
if ((r=Wrapper_special(self, name+3, oname))) (strcmp(name, "__parent__")==0))
{ {
if (filter) /* __parent__ is an alias to aq_parent */
switch(apply_filter(filter,OBJECT(self),oname,r,extra,orig)) if (strcmp(name, "__parent__")==0)
{ name = "parent";
case -1: return NULL; else
case 1: return r; name = name + 3;
}
else return r; if ((r=Wrapper_special(self, name, oname)))
} {
else PyErr_Clear(); if (filter)
switch(apply_filter(filter,OBJECT(self),oname,r,extra,orig))
{
case -1: return NULL;
case 1: return r;
}
else return r;
}
else PyErr_Clear();
}
else if (*name=='_' && name[1]=='_' && else if (*name=='_' && name[1]=='_' &&
(strcmp(name+2,"reduce__")==0 || (strcmp(name+2,"reduce__")==0 ||
strcmp(name+2,"reduce_ex__")==0 || strcmp(name+2,"reduce_ex__")==0 ||
......
...@@ -357,6 +357,11 @@ def test_unwrapped(): ...@@ -357,6 +357,11 @@ def test_unwrapped():
... ...
AttributeError: aq_parent AttributeError: aq_parent
>>> c.__parent__
Traceback (most recent call last):
...
AttributeError: __parent__
>>> Acquisition.aq_acquire(c, 'id') >>> Acquisition.aq_acquire(c, 'id')
'unwrapped' 'unwrapped'
>>> Acquisition.aq_acquire(c, 'x') >>> Acquisition.aq_acquire(c, 'x')
...@@ -533,6 +538,13 @@ def test_simple(): ...@@ -533,6 +538,13 @@ def test_simple():
>>> show(Acquisition.aq_self(a.b.c)) >>> show(Acquisition.aq_self(a.b.c))
c c
A wrapper's __parent__ attribute (which is equivalent to its
aq_parent attribute) points to the Acquisition parent.
>>> a.b.c.__parent__ == a.b.c.aq_parent
True
>>> a.b.c.__parent__ == a.b
True
""" """
def test__of__exception(): def test__of__exception():
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment