commit:     dfbbf55260e78477d8ee5f6843f4f055d60c5433
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 23:47:43 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=dfbbf552

dbbase.py: Adds 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