[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ Optimize `SkinnableObjectManager.__getattr__` to short circuit view (`@`) and traverser (`+`) lookup in addition to `_` and `aq_`.
Hanno Schlichting
hannosch at hannosch.eu
Sun Jul 17 14:53:16 EDT 2011
Log message for revision 122272:
Optimize `SkinnableObjectManager.__getattr__` to short circuit view (`@`) and traverser (`+`) lookup in addition to `_` and `aq_`.
Changed:
U Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
U Products.CMFCore/trunk/Products/CMFCore/Skinnable.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2011-07-17 18:49:11 UTC (rev 122271)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2011-07-17 18:53:15 UTC (rev 122272)
@@ -4,6 +4,9 @@
2.3.0-alpha (unreleased)
------------------------
+- Optimize `SkinnableObjectManager.__getattr__` to short circuit view (`@`) and
+ traverser (`+`) lookup in addition to `_` and `aq_`.
+
- Avoid a shallow dependency on `Products.ZReST`.
- Fixed types tool test to only test creation for type infos.
Modified: Products.CMFCore/trunk/Products/CMFCore/Skinnable.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/Skinnable.py 2011-07-17 18:49:11 UTC (rev 122271)
+++ Products.CMFCore/trunk/Products/CMFCore/Skinnable.py 2011-07-17 18:53:15 UTC (rev 122272)
@@ -63,7 +63,9 @@
This should be fast, flexible, and predictable.
'''
- if not name.startswith('_') and not name.startswith('aq_'):
+ if not name:
+ raise AttributeError(name)
+ if name[0] not in ('_', '@', '+') and not name.startswith('aq_'):
sd = SKINDATA.get(get_ident())
if sd is not None:
ob, skinname, ignore, resolve = sd
@@ -80,7 +82,7 @@
return retval
else:
ignore[name] = 1
- raise AttributeError, name
+ raise AttributeError(name)
security.declarePrivate('getSkin')
def getSkin(self, name=None):
More information about the checkins
mailing list