[Lxml-checkins] r39379 - in lxml/trunk: . src/lxml src/lxml/tests
scoder at codespeak.net
scoder at codespeak.net
Sun Feb 25 11:51:38 CET 2007
Author: scoder
Date: Sun Feb 25 11:51:35 2007
New Revision: 39379
Modified:
lxml/trunk/CHANGES.txt
lxml/trunk/src/lxml/etree.pyx
lxml/trunk/src/lxml/tests/test_elementtree.py
Log:
Element.attrib.update()
Modified: lxml/trunk/CHANGES.txt
==============================================================================
--- lxml/trunk/CHANGES.txt (original)
+++ lxml/trunk/CHANGES.txt Sun Feb 25 11:51:35 2007
@@ -8,6 +8,8 @@
Features added
--------------
+* ``update()`` method on Element.attrib
+
* Optimised replacement for libxml2's _xmlReconsiliateNs(). This allows lxml
a better handling of namespaces when moving elements between documents.
Modified: lxml/trunk/src/lxml/etree.pyx
==============================================================================
--- lxml/trunk/src/lxml/etree.pyx (original)
+++ lxml/trunk/src/lxml/etree.pyx Sun Feb 25 11:51:35 2007
@@ -1374,6 +1374,12 @@
def __delitem__(self, key):
_delAttribute(self._element, key)
+ def update(self, sequence_or_dict):
+ if isinstance(sequence_or_dict, dict):
+ sequence_or_dict = dict.iteritems()
+ for name, value in sequence_or_dict:
+ self[name] = value
+
# ACCESSORS
def __repr__(self):
return repr(dict( _attributeIteratorFactory(self._element, 3) ))
Modified: lxml/trunk/src/lxml/tests/test_elementtree.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_elementtree.py (original)
+++ lxml/trunk/src/lxml/tests/test_elementtree.py Sun Feb 25 11:51:35 2007
@@ -290,6 +290,60 @@
self.assertEquals(None, root.get('three'))
self.assertEquals('foo', root.get('three', 'foo'))
+ def test_attribute_update_dict(self):
+ XML = self.etree.XML
+
+ root = XML('<doc alpha="Alpha" beta="Beta"/>')
+ items = root.attrib.items()
+ values.sort()
+ self.assertEquals(
+ [('alpha', 'Alpha'), ('beta', 'Beta')],
+ values)
+
+ root.attrib.update({'alpha' : 'test', 'gamma' : 'Gamma'})
+
+ items = root.attrib.items()
+ values.sort()
+ self.assertEquals(
+ [('alpha', 'test'), ('beta', 'Beta'), ('gamma' : 'Gamma')],
+ values)
+
+ def test_attribute_update_sequence(self):
+ XML = self.etree.XML
+
+ root = XML('<doc alpha="Alpha" beta="Beta"/>')
+ items = root.attrib.items()
+ values.sort()
+ self.assertEquals(
+ [('alpha', 'Alpha'), ('beta', 'Beta')],
+ values)
+
+ root.attrib.update({'alpha' : 'test', 'gamma' : 'Gamma'}.items())
+
+ items = root.attrib.items()
+ values.sort()
+ self.assertEquals(
+ [('alpha', 'test'), ('beta', 'Beta'), ('gamma' : 'Gamma')],
+ values)
+
+ def test_attribute_update_iter(self):
+ XML = self.etree.XML
+
+ root = XML('<doc alpha="Alpha" beta="Beta"/>')
+ items = root.attrib.items()
+ values.sort()
+ self.assertEquals(
+ [('alpha', 'Alpha'), ('beta', 'Beta')],
+ values)
+
+ root.attrib.update({'alpha' : 'test', 'gamma' : 'Gamma'}.iteritems())
+
+ items = root.attrib.items()
+ values.sort()
+ self.assertEquals(
+ [('alpha', 'test'), ('beta', 'Beta'), ('gamma' : 'Gamma')],
+ values)
+
def test_attribute_keys(self):
XML = self.etree.XML
More information about the lxml-checkins
mailing list