File tree Expand file tree Collapse file tree 2 files changed +26
-2
lines changed Expand file tree Collapse file tree 2 files changed +26
-2
lines changed Original file line number Diff line number Diff line change @@ -174,14 +174,19 @@ def __init__(self, stream):
174174        super ().__init__ (stream )
175175        self .finish_char  =  "}" 
176176        self .start_char  =  "{" 
177+         self .active_child_key  =  None 
177178
178179    def  __getitem__ (self , key ):
180+         if  self .active_child  and  self .active_child_key  ==  key :
181+             return  self .active_child 
182+ 
179183        self .has_read  =  True 
180184
181185        if  self .active_child :
182186            self .active_child .finish ()
183187            self .done  =  self .data .fast_forward ("," )
184188            self .active_child  =  None 
189+             self .active_child_key  =  None 
185190        if  self .done :
186191            raise  KeyError (key )
187192
@@ -196,6 +201,7 @@ def __getitem__(self, key):
196201                    self .done  =  True 
197202                if  isinstance (next_value , Transient ):
198203                    self .active_child  =  next_value 
204+                     self .active_child_key  =  key 
199205                return  next_value 
200206            self .done  =  self .data .fast_forward ("," )
201207        raise  KeyError (key )
Original file line number Diff line number Diff line change @@ -481,8 +481,8 @@ def test_as_object_that_is_partially_read_raises(complex_dict):
481481        dict_1 .as_object ()
482482
483483
484- def  test_as_object_grabbing_multiple_subscriptable_levels_twice_raises (complex_dict ):
485-     """Test loading a complex dict and grabbing multiple subscriptable levels twice raises .""" 
484+ def  test_as_object_grabbing_multiple_subscriptable_levels_twice (complex_dict ):
485+     """Test loading a complex dict and grabbing multiple subscriptable levels twice.""" 
486486
487487    assert  json .loads (complex_dict )
488488
@@ -491,5 +491,23 @@ def test_as_object_grabbing_multiple_subscriptable_levels_twice_raises(complex_d
491491    list_1  =  stream ["list_1" ]
492492    dict_1  =  next (list_1 )
493493    assert  dict_1 ["sub_dict" ]["sub_dict_id" ] ==  1.1 
494+     assert  dict_1 ["sub_dict" ]["sub_dict_name" ] ==  "one point one" 
495+ 
496+ 
497+ def  test_as_object_grabbing_multiple_subscriptable_levels_again_after_passed_raises (
498+     complex_dict ,
499+ ):
500+     """ 
501+     Test loading a complex dict and grabbing multiple subscriptable levels after passing it raises. 
502+     """ 
503+ 
504+     assert  json .loads (complex_dict )
505+ 
506+     stream  =  adafruit_json_stream .load (BytesChunkIO (complex_dict .encode ()))
507+ 
508+     list_1  =  stream ["list_1" ]
509+     dict_1  =  next (list_1 )
510+     assert  dict_1 ["sub_dict" ]["sub_dict_id" ] ==  1.1 
511+     assert  next (dict_1 ["sub_list" ]) ==  "a" 
494512    with  pytest .raises (KeyError , match = "sub_dict" ):
495513        dict_1 ["sub_dict" ]["sub_dict_name" ]
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments