| # 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() |