3030import jsonpatch
3131import jsonpointer
3232
33- from .util import WalletFileException , profiler , sticky_property , MyEncoder
33+ from .util import WalletFileException , profiler , sticky_property
3434from .logging import Logger
35- from .stored_dict import _FLEX_KEY , BaseDB , _convert_dict_key , _convert_dict_value
35+ from .stored_dict import _FLEX_KEY , BaseDB
3636from .storage import FileStorage
3737
3838
5151setattr (jsonpatch .JsonPatchException , '__suppress_context__' , sticky_property (True ))
5252
5353
54+
55+
5456def key_path (path : Sequence [_FLEX_KEY ], key : _FLEX_KEY ) -> str :
5557 def to_str (x : _FLEX_KEY ) -> str :
5658 assert isinstance (x , _FLEX_KEY ), repr (x )
@@ -66,6 +68,7 @@ def to_str(x: _FLEX_KEY) -> str:
6668 return '/' .join (items )
6769
6870
71+
6972def modifier (func ):
7073 def wrapper (self , * args , ** kwargs ):
7174 with self .lock :
@@ -89,14 +92,10 @@ def __init__(
8992 * ,
9093 allow_partial_writes = True ,
9194 init_db = True ,
92- encoder = MyEncoder ,
93- upgrader = None ,
9495 ):
9596 BaseDB .__init__ (self , path )
9697 self ._is_closed = True
9798 self .lock = threading .RLock ()
98- self .encoder = encoder
99- self .upgrader = upgrader
10099 self .pending_changes = [] # type: List[str]
101100 self ._modified = False
102101 if self .path :
@@ -107,21 +106,17 @@ def __init__(
107106 self .init_db ()
108107 else :
109108 self .storage = None
110- self .set_data ( '{}' )
109+ self .json_data = {}
111110 self ._is_closed = False
112111
113112 def set_data (self , json_str ):
114- data = self .load_data (json_str )
115- if self .upgrader :
116- data , was_upgraded = self .upgrader (data )
117- self ._modified |= was_upgraded
118- self .json_data = self ._convert_dict ([], data )
113+ self .json_data = self .load_data (json_str )
119114
120115 def init_db (self ):
121116 if self .storage .is_encrypted ():
122117 assert self .storage .is_past_initial_decryption ()
123118 json_str = self .storage .read ()
124- self .set_data (json_str )
119+ self .json_data = self . load_data (json_str )
125120 # write file in case there was a db upgrade
126121 self .write_and_force_consolidation ()
127122 self ._is_closed = False
@@ -176,7 +171,7 @@ def contains(self, path, key):
176171
177172 def replace (self , path , key , value ):
178173 # called by setattr
179- self .db_replace (path , key , value )
174+ self .put (path , key , value )
180175
181176 @modifier
182177 def put (self , path , key , value ):
@@ -298,7 +293,7 @@ def modified(self):
298293
299294 @locked
300295 def add_patch (self , patch ):
301- self .pending_changes .append (json .dumps (patch , cls = self . encoder ))
296+ self .pending_changes .append (json .dumps (patch ))
302297 self .set_modified (True )
303298
304299 def db_add (self , path , key : _FLEX_KEY , value ) -> None :
@@ -322,29 +317,8 @@ def dump(self, *, human_readable: bool = True) -> str:
322317 self .json_data ,
323318 indent = 4 if human_readable else None ,
324319 sort_keys = bool (human_readable ),
325- cls = self .encoder ,
326320 )
327321
328- def _convert_dict_key (self , path : List [str ], key : str ) -> _FLEX_KEY :
329- return _convert_dict_key (path , key )
330-
331- def _convert_dict_value (self , path : List [str ], v ) -> Any :
332- v = _convert_dict_value (path , v )
333- if isinstance (v , dict ):
334- v = self ._convert_dict (path , v )
335- return v
336-
337- def _convert_dict (self , path : List [str ], data : dict ):
338- # recursively convert json dict to StoredDict
339- assert all (isinstance (x , str ) for x in path ), repr (path )
340- d = {}
341- for k , v in list (data .items ()):
342- child_path = path + [k ]
343- k = self ._convert_dict_key (path , k )
344- v = self ._convert_dict_value (child_path , v )
345- d [k ] = v
346- return d
347-
348322 @locked
349323 def write (self ):
350324 if not self .storage :
0 commit comments