File tree Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -56,10 +56,13 @@ def from_api_repr(cls, api_repr):
56
56
google.cloud.biquery.schema.SchemaField:
57
57
The ``SchemaField`` object.
58
58
"""
59
+ # Handle optional properties with default values
60
+ mode = api_repr .get ('mode' , 'NULLABLE' )
61
+ fields = api_repr .get ('fields' , ())
59
62
return cls (
60
63
field_type = api_repr ['type' ].upper (),
61
- fields = [cls .from_api_repr (f ) for f in api_repr . get ( ' fields' , ()) ],
62
- mode = api_repr [ ' mode' ] .upper (),
64
+ fields = [cls .from_api_repr (f ) for f in fields ],
65
+ mode = mode .upper (),
63
66
name = api_repr ['name' ],
64
67
)
65
68
Original file line number Diff line number Diff line change @@ -102,6 +102,16 @@ def test_from_api_repr(self):
102
102
self .assertEqual (field .fields [0 ].field_type , 'INTEGER' )
103
103
self .assertEqual (field .fields [0 ].mode , 'NULLABLE' )
104
104
105
+ def test_from_api_repr_defaults (self ):
106
+ field = self ._get_target_class ().from_api_repr ({
107
+ 'name' : 'foo' ,
108
+ 'type' : 'record' ,
109
+ })
110
+ self .assertEqual (field .name , 'foo' )
111
+ self .assertEqual (field .field_type , 'RECORD' )
112
+ self .assertEqual (field .mode , 'NULLABLE' )
113
+ self .assertEqual (len (field .fields ), 0 )
114
+
105
115
def test_name_property (self ):
106
116
name = 'lemon-ness'
107
117
schema_field = self ._make_one (name , 'INTEGER' )
You can’t perform that action at this time.
0 commit comments