commit:     ea812ff32370c426fb9c266b8824ba9338264c7c
Author:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
AuthorDate: Wed May 14 21:10:50 2014 +0000
Commit:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
CommitDate: Wed May 14 21:10:50 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=ea812ff3

layman/dbbase.py: Adds py3 unicode compatibility to ElementTree

When writing the database to installed.xml, ElementTree needs to have
an encoding type specified or run time errors will occur. To ensure
compatibility between py2/py3 a check has been made to see which
python version is running and to set the _unicode variable
accordingly.

---
 layman/dbbase.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/layman/dbbase.py b/layman/dbbase.py
index ff99965..3632a57 100644
--- a/layman/dbbase.py
+++ b/layman/dbbase.py
@@ -37,6 +37,14 @@ from   layman.utils              import indent
 from   layman.compatibility      import fileopen
 from   layman.overlays.overlay   import Overlay
 
+#py3.2
+if sys.hexversion >= 0x30200f0:
+    _unicode = 'unicode'
+else:
+    _unicode = 'UTF-8'
+
+
+
 
#===============================================================================
 #
 # Class UnknownOverlayException
@@ -220,16 +228,13 @@ class DbBase(object):
         >>> os.rmdir(tmpdir)
         '''
 
-        tree = ET.Element('repositories', version="1.0")
+        tree = ET.Element('repositories', version="1.0", encoding="unicode")
         tree[:] = [e.to_xml() for e in list(self.overlays.values())]
         indent(tree)
         tree = ET.ElementTree(tree)
         try:
             f = fileopen(path, 'w')
-            f.write("""\
-<?xml version="1.0" encoding="UTF-8"?>
-""")
-            tree.write(f, encoding='utf-8')
+            tree.write(f, encoding=_unicode)
             f.close()
         except Exception as error:
             raise Exception('Failed to write to local overlays file: '

Reply via email to