File tree Expand file tree Collapse file tree 2 files changed +12
-9
lines changed
Expand file tree Collapse file tree 2 files changed +12
-9
lines changed Original file line number Diff line number Diff line change @@ -59,18 +59,20 @@ def to_dict(self):
5959
6060
6161def dict_merge (dct1 , dct2 ):
62- """Recursively merges dct2 into dct1, ideal for merging objectFilter together.
62+ """Recursively merges dct2 and dct1, ideal for merging objectFilter together.
6363
64- :param dct1: dict onto which the merge is executed
65- :param dct2: dct merged into dct
66- :return: None
64+ :param dct1: A dictionary
65+ :param dct2: A dictionary
66+ :return: dct1 + dct2
6767 """
6868
69+ dct = dct1 .copy ()
6970 for k , v in dct2 .items ():
7071 if (k in dct1 and isinstance (dct1 [k ], dict ) and isinstance (dct2 [k ], collections .Mapping )):
71- dict_merge (dct1 [k ], dct2 [k ])
72+ dct [ k ] = dict_merge (dct1 [k ], dct2 [k ])
7273 else :
73- dct1 [k ] = dct2 [k ]
74+ dct [k ] = dct2 [k ]
75+ return dct
7476
7577
7678def query_filter (query ):
Original file line number Diff line number Diff line change @@ -82,10 +82,11 @@ def test_timezone(self):
8282 def test_dict_merge (self ):
8383 filter1 = {"virtualGuests" :{"hostname" :{"operation" :"etst" }}}
8484 filter2 = {"virtualGuests" :{"id" :{"operation" :"orderBy" ,"options" :[{"name" :"sort" ,"value" :["DESC" ]}]}}}
85- SoftLayer .utils .dict_merge (filter1 , filter2 )
85+ result = SoftLayer .utils .dict_merge (filter1 , filter2 )
8686
87- self .assertEqual (filter1 ['virtualGuests' ]['id' ]['operation' ], 'orderBy' )
88- self .assertEqual (filter1 ['virtualGuests' ]['hostname' ]['operation' ], 'etst' )
87+ self .assertEqual (result ['virtualGuests' ]['id' ]['operation' ], 'orderBy' )
88+ self .assertNotIn ('id' , filter1 ['virtualGuests' ])
89+ self .assertEqual (result ['virtualGuests' ]['hostname' ]['operation' ], 'etst' )
8990
9091
9192
You can’t perform that action at this time.
0 commit comments