Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13911 - main/trunk/pym/portage/dbapi
Date: Tue, 04 Aug 2009 23:08:00
Message-Id: E1MYT6s-0007I6-45@stork.gentoo.org
1 Author: zmedico
2 Date: 2009-08-04 23:07:57 +0000 (Tue, 04 Aug 2009)
3 New Revision: 13911
4
5 Modified:
6 main/trunk/pym/portage/dbapi/bintree.py
7 Log:
8 Fix bindbapi.aux_get and aux_update to work with py3k/unicode.
9
10
11 Modified: main/trunk/pym/portage/dbapi/bintree.py
12 ===================================================================
13 --- main/trunk/pym/portage/dbapi/bintree.py 2009-08-04 22:45:47 UTC (rev 13910)
14 +++ main/trunk/pym/portage/dbapi/bintree.py 2009-08-04 23:07:57 UTC (rev 13911)
15 @@ -24,6 +24,7 @@
16 import codecs
17 import os, errno, stat
18 import re
19 +import sys
20 from itertools import chain, izip
21
22 class bindbapi(fakedbapi):
23 @@ -66,7 +67,12 @@
24 tbz2_path = self.bintree.getname(mycpv)
25 if not os.path.exists(tbz2_path):
26 raise KeyError(mycpv)
27 - getitem = portage.xpak.tbz2(tbz2_path).getfile
28 + tbz2 = portage.xpak.tbz2(tbz2_path)
29 + def getitem(k):
30 + v = tbz2.getfile(k)
31 + if v is not None and not isinstance(v, unicode):
32 + v = unicode(v, encoding='utf_8', errors='replace')
33 + return v
34 else:
35 getitem = self.bintree._remotepkgs[mycpv].get
36 mydata = {}
37 @@ -79,15 +85,16 @@
38 # or the tbz2 is corrupt.
39 if myval:
40 mydata[x] = " ".join(myval.split())
41 - if "EAPI" in mykeys:
42 - if not mydata.setdefault("EAPI", "0"):
43 - mydata["EAPI"] = "0"
44 +
45 + if not mydata.setdefault('EAPI', u'0'):
46 + mydata['EAPI'] = u'0'
47 +
48 if cache_me:
49 aux_cache = self._aux_cache_slot_dict()
50 for x in self._aux_cache_keys:
51 - aux_cache[x] = mydata.get(x, "")
52 + aux_cache[x] = mydata.get(x, u'')
53 self._aux_cache[mycpv] = aux_cache
54 - return [mydata.get(x, "") for x in wants]
55 + return [mydata.get(x, u'') for x in wants]
56
57 def aux_update(self, cpv, values):
58 if not self.bintree.populated:
59 @@ -97,7 +104,23 @@
60 raise KeyError(cpv)
61 mytbz2 = portage.xpak.tbz2(tbz2path)
62 mydata = mytbz2.get_data()
63 - mydata.update(values)
64 +
65 + if sys.hexversion < 0x3000000:
66 + for k, v in values.iteritems():
67 + if isinstance(k, unicode):
68 + k = k.encode('utf_8', 'replace')
69 + if isinstance(v, unicode):
70 + v = v.encode('utf_8', 'replace')
71 + mydata[k] = v
72 +
73 + else:
74 + for k, v in values.iteritems():
75 + if isinstance(k, str):
76 + k = k.encode('utf_8', 'replace')
77 + if isinstance(v, str):
78 + v = v.encode('utf_8', 'replace')
79 + mydata[k] = v
80 +
81 for k, v in mydata.items():
82 if not v:
83 del mydata[k]