@@ -135,9 +135,9 @@ def _build_ontology(self):
135135 f for f in self .fields if f .reserved
136136 ]
137137 self .reserved_by_id = self ._make_id_index (self .reserved_fields )
138- self .reserved_by_name : Dict [
139- str ,
140- DataRowMetadataSchema ] = self . _make_name_index ( self .reserved_fields )
138+ self .reserved_by_name : Dict [str , Union [ DataRowMetadataSchema , Dict [
139+ str , DataRowMetadataSchema ]]] = self . _make_name_index (
140+ self .reserved_fields )
141141 self .reserved_by_name_normalized : Dict [
142142 str , DataRowMetadataSchema ] = self ._make_normalized_name_index (
143143 self .reserved_fields )
@@ -147,15 +147,18 @@ def _build_ontology(self):
147147 f for f in self .fields if not f .reserved
148148 ]
149149 self .custom_by_id = self ._make_id_index (self .custom_fields )
150- self .custom_by_name : Dict [
150+ self .custom_by_name : Dict [str , Union [ DataRowMetadataSchema , Dict [
151151 str ,
152- DataRowMetadataSchema ] = self ._make_name_index (self .custom_fields )
152+ DataRowMetadataSchema ]]] = self ._make_name_index (self .custom_fields )
153153 self .custom_by_name_normalized : Dict [
154154 str , DataRowMetadataSchema ] = self ._make_normalized_name_index (
155155 self .custom_fields )
156156
157157 @staticmethod
158- def _make_name_index (fields : List [DataRowMetadataSchema ]):
158+ def _make_name_index (
159+ fields : List [DataRowMetadataSchema ]
160+ ) -> Dict [str , Union [DataRowMetadataSchema , Dict [str ,
161+ DataRowMetadataSchema ]]]:
159162 index = {}
160163 for f in fields :
161164 if f .options :
@@ -167,7 +170,9 @@ def _make_name_index(fields: List[DataRowMetadataSchema]):
167170 return index
168171
169172 @staticmethod
170- def _make_normalized_name_index (fields : List [DataRowMetadataSchema ]):
173+ def _make_normalized_name_index (
174+ fields : List [DataRowMetadataSchema ]
175+ ) -> Dict [str , DataRowMetadataSchema ]:
171176 index = {}
172177 for f in fields :
173178 index [f .name ] = f
@@ -226,13 +231,16 @@ def _parse_ontology(raw_ontology) -> List[DataRowMetadataSchema]:
226231 return fields
227232
228233 def refresh_ontology (self ):
234+ """ Update the `DataRowMetadataOntology` instance with the latest
235+ metadata ontology schemas
236+ """
229237 self ._raw_ontology = self ._get_ontology ()
230238 self ._build_ontology ()
231239
232240 def create_schema (self ,
233241 name : str ,
234242 kind : DataRowMetadataKind ,
235- options : List [str ] = None ):
243+ options : List [str ] = None ) -> DataRowMetadataSchema :
236244 """ Create metadata schema
237245
238246 >>> mdo.create_schema(name, kind, options)
@@ -267,7 +275,7 @@ def create_schema(self,
267275
268276 return self ._upsert_schema (upsert_schema )
269277
270- def update_schema (self , name : str , new_name : str ):
278+ def update_schema (self , name : str , new_name : str ) -> DataRowMetadataSchema :
271279 """ Update metadata schema
272280
273281 >>> mdo.update_schema(name, new_name)
@@ -298,7 +306,8 @@ def update_schema(self, name: str, new_name: str):
298306
299307 return self ._upsert_schema (upsert_schema )
300308
301- def update_enum_option (self , name : str , option : str , new_option : str ):
309+ def update_enum_option (self , name : str , option : str ,
310+ new_option : str ) -> DataRowMetadataSchema :
302311 """ Update Enum metadata schema option
303312
304313 >>> mdo.update_enum_option(name, option, new_option)
@@ -334,7 +343,7 @@ def update_enum_option(self, name: str, option: str, new_option: str):
334343
335344 return self ._upsert_schema (upsert_schema )
336345
337- def delete_schema (self , name : str ):
346+ def delete_schema (self , name : str ) -> bool :
338347 """ Delete metadata schema
339348
340349 >>> mdo.delete_schema(name)
@@ -579,9 +588,18 @@ def _bulk_export(_data_row_ids: List[str]) -> List[DataRowMetadata]:
579588 data_row_ids ,
580589 batch_size = self ._batch_size )
581590
582- # Convert metadata to DataRowMetadataField objects, parse all fields
583- # and return a dictionary of metadata fields for upsert
584- def parse_upsert_metadata (self , metadata_fields ):
591+ def parse_upsert_metadata (self , metadata_fields ) -> List [Dict [str , Any ]]:
592+ """ Converts either `DataRowMetadataField` or a dictionary representation
593+ of `DataRowMetadataField` into a validated, flattened dictionary of
594+ metadata fields that are used to create data row metadata. Used
595+ internally in `Dataset.create_data_rows()`
596+
597+ Args:
598+ metadata_fields: List of `DataRowMetadataField` or a dictionary representation
599+ of `DataRowMetadataField`
600+ Returns:
601+ List of dictionaries representing a flattened view of metadata fields
602+ """
585603
586604 def _convert_metadata_field (metadata_field ):
587605 if isinstance (metadata_field , DataRowMetadataField ):
@@ -606,7 +624,9 @@ def _convert_metadata_field(metadata_field):
606624 chain .from_iterable (self ._parse_upsert (m ) for m in metadata_fields ))
607625 return [m .dict (by_alias = True ) for m in parsed_metadata ]
608626
609- def _upsert_schema (self , upsert_schema : _UpsertCustomMetadataSchemaInput ):
627+ def _upsert_schema (
628+ self , upsert_schema : _UpsertCustomMetadataSchemaInput
629+ ) -> DataRowMetadataSchema :
610630 query = """mutation UpsertCustomMetadataSchemaPyApi($data: UpsertCustomMetadataSchemaInput!) {
611631 upsertCustomMetadataSchema(data: $data){
612632 id
0 commit comments