1-
2-
31"""
42FlatDict is a dict object that allows for single level, delimited
53key/value pair mapping of nested dictionaries.
119
1210Code slightly adapted for linting purposes.
1311"""
12+
1413try :
1514 from collections .abc import MutableMapping
1615except ImportError : # pragma: nocover
@@ -27,9 +26,10 @@ class FlatDict(MutableMapping):
2726 or by calling :meth:`FlatDict.set_delimiter`.
2827
2928 """
29+
3030 _COERCE = dict
3131
32- def __init__ (self , value = None , delimiter = ':' , dict_class = dict ):
32+ def __init__ (self , value = None , delimiter = ":" , dict_class = dict ):
3333 super (FlatDict , self ).__init__ ()
3434 self ._values = dict_class ()
3535 self ._delimiter = delimiter
@@ -136,8 +136,7 @@ def __repr__(self):
136136 :rtype: str
137137
138138 """
139- return '<{} id={} {}>"' .format (self .__class__ .__name__ , id (self ),
140- str (self ))
139+ return '<{} id={} {}>"' .format (self .__class__ .__name__ , id (self ), str (self ))
141140
142141 def __setitem__ (self , key , value ):
143142 """Assign the value to the key, dynamically building nested
@@ -156,8 +155,7 @@ def __setitem__(self, key, value):
156155 self ._values [pk ] = self .__class__ ({ck : value }, self ._delimiter )
157156 return
158157 elif not isinstance (self ._values [pk ], FlatDict ):
159- raise TypeError (
160- 'Assignment to invalid type for key {}' .format (pk ))
158+ raise TypeError ("Assignment to invalid type for key {}" .format (pk ))
161159 self ._values [pk ][ck ] = value
162160 else :
163161 self ._values [key ] = value
@@ -168,8 +166,7 @@ def __str__(self):
168166 :rtype: str
169167
170168 """
171- return '{{{}}}' .format (', ' .join (
172- ['{!r}: {!r}' .format (k , self [k ]) for k in self .keys ()]))
169+ return "{{{}}}" .format (", " .join (["{!r}: {!r}" .format (k , self [k ]) for k in self .keys ()]))
173170
174171 def as_dict (self ):
175172 """Return the :class:`~flatdict.FlatDict` as a :class:`dict`
@@ -290,9 +287,7 @@ def keys(self):
290287
291288 for key , value in self ._values .items ():
292289 if isinstance (value , (FlatDict , dict )):
293- nested = [
294- self ._delimiter .join ([str (key ), str (k )])
295- for k in value .keys ()]
290+ nested = [self ._delimiter .join ([str (key ), str (k )]) for k in value .keys ()]
296291 keys += nested if nested else [key ]
297292 else :
298293 keys .append (key )
@@ -340,8 +335,7 @@ def set_delimiter(self, delimiter):
340335 """
341336 for key in self .keys ():
342337 if delimiter in key :
343- raise ValueError ('Key {!r} collides with delimiter {!r}' , key ,
344- delimiter )
338+ raise ValueError ("Key {!r} collides with delimiter {!r}" , key , delimiter )
345339 self ._delimiter = delimiter
346340 for key in self ._values .keys ():
347341 if isinstance (self ._values [key ], FlatDict ):
@@ -382,14 +376,15 @@ def _has_delimiter(self, key):
382376
383377class FlatterDict (FlatDict ):
384378 """Like :class:`~flatdict.FlatDict` but also coerces lists and sets
385- to child-dict instances with the offset as the key. Alternative to
386- the implementation added in v1.2 of FlatDict.
379+ to child-dict instances with the offset as the key. Alternative to
380+ the implementation added in v1.2 of FlatDict.
387381
388382 """
383+
389384 _COERCE = list , tuple , set , dict , FlatDict
390385 _ARRAYS = list , set , tuple
391386
392- def __init__ (self , value = None , delimiter = ':' , dict_class = dict ):
387+ def __init__ (self , value = None , delimiter = ":" , dict_class = dict ):
393388 self .original_type = type (value )
394389 if self .original_type in self ._ARRAYS :
395390 value = {str (i ): v for i , v in enumerate (value )}
@@ -404,28 +399,25 @@ def __setitem__(self, key, value):
404399 :raises: TypeError
405400
406401 """
407- if isinstance (value , self ._COERCE ) and \
408- not isinstance (value , FlatterDict ):
402+ if isinstance (value , self ._COERCE ) and not isinstance (value , FlatterDict ):
409403 value = self .__class__ (value , self ._delimiter )
410404 if self ._has_delimiter (key ):
411405 pk , ck = key .split (self ._delimiter , 1 )
412406 if pk not in self ._values :
413407 self ._values [pk ] = self .__class__ ({ck : value }, self ._delimiter )
414408 return
415- if getattr (self ._values [pk ], 'original_type' ,
416- None ) in self ._ARRAYS :
409+ if getattr (self ._values [pk ], "original_type" , None ) in self ._ARRAYS :
417410 try :
418411 k , cck = ck .split (self ._delimiter , 1 )
419412 int (k )
420413 except ValueError :
421414 raise TypeError (
422- ' Assignment to invalid type for key {}{}{}' .format (
423- pk , self . _delimiter , ck ) )
415+ " Assignment to invalid type for key {}{}{}" .format (pk , self . _delimiter , ck )
416+ )
424417 self ._values [pk ][k ][cck ] = value
425418 return
426419 elif not isinstance (self ._values [pk ], FlatterDict ):
427- raise TypeError (
428- 'Assignment to invalid type for key {}' .format (pk ))
420+ raise TypeError ("Assignment to invalid type for key {}" .format (pk ))
429421 self ._values [pk ][ck ] = value
430422 else :
431423 self ._values [key ] = value
0 commit comments