1717
1818
1919class TransformDict (MutableMapping ):
20- ''' Dictionary that calls a transformation function when looking
20+ """ Dictionary that calls a transformation function when looking
2121 up keys, but preserves the original keys.
2222
2323 >>> d = TransformDict(str.lower)
@@ -26,18 +26,18 @@ class TransformDict(MutableMapping):
2626 True
2727 >>> set(d.keys())
2828 {'Foo'}
29- '''
29+ """
3030
3131 __slots__ = ('_transform' , '_original' , '_data' )
3232
3333 def __init__ (self , transform , init_dict = None , ** kwargs ):
34- ''' Create a new TransformDict with the given *transform* function.
34+ """ Create a new TransformDict with the given *transform* function.
3535 *init_dict* and *kwargs* are optional initializers, as in the
3636 dict constructor.
37- '''
37+ """
3838 if not callable (transform ):
39- msg = 'expected a callable, got %r'
40- raise TypeError ( msg % transform .__class__ )
39+ raise TypeError (
40+ f'expected a callable, got { transform .__class__ !r } ' )
4141 self ._transform = transform
4242 # transformed => original
4343 self ._original = {}
@@ -48,15 +48,15 @@ def __init__(self, transform, init_dict=None, **kwargs):
4848 self .update (kwargs )
4949
5050 def getitem (self , key ):
51- ' D.getitem(key) -> (stored key, value)'
51+ """ D.getitem(key) -> (stored key, value)"""
5252 transformed = self ._transform (key )
5353 original = self ._original [transformed ]
5454 value = self ._data [transformed ]
5555 return original , value
5656
5757 @property
5858 def transform_func (self ):
59- "This TransformDict's transformation function"
59+ """ This TransformDict's transformation function"" "
6060 return self ._transform
6161
6262 # Minimum set of methods required for MutableMapping
@@ -83,22 +83,22 @@ def __delitem__(self, key):
8383 # Methods overridden to mitigate the performance overhead.
8484
8585 def clear (self ):
86- ' D.clear() -> None. Remove all items from D.'
86+ """ D.clear() -> None. Remove all items from D."""
8787 self ._data .clear ()
8888 self ._original .clear ()
8989
9090 def __contains__ (self , key ):
9191 return self ._transform (key ) in self ._data
9292
9393 def get (self , key , default = None ):
94- ' D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.'
94+ """ D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None."""
9595 return self ._data .get (self ._transform (key ), default )
9696
9797 def pop (self , key , default = _sentinel ):
98- ''' D.pop(k[,d]) -> v, remove key and return corresponding value.
98+ """ D.pop(k[,d]) -> v, remove key and return corresponding value.
9999 If key is not found, d is returned if given, otherwise
100100 KeyError is raised.
101- '''
101+ """
102102 transformed = self ._transform (key )
103103 if default is _sentinel :
104104 del self ._original [transformed ]
@@ -108,16 +108,16 @@ def pop(self, key, default=_sentinel):
108108 return self ._data .pop (transformed , default )
109109
110110 def popitem (self ):
111- ''' D.popitem() -> (k, v), remove and return some (key, value) pair
111+ """ D.popitem() -> (k, v), remove and return some (key, value) pair
112112 as a 2-tuple; but raise KeyError if D is empty.
113- '''
113+ """
114114 transformed , value = self ._data .popitem ()
115115 return self ._original .pop (transformed ), value
116116
117117 # Other methods
118118
119119 def copy (self ):
120- ' D.copy() -> a shallow copy of D'
120+ """ D.copy() -> a shallow copy of D"""
121121 other = self .__class__ (self ._transform )
122122 other ._original = self ._original .copy ()
123123 other ._data = self ._data .copy ()
@@ -137,5 +137,4 @@ def __repr__(self):
137137 except TypeError :
138138 # Some keys are unhashable, fall back on .items()
139139 equiv = list (self .items ())
140- return '%s(%r, %s)' % (self .__class__ .__name__ ,
141- self ._transform , repr (equiv ))
140+ return f'{ self .__class__ .__name__ } ({ self ._transform !r} , { equiv !r} )'
0 commit comments