commit: c5e2e8c437b0bb06b74cf8a0881508f4e47bf321 Author: Devan Franchini <twitch153 <AT> gentoo <DOT> org> AuthorDate: Wed May 14 03:56:31 2014 +0000 Commit: Devan Franchini <twitch153 <AT> gentoo <DOT> org> CommitDate: Wed May 14 23:46:30 2014 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=c5e2e8c4
Adds unicode string compatibility support Ensures that the necessary strings that need to be unicode, stay unicode in both py2 and py3 when running layman. --- layman/api.py | 20 ++++++++------- layman/db.py | 10 ++++---- layman/dbbase.py | 8 +++--- layman/makeconf.py | 22 ++++++++-------- layman/overlays/overlay.py | 62 ++++++++++++++++++++++++---------------------- layman/remotedb.py | 2 +- layman/utils.py | 4 ++- 7 files changed, 67 insertions(+), 61 deletions(-) diff --git a/layman/api.py b/layman/api.py index 475691b..cbf3f76 100755 --- a/layman/api.py +++ b/layman/api.py @@ -13,6 +13,8 @@ # Brian Dolbec <[email protected]> # +from __future__ import print_function + import os from layman.config import BareConfig @@ -428,21 +430,21 @@ class LaymanAPI(object): >>> b.close() >>> api.get_available() - [u'wrobel', u'wrobel-stable'] - >>> all = api.get_all_info(u'wrobel') + ['wrobel', 'wrobel-stable'] + >>> all = api.get_all_info('wrobel') >>> info = all['wrobel'] >>> info['status'] - u'official' + 'official' >>> info['description'] - u'Test' + 'Test' >>> info['sources'] - [(u'https://overlays.gentoo.org/svn/dev/wrobel', 'Subversion', None)] + [('https://overlays.gentoo.org/svn/dev/wrobel', 'Subversion', None)] - #{u'wrobel': {'status': u'official', - #'owner_name': None, 'description': u'Test', + #{'wrobel': {'status': 'official', + #'owner_name': None, 'description': 'Test', #'src_uris': <generator object source_uris at 0x167c3c0>, - #'owner_email': u'[email protected]', - #'quality': u'experimental', 'name': u'wrobel', 'supported': True, + #'owner_email': '[email protected]', + #'quality': 'experimental', 'name': 'wrobel', 'supported': True, #'src_types': <generator object source_types at 0x167c370>, #'official': True, #'priority': 10, 'feeds': [], 'irc': None, 'homepage': None}} diff --git a/layman/db.py b/layman/db.py index 6530147..ce03e13 100644 --- a/layman/db.py +++ b/layman/db.py @@ -111,11 +111,11 @@ class DB(DbBase): # * Running command "/usr/bin/rsync -rlptDvz --progress --delete --delete-after --timeout=180 --exclude="distfiles/*" --exclude="local/*" --exclude="packages/*" "rsync://gunnarwrobel.de/wrobel-stable/*" "/tmp/file.../wrobel-stable""... # >>> c = DbBase([write, ], dict()) # >>> c.overlays.keys() - # [u'wrobel-stable'] + # ['wrobel-stable'] # >>> m = MakeConf(config, b.overlays) # >>> [i.name for i in m.overlays] #doctest: +ELLIPSIS - # [u'wrobel-stable'] + # ['wrobel-stable'] # >>> os.unlink(write) >>> os.unlink(write2) @@ -195,16 +195,16 @@ class DB(DbBase): # * Running command "/usr/bin/svn co "https://overlays.gentoo.org/svn/dev/wrobel/" "/tmp/file.../wrobel""... # >>> c = DbBase([write, ], dict()) # >>> c.overlays.keys() - # [u'wrobel', u'wrobel-stable'] + # ['wrobel', 'wrobel-stable'] # >>> b.delete(b.select('wrobel')) # >>> c = DbBase([write, ], dict()) # >>> c.overlays.keys() - # [u'wrobel-stable'] + # ['wrobel-stable'] # >>> m = MakeConf(config, b.overlays) # >>> [i.name for i in m.overlays] #doctest: +ELLIPSIS - # [u'wrobel-stable'] + # ['wrobel-stable'] # >>> os.unlink(write) >>> os.unlink(write2) diff --git a/layman/dbbase.py b/layman/dbbase.py index 475ce44..8fa3ba8 100644 --- a/layman/dbbase.py +++ b/layman/dbbase.py @@ -149,10 +149,10 @@ class DbBase(object): >>> config = {'output': output, 'svn_command': '/usr/bin/svn', 'rsync_command':'/usr/bin/rsync'} >>> a = DbBase(config, [here + '/tests/testfiles/global-overlays.xml', ]) >>> a.overlays.keys() - [u'wrobel', u'wrobel-stable'] + ['wrobel', 'wrobel-stable'] >>> list(a.overlays['wrobel-stable'].source_uris()) - [u'rsync://gunnarwrobel.de/wrobel-stable'] + ['rsync://gunnarwrobel.de/wrobel-stable'] ''' try: document = ET.fromstring(text) @@ -214,7 +214,7 @@ class DbBase(object): >>> b.write(write) >>> c = DbBase({"output": Message() }, [write,]) >>> c.overlays.keys() - [u'wrobel-stable'] + ['wrobel-stable'] >>> os.unlink(write) >>> os.rmdir(tmpdir) @@ -245,7 +245,7 @@ class DbBase(object): >>> config = {'output': output, 'svn_command': '/usr/bin/svn', 'rsync_command':'/usr/bin/rsync'} >>> a = DbBase(config, [here + '/tests/testfiles/global-overlays.xml', ]) >>> list(a.select('wrobel-stable').source_uris()) - [u'rsync://gunnarwrobel.de/wrobel-stable'] + ['rsync://gunnarwrobel.de/wrobel-stable'] ''' self.output.debug("DbBase.select(), overlay = %s" % overlay, 5) if not overlay in self.overlays.keys(): diff --git a/layman/makeconf.py b/layman/makeconf.py index 1abe318..52762a2 100644 --- a/layman/makeconf.py +++ b/layman/makeconf.py @@ -50,16 +50,16 @@ class MakeConf: >>> a.path = write >>> a.add(b.overlays['wrobel-stable']) >>> [i.name for i in a.overlays] - [u'wrobel-stable', u'wrobel-stable'] + ['wrobel-stable', 'wrobel-stable'] >>> a.add(b.overlays['wrobel']) >>> [i.name for i in a.overlays] - [u'wrobel', u'wrobel-stable', u'wrobel-stable'] + ['wrobel', 'wrobel-stable', 'wrobel-stable'] >>> a.delete(b.overlays['wrobel-stable']) >>> [i.name for i in a.overlays] - [u'wrobel'] + ['wrobel'] >>> a.add(b.overlays['wrobel-stable']) >>> [i.name for i in a.overlays] - [u'wrobel', u'wrobel-stable'] + ['wrobel', 'wrobel-stable'] >>> a.delete(b.overlays['wrobel']) >>> n_md5 = str(hashlib.md5(open(write).read()).hexdigest()) >>> o_md5 == n_md5 @@ -105,9 +105,9 @@ class MakeConf: >>> config['make_conf'] = write >>> b = MakeConf(config, c.overlays) >>> [i.name for i in b.overlays] - [u'wrobel', u'wrobel-stable'] + ['wrobel', 'wrobel-stable'] >>> b.extra - [u'/usr/local/portage/ebuilds/testing', u'/usr/local/portage/ebuilds/stable', u'/usr/local/portage/kolab2', u'/usr/local/portage/gentoo-webapps-overlay/experimental', u'/usr/local/portage/gentoo-webapps-overlay/production-ready'] + ['/usr/local/portage/ebuilds/testing', '/usr/local/portage/ebuilds/stable', '/usr/local/portage/kolab2', '/usr/local/portage/gentoo-webapps-overlay/experimental', '/usr/local/portage/gentoo-webapps-overlay/production-ready'] >>> os.unlink(write) >>> import shutil @@ -139,7 +139,7 @@ class MakeConf: >>> [i.name for i in b.overlays] [] >>> b.extra - [u'/usr/local/portage/ebuilds/testing', u'/usr/local/portage/ebuilds/stable', u'/usr/local/portage/kolab2', u'/usr/local/portage/gentoo-webapps-overlay/experimental', u'/usr/local/portage/gentoo-webapps-overlay/production-ready'] + ['/usr/local/portage/ebuilds/testing', '/usr/local/portage/ebuilds/stable', '/usr/local/portage/kolab2', '/usr/local/portage/gentoo-webapps-overlay/experimental', '/usr/local/portage/gentoo-webapps-overlay/production-ready'] >>> os.unlink(write) >>> import shutil @@ -164,9 +164,9 @@ class MakeConf: >>> c = DB(config) >>> a = MakeConf(config, c.overlays) >>> [i.name for i in a.overlays] - [u'wrobel-stable'] + ['wrobel-stable'] >>> a.extra - [u'/usr/local/portage/ebuilds/testing', u'/usr/local/portage/ebuilds/stable', u'/usr/local/portage/kolab2', u'/usr/local/portage/gentoo-webapps-overlay/experimental', u'/usr/local/portage/gentoo-webapps-overlay/production-ready'] + ['/usr/local/portage/ebuilds/testing', '/usr/local/portage/ebuilds/stable', '/usr/local/portage/kolab2', '/usr/local/portage/gentoo-webapps-overlay/experimental', '/usr/local/portage/gentoo-webapps-overlay/production-ready'] ''' if os.path.isfile(self.path): self.content() @@ -230,9 +230,9 @@ class MakeConf: >>> config['make_conf'] = write >>> b = MakeConf(config, c.overlays) >>> [i.name for i in b.overlays] - [u'wrobel-stable'] + ['wrobel-stable'] >>> b.extra - [u'/usr/local/portage/ebuilds/testing', u'/usr/local/portage/ebuilds/stable', u'/usr/local/portage/kolab2', u'/usr/local/portage/gentoo-webapps-overlay/experimental', u'/usr/local/portage/gentoo-webapps-overlay/production-ready'] + ['/usr/local/portage/ebuilds/testing', '/usr/local/portage/ebuilds/stable', '/usr/local/portage/kolab2', '/usr/local/portage/gentoo-webapps-overlay/experimental', '/usr/local/portage/gentoo-webapps-overlay/production-ready'] >>> os.unlink(write) >>> import shutil diff --git a/layman/overlays/overlay.py b/layman/overlays/overlay.py index 0c2d042..174518b 100755 --- a/layman/overlays/overlay.py +++ b/layman/overlays/overlay.py @@ -20,6 +20,8 @@ # ''' Basic overlay class.''' +from __future__ import unicode_literals + __version__ = "0.2" #=============================================================================== @@ -85,15 +87,15 @@ class Overlay(object): >>> output = Message() >>> a = Overlay({'output': output}, overlays[0]) >>> a.name - u'wrobel' + 'wrobel' >>> a.is_official() True >>> list(a.source_uris()) - [u'https://overlays.gentoo.org/svn/dev/wrobel'] + ['https://overlays.gentoo.org/svn/dev/wrobel'] >>> a.owner_email - u'[email protected]' + '[email protected]' >>> a.description - u'Test' + 'Test' >>> a.priority 10 >>> b = Overlay({'output': output}, overlays[1]) @@ -208,7 +210,7 @@ class Overlay(object): else: self.status = None - self.quality = u'experimental' + self.quality = 'experimental' if 'quality' in xml.attrib: if xml.attrib['quality'] in set(QUALITY_LEVELS): self.quality = encode(xml.attrib['quality']) @@ -304,7 +306,7 @@ class Overlay(object): else: self.status = None - self.quality = u'experimental' + self.quality = 'experimental' if len(overlay['quality']): if overlay['quality'] in set(QUALITY_LEVELS): self.quality = encode(overlay['quality']) @@ -453,55 +455,55 @@ class Overlay(object): <BLANKLINE> ''' - result = u'' + result = '' - result += self.name + u'\n' + (len(self.name) * u'~') + result += self.name + '\n' + (len(self.name) * '~') if len(self.sources) == 1: - result += u'\nSource : ' + self.sources[0].src + result += '\nSource : ' + self.sources[0].src else: - result += u'\nSources:' + result += '\nSources:' for i, v in enumerate(self.sources): result += '\n %d. %s' % (i + 1, v.src) result += '\n' if self.owner_name != None: - result += u'\nContact : %s <%s>' \ + result += '\nContact : %s <%s>' \ % (self.owner_name, self.owner_email) else: - result += u'\nContact : ' + self.owner_email + result += '\nContact : ' + self.owner_email if len(self.sources) == 1: - result += u'\nType : ' + self.sources[0].type + result += '\nType : ' + self.sources[0].type else: - result += u'\nType : ' + '/'.join( + result += '\nType : ' + '/'.join( sorted(set(e.type for e in self.sources))) - result += u'; Priority: ' + str(self.priority) + u'\n' - result += u'Quality : ' + self.quality + u'\n' + result += '; Priority: ' + str(self.priority) + '\n' + result += 'Quality : ' + self.quality + '\n' description = self.description - description = re.compile(u' +').sub(u' ', description) - description = re.compile(u'\n ').sub(u'\n', description) - result += u'\nDescription:' - result += u'\n '.join((u'\n' + description).split(u'\n')) - result += u'\n' + description = re.compile(' +').sub(' ', description) + description = re.compile('\n ').sub('\n', description) + result += '\nDescription:' + result += '\n '.join(('\n' + description).split('\n')) + result += '\n' if self.homepage != None: link = self.homepage - link = re.compile(u' +').sub(u' ', link) - link = re.compile(u'\n ').sub(u'\n', link) - result += u'\nLink:' - result += u'\n '.join((u'\n' + link).split(u'\n')) - result += u'\n' + link = re.compile(' +').sub(' ', link) + link = re.compile('\n ').sub('\n', link) + result += '\nLink:' + result += '\n '.join(('\n' + link).split('\n')) + result += '\n' if self.irc != None: - result += u'\nIRC : ' + self.irc + u'\n' + result += '\nIRC : ' + self.irc + '\n' if len(self.feeds): - result += u'\n%s:' % ((len(self.feeds) == 1) and "Feed" or "Feeds") + result += '\n%s:' % ((len(self.feeds) == 1) and "Feed" or "Feeds") for i in self.feeds: - result += u'\n %s' % i - result += u'\n' + result += '\n %s' % i + result += '\n' return encoder(result, self._encoding_) diff --git a/layman/remotedb.py b/layman/remotedb.py index 38d9fa8..b010e51 100644 --- a/layman/remotedb.py +++ b/layman/remotedb.py @@ -160,7 +160,7 @@ class RemoteDB(DbBase): >>> os.unlink(a.filepath(config['overlays'])+'.xml') >>> a.overlays.keys() - [u'wrobel', u'wrobel-stable'] + ['wrobel', 'wrobel-stable'] >>> import shutil >>> shutil.rmtree(tmpdir) diff --git a/layman/utils.py b/layman/utils.py index f174215..efb3231 100644 --- a/layman/utils.py +++ b/layman/utils.py @@ -21,6 +21,8 @@ '''Utility functions to deal with xml nodes. ''' +from __future__ import unicode_literals + __version__ = '$Id: utils.py 236 2006-09-05 20:39:37Z wrobel $' #=============================================================================== @@ -197,7 +199,7 @@ def create_overlay_dict(**kwargs): 'feeds': [], 'sources': [('','','')], 'priority': 50, - 'quality': u'experimental', + 'quality': 'experimental', 'status': '', 'official': False, 'supported': False,
