diff options
author | Zac Medico <zmedico@gentoo.org> | 2013-01-09 06:38:16 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2013-01-09 09:09:44 -0800 |
commit | 12c795d81251b03f3d33d02696dc8db1299dee78 (patch) | |
tree | 9e3a3983bb2fb65064f5b1a056ac4c36280a9e5d /pym/portage/util/_ShelveUnicodeWrapper.py | |
parent | 97e8df7eaa171d68da6b3e111c419e2a16dfaf4c (diff) | |
download | portage-12c795d81251b03f3d33d02696dc8db1299dee78.tar.gz portage-12c795d81251b03f3d33d02696dc8db1299dee78.tar.bz2 portage-12c795d81251b03f3d33d02696dc8db1299dee78.zip |
Add emirrordist, a tool for mirroring distfiles.
Special thanks to Brian Harring, author of the mirror-dist program from
which emirrordist is derived.
Diffstat (limited to 'pym/portage/util/_ShelveUnicodeWrapper.py')
-rw-r--r-- | pym/portage/util/_ShelveUnicodeWrapper.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/pym/portage/util/_ShelveUnicodeWrapper.py b/pym/portage/util/_ShelveUnicodeWrapper.py new file mode 100644 index 000000000..adbd5199f --- /dev/null +++ b/pym/portage/util/_ShelveUnicodeWrapper.py @@ -0,0 +1,45 @@ +# Copyright 2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +class ShelveUnicodeWrapper(object): + """ + Convert unicode to str and back again, since python-2.x shelve + module doesn't support unicode. + """ + def __init__(self, shelve_instance): + self._shelve = shelve_instance + + def _encode(self, s): + if isinstance(s, unicode): + s = s.encode('utf_8') + return s + + def __len__(self): + return len(self._shelve) + + def __contains__(self, k): + return self._encode(k) in self._shelve + + def __iter__(self): + return self._shelve.__iter__() + + def items(self): + return self._shelve.iteritems() + + def __setitem__(self, k, v): + self._shelve[self._encode(k)] = self._encode(v) + + def __getitem__(self, k): + return self._shelve[self._encode(k)] + + def __delitem__(self, k): + del self._shelve[self._encode(k)] + + def get(self, k, *args): + return self._shelve.get(self._encode(k), *args) + + def close(self): + self._shelve.close() + + def clear(self): + self._shelve.clear() |