original_docstring: Figures out the BigQuery schema for the given 'json_object' and
          updates 'schema_map' with the latest info. A 'schema_map' entry of type
          'soft' is a provisional entry that can be overwritten by a subsequent
          'soft' or 'hard' entry. If both the old and new have the same type,
          then they must be compatible.
  
          'base_path' is the string representing the current path within the
          nested record that leads to this specific entry.
          
docstring: Figures out the BigQuery schema for the given 'json_object' and
  updates 'schema_map' with the latest info.
  
  'base_path' is the string representing the current path within the
  nested record that leads to this specific entry.
docstring_tokens: Figures out the BigQuery schema for the given ' json_object ' and updates ' schema_map ' with the latest info . ' base_path ' is the string representing the current path within the nested record that leads to this specific entry .
code: def deduce_schema_for_record(self, json_object, schema_map, base_path=None):
          """Figures out the BigQuery schema for the given 'json_object' and
          updates 'schema_map' with the latest info. A 'schema_map' entry of type
          'soft' is a provisional entry that can be overwritten by a subsequent
          'soft' or 'hard' entry. If both the old and new have the same type,
          then they must be compatible.
  
          'base_path' is the string representing the current path within the
          nested record that leads to this specific entry.
          """
          for key, value in json_object.items():
              # The canonical key is the lower-cased version of the sanitized key
              # so that the case of the field name is preserved when generating
              # the schema but we don't create invalid, duplicate, fields since
              # BigQuery is case insensitive
              canonical_key = self.sanitize_name(key).lower()
              schema_entry = schema_map.get(canonical_key)
              new_schema_entry = self.get_schema_entry(
                  key=key,
                  value=value,
                  base_path=base_path
              )
              schema_map[canonical_key] = self.merge_schema_entry(
                  old_schema_entry=schema_entry,
                  new_schema_entry=new_schema_entry,
                  base_path=base_path
              )
code_tokens: def deduce_schema_for_record ( self , json_object , schema_map , base_path = None ) : for key , value in json_object . items ( ) : canonical_key = self . sanitize_name ( key ) . lower ( ) schema_entry = schema_map . get ( canonical_key ) new_schema_entry = self . get_schema_entry ( key = key , value = value , base_path = base_path ) schema_map [ canonical_key ] = self . merge_schema_entry ( old_schema_entry = schema_entry , new_schema_entry = new_schema_entry , base_path = base_path )
short_docstring: Figures out the BigQuery schema for the given 'json_object' and
  updates 'schema_map' with the latest info.
short_docstring_tokens: Figures out the BigQuery schema for the given ' json_object ' and updates ' schema_map ' with the latest info .
comment: """Figures out the BigQuery schema for the given 'json_object' and
          updates 'schema_map' with the latest info. A 'schema_map' entry of type
          'soft' is a provisional entry that can be overwritten by a subsequent
          'soft' or 'hard' entry. If both the old and new have the same type,
          then they must be compatible.
  
          'base_path' is the string representing the current path within the
          nested record that leads to this specific entry.
          """$SEP$# The canonical key is the lower-cased version of the sanitized key$SEP$# so that the case of the field name is preserved when generating$SEP$# the schema but we don't create invalid, duplicate, fields since$SEP$# BigQuery is case insensitive