cache is always a dictionary in memory
[tiramisu.git] / tiramisu / storage / sqlite3 / sqlite3db.py
1 # -*- coding: utf-8 -*-
2 "sqlite3 cache"
3 # Copyright (C) 2013 Team tiramisu (see AUTHORS for all contributors)
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18 #
19 # ____________________________________________________________
20 from cPickle import loads, dumps
21 from ..cache import Cache
22
23
24 class Sqlite3DB(Cache):
25     __slots__ = tuple()
26     def _sqlite_decode_path(self, path):
27         if path == '_none':
28             return None
29         else:
30             return path
31
32     def _sqlite_encode_path(self, path):
33         if path is None:
34             return '_none'
35         else:
36             return path
37
38     def _sqlite_decode(self, value):
39         return loads(value)
40
41     def _sqlite_encode(self, value):
42         if isinstance(value, list):
43             value = list(value)
44         return dumps(value)