@@ -50,21 +50,20 @@ def test_list_of_dicts(self) -> None:
5050 ("sources[0].record_id" , "w123" ),
5151 ]
5252
53- def test_skip_bbox_at_top_level (self ) -> None :
54- """Skip bbox field at top level ."""
53+ def test_bbox_flattened_at_top_level (self ) -> None :
54+ """Bbox fields are flattened like any other nested dict ."""
5555 raw = {
5656 "id" : "123" ,
5757 "bbox" : {"xmin" : - 176.6 , "xmax" : - 176.64 },
5858 "version" : 1 ,
5959 }
6060 result = flatten_example (raw )
61- assert result == [("id" , "123" ), ("version" , 1 )]
62-
63- def test_nested_bbox_not_skipped (self ) -> None :
64- """Nested bbox fields are not skipped."""
65- raw = {"outer" : {"bbox" : {"xmin" : 1.0 }}}
66- result = flatten_example (raw )
67- assert result == [("outer.bbox.xmin" , 1.0 )]
61+ assert result == [
62+ ("id" , "123" ),
63+ ("bbox.xmin" , - 176.6 ),
64+ ("bbox.xmax" , - 176.64 ),
65+ ("version" , 1 ),
66+ ]
6867
6968 def test_plain_list_kept_as_value (self ) -> None :
7069 """Plain lists (non-dict items) are kept as values."""
@@ -390,7 +389,7 @@ class MockModel(BaseModel):
390389 names : dict [str , object ]
391390 sources : list [dict [str , object ]]
392391
393- field_names = ["id" , "names" , "sources" , "version" ]
392+ field_names = ["id" , "bbox" , " names" , "sources" , "version" ]
394393 result = load_examples (MockModel , "Building" , field_names )
395394
396395 assert len (result ) == 1
@@ -399,6 +398,8 @@ class MockModel(BaseModel):
399398
400399 assert record .rows == [
401400 ("id" , "123" ),
401+ ("bbox.xmin" , 1.0 ),
402+ ("bbox.xmax" , 2.0 ),
402403 ("names.primary" , "Tower" ),
403404 ("sources[0].dataset" , "OSM" ),
404405 ("sources[0].record_id" , "w456" ),
0 commit comments