[prev in list] [next in list] [prev in thread] [next in thread]
List: pyamf-commits
Subject: [pyamf-commits] r1793 - in
From: commits () pyamf ! org (commits () pyamf ! org)
Date: 2008-11-23 21:01:00
Message-ID: 20081123200025.D10CD7BC026 () mail ! collab ! com
[Download RAW message or body]
Author: nick
Date: 2008-11-23 21:00:24 +0100 (Sun, 23 Nov 2008)
New Revision: 1793
Modified:
pyamf/branches/messaging-static-attrs-357/pyamf/__init__.py
pyamf/branches/messaging-static-attrs-357/pyamf/amf3.py
pyamf/branches/messaging-static-attrs-357/pyamf/tests/test_amf3.py
pyamf/branches/messaging-static-attrs-357/pyamf/tests/test_basic.py
pyamf/branches/messaging-static-attrs-357/pyamf/tests/util.py
Log:
Work so far
Modified: pyamf/branches/messaging-static-attrs-357/pyamf/__init__.py
===================================================================
--- pyamf/branches/messaging-static-attrs-357/pyamf/__init__.py 2008-11-23 19:54:10 \
UTC (rev 1792)
+++ pyamf/branches/messaging-static-attrs-357/pyamf/__init__.py 2008-11-23 20:00:24 \
UTC (rev 1793) @@ -386,7 +386,7 @@
def __hash__(self):
return id(self)
- def _getAttrs(self, obj, attrs=None, traverse=True):
+ def _getAttrs(self, obj, attrs=None, traverse=True, obj_attrs=None):
if attrs is None:
attrs = []
@@ -396,6 +396,7 @@
did_something = True
attrs += self.attrs
+
if self.attr_func is not None:
did_something = True
extra_attrs = self.attr_func(obj)
@@ -404,10 +405,15 @@
elif 'static' not in self.metadata:
if obj_attrs is None:
obj_attrs = util.get_attrs(obj)
- attrs += obj_attrs.keys()
+ attrs += obj_attrs.keys()
+ did_something = True
+
if traverse is True:
for base in util.get_mro(obj.__class__):
+ if base == obj.__class__:
+ continue
+
try:
alias = get_class_alias(base)
except UnknownClassAlias:
@@ -432,7 +438,7 @@
def getAttrs(self, obj):
"""
- Returns a list of attributes that are availabe for encoding for the
+ Returns a list of attributes that are available for encoding for the
supplied object C{obj}
"""
return self._getAttrs(obj)
@@ -461,13 +467,6 @@
Applies the collection of attributes C{attrs} to aliased object C{obj}.
It is mainly used when reading aliased objects from an AMF byte stream.
"""
- allowed_attributes = self.getAttrs(obj)
-
- if allowed_attributes is not None:
- for k in attrs.keys():
- if k not in allowed_attributes:
- del attrs[k]
-
util.set_attrs(obj, attrs)
def createInstance(self, *args, **kwargs):
Modified: pyamf/branches/messaging-static-attrs-357/pyamf/amf3.py
===================================================================
--- pyamf/branches/messaging-static-attrs-357/pyamf/amf3.py 2008-11-23 19:54:10 UTC \
(rev 1792)
+++ pyamf/branches/messaging-static-attrs-357/pyamf/amf3.py 2008-11-23 20:00:24 UTC \
(rev 1793) @@ -607,15 +607,22 @@
klass = property(getClass)
def _getStaticAttrs(self, attrs):
- if not self.alias:
- return {}
+ a = None
- if self.alias.attrs is None:
- return {}
+ if hasattr(self, 'static_attrs'):
+ a = self.static_attrs
+ else:
+ if not self.alias:
+ return {}
+ if self.alias.attrs is not None:
+ return {}
+
+ a = self.alias.attrs
+
static_attrs = {}
- for at in self.alias.attrs:
+ for at in a:
if at not in attrs.keys():
continue
@@ -631,9 +638,7 @@
"""
attrs = util.get_instance_attrs(obj, self.alias)
- print attrs
static_attrs = self._getStaticAttrs(attrs)
- print static_attrs, attrs
dynamic_attrs = None
if self.alias and self.alias.attr_func:
Modified: pyamf/branches/messaging-static-attrs-357/pyamf/tests/test_amf3.py
===================================================================
--- pyamf/branches/messaging-static-attrs-357/pyamf/tests/test_amf3.py 2008-11-23 \
19:54:10 UTC (rev 1792)
+++ pyamf/branches/messaging-static-attrs-357/pyamf/tests/test_amf3.py 2008-11-23 \
20:00:24 UTC (rev 1793) @@ -327,6 +327,15 @@
self.assertEquals(s, {'foo': 'bar'})
self.assertEquals(d, {'bar': 'baz'})
+ pyamf.register_class(Spam, 'spam.eggs')
+ cd = amf3.ClassDefinition('spam.eggs')
+ cd.static_attrs = ['foo']
+ s, d = cd.getAttrs(x)
+ pyamf.unregister_class(Spam)
+
+ self.assertEquals(s, {'foo': 'bar'})
+ self.assertEquals(d, {'bar': 'baz', 'baz': 'gak'})
+
class EncoderTestCase(_util.ClassCacheClearingTestCase):
"""
Tests the output from the AMF3 L{Encoder<pyamf.amf3.Encoder>} class.
@@ -1066,6 +1075,7 @@
self.assertEquals(self.context.objects, [])
self.assertEquals(self.context.strings, [])
self.assertEquals(self.context.classes, [])
+ self.assertEquals(self.context.class_defs, [])
self.stream.write('\x0a\x13\x0fabc.xyz\x09spam\x06\x09eggs')
self.stream.seek(0, 0)
Modified: pyamf/branches/messaging-static-attrs-357/pyamf/tests/test_basic.py
===================================================================
--- pyamf/branches/messaging-static-attrs-357/pyamf/tests/test_basic.py 2008-11-23 \
19:54:10 UTC (rev 1792)
+++ pyamf/branches/messaging-static-attrs-357/pyamf/tests/test_basic.py 2008-11-23 \
20:00:24 UTC (rev 1793) @@ -267,7 +267,7 @@
pyamf.register_class(Spam)
alias = pyamf.get_class_alias(Spam)
- self.assertEquals(alias.getAttrs(self.obj), ['foo', 'x', 'baz'])
+ self.assertEquals(alias.getAttrs(self.obj), ['x', 'foo', 'baz'])
def test_static(self):
pyamf.register_class(Spam, attrs=['foo'])
@@ -282,7 +282,7 @@
alias = pyamf.get_class_alias(Spam)
x = Spam()
- self.assertEquals(alias.getAttrs(x), None)
+ self.assertEquals(alias.getAttrs(x), [])
pyamf.unregister_class(Spam)
Modified: pyamf/branches/messaging-static-attrs-357/pyamf/tests/util.py
===================================================================
--- pyamf/branches/messaging-static-attrs-357/pyamf/tests/util.py 2008-11-23 19:54:10 \
UTC (rev 1792)
+++ pyamf/branches/messaging-static-attrs-357/pyamf/tests/util.py 2008-11-23 20:00:24 \
UTC (rev 1793) @@ -30,6 +30,14 @@
def __writeamf__(self, output):
pass
+ def __repr__(self):
+ return '<%s.%s 0x%x %r>' % (
+ self.__module__,
+ self.__class__.__name__,
+ id(self),
+ self.__dict__
+ )
+
class ClassCacheClearingTestCase(unittest.TestCase):
def setUp(self):
unittest.TestCase.setUp(self)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic