Re: [Zope-dev] ZPatterns bug with patch

2000-08-28 Thread Steve Alexander

"Phillip J. Eby" wrote:
 
 At 10:22 AM 8/27/00 +0100, Steve Alexander wrote:
 
 I've fixed this by adding a test to the start of __set_attr__ of
 DataSkins.py:
 
 def __set_attr__(self,name,val,_v_dm_=_v_dm_):
 +   if name=='id' and val==self.__dict__['id']:
 +   return
 dm = self.__dict__[_v_dm_]
 
 This looks reasonable, and backward-compatible, since __init__ guarantees
 the dict will have an id.  I'm not thrilled with adding more overhead to
 attribute setting, however, so I'll probably do it like this:
 
 try:
 dm = self.__dict__[_v_dm_]
 except KeyError:
 if name=='id' and val==self.__dict__['id']: return
 raise
 
 Hopefully this should only perform the extra computations when the first
 part fails...

Are Python classes derived from DataSkin supposed to call
DataSkin.__init__ ?

Anyway, perhaps this would be a small improvement:

try:
dm = self.__dict__[_v_dm_]
except KeyError:
if (name=='id' and self.__dict__.has_key('id') 
and val==self.__dict__['id']): return
raise


--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )




Re: [Zope-dev] ZPatterns bug with patch

2000-08-28 Thread Steve Alexander

 "Phillip J. Eby" wrote:
  
  try:
  dm = self.__dict__[_v_dm_]
  except KeyError:
  if name=='id' and val==self.__dict__['id']: return
  raise
  
  Hopefully this should only perform the extra computations when the first
  part fails...

 Are Python classes derived from DataSkin supposed to call
 DataSkin.__init__ ?

 Anyway, perhaps this would be a small improvement:

 try:
 dm = self.__dict__[_v_dm_]
 except KeyError:
 if (name=='id' and self.__dict__.has_key('id') 
 and val==self.__dict__['id']): return
 raise

What rubbish! I didn't mean that at all!

I think what I meant was this:

try:
dm = self.__dict__[_v_dm_]
except KeyError:
if name=='id':
if self.__dict__.has_key('id') and val==self.__dict__.['id']:
return
else:
self.__dict__['id']=val
return
raise  


--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )




Re: [Zope-dev] ZPatterns bug with patch

2000-08-28 Thread Steve Alexander

Steve Alexander wrote:
  
 What rubbish! I didn't mean that at all!
 
 I think what I meant was this:
 
 try:
 dm = self.__dict__[_v_dm_]
 except KeyError:
 if name=='id':
 if self.__dict__.has_key('id') and val==self.__dict__.['id']:
 return
 else:
 self.__dict__['id']=val
 return
 raise

I think what I *really* meant was this:

try:
dm = self.__dict__[_v_dm_]
except KeyError:
if name=='id':
if self.__dict__.has_key('id') and val==self.__dict__['id']:
return
else:
self.__dict__['id']=val
self._p_changed = 1
return
raise

--
Steve Alexander
Software Engineer
Cat-Box limited
http://www.cat-box.net

___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )




Re: [Zope-dev] ZPatterns bug with patch

2000-08-27 Thread Phillip J. Eby

At 10:22 AM 8/27/00 +0100, Steve Alexander wrote:

I've fixed this by adding a test to the start of __set_attr__ of
DataSkins.py:

def __set_attr__(self,name,val,_v_dm_=_v_dm_):
+   if name=='id' and val==self.__dict__['id']:
+   return
dm = self.__dict__[_v_dm_]

This looks reasonable, and backward-compatible, since __init__ guarantees
the dict will have an id.  I'm not thrilled with adding more overhead to
attribute setting, however, so I'll probably do it like this:

try:
dm = self.__dict__[_v_dm_]
except KeyError:
if name=='id' and val==self.__dict__['id']: return
raise

Hopefully this should only perform the extra computations when the first
part fails...


___
Zope-Dev maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope )