r252782 - in imsvdex/trunk: . imsvdex imsvdex/tests

"Tom Gross" <svn-changes-z4DKO/[email protected]> Tue, 27 May 2014 09:47:13 +0000 (UTC)
Newsgroups gmane.comp.web.zope.plone.collective.cvs
Message-ID <[email protected]>
Author: tom_gross
Date: Tue May 27 09:47:13 2014
New Revision: 252782

Removed:
   imsvdex/trunk/imsvdex/_odict.py
Modified:
   imsvdex/trunk/CHANGES.txt
   imsvdex/trunk/imsvdex/tests/testConverters.py
   imsvdex/trunk/imsvdex/vdex.py
   imsvdex/trunk/setup.py
Log:
use lxml instead of elementtree


Modified: imsvdex/trunk/CHANGES.txt
==============================================================================
--- imsvdex/trunk/CHANGES.txt	(original)
+++ imsvdex/trunk/CHANGES.txt	Tue May 27 09:47:13 2014
@@ -5,6 +5,9 @@
 2.0a1 - (Unreleased)
 --------------------
 
+- Use lxml instead of elementtree
+  [tomgross]
+
 - Adding posibility to generate vdex from a twodimension matrix, and
   corresponding export functionality.
   WARNING: The constructor arguments changed. Please update accordingly

Modified: imsvdex/trunk/imsvdex/tests/testConverters.py
==============================================================================
--- imsvdex/trunk/imsvdex/tests/testConverters.py	(original)
+++ imsvdex/trunk/imsvdex/tests/testConverters.py	Tue May 27 09:47:13 2014
@@ -2,6 +2,8 @@
 import unittest
 
 from imsvdex.vdex import VDEXManager
+from lxml import etree
+from lxml import objectify
 
 class Conversions(unittest.TestCase):
     def testMatrixExport(self):
@@ -17,7 +19,9 @@
         self.assertEquals(matrix, new_manager.exportMatrix())
 
         data = new_manager.serialize()
-        should_be = '<?xml version="1.0" encoding="utf-8"?>\n<vdex xmlns="http://www.imsglobal.org/xsd/imsvdex_v1p0"><term><termIdentifier>identical</termIdentifier><caption><langstring language="en">is identical with</langstring><langstring language="fr">est identique avec</langstring><langstring language="it">\xc3\xa8 identico con</langstring></caption></term><term><termIdentifier>relative</termIdentifier><caption><langstring language="de">ist verwandt mit</langstring><langstring language="en">is relative of</langstring><langstring language="fr">est parent avec</langstring><langstring language="it">\xc3\xa8 parente di</langstring></caption><term><termIdentifier>child</termIdentifier><caption><langstring language="de">ist Kind von</langstring><langstring language="en">is child of</langst
 ring><langstring language="fr">est enfant de</langstring><langstring language="it">\xc3\xa8 prole di</langstring></caption></term></term></vdex>'
+        should_be_xml = '<?xml version="1.0" encoding="utf-8" ?>\n<vdex xmlns="http://www.imsglobal.org/xsd/imsvdex_v1p0"><term><termIdentifier>identical</termIdentifier><caption><langstring language="en">is identical with</langstring><langstring language="fr">est identique avec</langstring><langstring language="it">\xc3\xa8 identico con</langstring></caption></term><term><termIdentifier>relative</termIdentifier><caption><langstring language="de">ist verwandt mit</langstring><langstring language="en">is relative of</langstring><langstring language="fr">est parent avec</langstring><langstring language="it">\xc3\xa8 parente di</langstring></caption><term><termIdentifier>child</termIdentifier><caption><langstring language="de">ist Kind von</langstring><langstring language="en">is child of</l
 angstring><langstring language="fr">est enfant de</langstring><langstring language="it">\xc3\xa8 prole di</langstring></caption></term></term></vdex>'
+        obj = objectify.fromstring(should_be_xml)
+        should_be = etree.tostring(obj, encoding='utf-8', standalone=True)
         self.assertEquals(should_be, data)
 
     def testEmptyMatrix(self):

Modified: imsvdex/trunk/imsvdex/vdex.py
==============================================================================
--- imsvdex/trunk/imsvdex/vdex.py	(original)
+++ imsvdex/trunk/imsvdex/vdex.py	Tue May 27 09:47:13 2014
@@ -21,13 +21,9 @@
 from StringIO import StringIO
 
 from xml.parsers.expat import ExpatError
-from elementtreewriter.xmlwriter import XMLWriter
-from _odict import OrderedDict
+from collections import OrderedDict
 
-try:
-    from cElementTree import parse, ElementTree, SubElement, Element
-except ImportError:
-    from elementtree.ElementTree import parse, ElementTree, SubElement, Element
+from lxml import etree
 
 VDEX_FLAT_PROFILE_TYPES = ('thesaurus', 'glossaryOrDictionary', 'flatTokenTerms')
 TRUE_VALUES = ('1', 'true', 'True', 'yes', 'Yes')
@@ -119,7 +115,7 @@
         if isinstance(file, StringTypes):
             file = StringIO(file)
         try:
-            self.tree = parse(file)
+            self.tree = etree.parse(file)
         except (SyntaxError, ExpatError), e:
             raise VDEXError, 'Parse error in vocabulary XML: %s' % e
         try:
@@ -136,10 +132,7 @@
         """
         returns the vocabulary as XML
         """
-        if file is None:
-            file = StringIO()
-        writer = XMLWriter(self.tree)
-        return writer(file)
+        return etree.tostring(self.tree, encoding='utf-8', standalone=True)
 
     def getVocabIdentifier(self):
         """
@@ -477,11 +470,11 @@
 
 
         def addSubElem(parent, elementName, text=None):
-            retval = SubElement(parent, self.vdexTag(elementName))
+            retval = etree.SubElement(parent, self.vdexTag(elementName))
             if text != None:
                 retval.text = text
             return retval
-        root = Element(self.vdexTag('vdex'))
+        root = etree.Element(self.vdexTag('vdex'), nsmap={None: self.vdex_namespace})
         # WARNING!! We do a dirty trick here. When the first elements
         # Want to get their root element, they have a depth of 0
         # They will then ask for parents[0-1]. So it gets the last
@@ -513,6 +506,6 @@
                 for index, translation in filter(lambda (i,x):x,[x for x in enumerate(descriptions)]):
                     langstring = addSubElem(description, 'langstring', translation)
                     langstring.attrib['language'] = languages[index]
-        self.tree = ElementTree(root)
+        self.tree = etree.ElementTree(root)
         self.order_significant = self.isOrderSignificant()
         self.makeTermDict()

Modified: imsvdex/trunk/setup.py
==============================================================================
--- imsvdex/trunk/setup.py	(original)
+++ imsvdex/trunk/setup.py	Tue May 27 09:47:13 2014
@@ -9,6 +9,7 @@
     long_description=open('README.txt').read() + "\n" +
                      open('CHANGES.txt').read(),
     classifiers=[
+          'Programming Language :: Python :: 2.7',
           # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
           'Development Status :: 5 - Production/Stable',
           'Intended Audience :: Developers',
@@ -25,8 +26,5 @@
     include_package_data=True,
     test_suite='imsvdex.tests',
     zip_safe=False,
-    install_requires=[
-        'elementtree>=1.2.6',
-        'elementtreewriter>=1.0',
-    ],
+    install_requires=['lxml',],
 )

------------------------------------------------------------------------------
The best possible search technologies are now affordable for all companies.
Download your FREE open source Enterprise Search Engine today!
Our experts will assist you in its installation for $59/mo, no commitment.
Test it for FREE on our Cloud platform anytime!
http://pubads.g.doubleclick.net/gampad/clk?id=145328191&iu=/4140/ostg.clktrk