code: def test_unite_records():
      assert discover(
          [
              {"name": "Alice", "balance": 100},
              {"name": "Bob", "balance": ""},
          ]
      ) == 2 * Record([["balance", Option(int64)], ["name", string]])
  
      assert discover(
          [{"name": "Alice", "s": "foo"}, {"name": "Bob", "s": None}]
      ) == 2 * Record([["name", string], ["s", Option(string)]])
  
      assert discover(
          [
              {"name": "Alice", "s": "foo", "f": 1.0},
              {"name": "Bob", "s": None, "f": None},
          ]
      ) == 2 * Record(
          [
              ["f", Option(float64)],
              ["name", string],
              ["s", Option(string)],
          ]
      )
  
imports: from collections import OrderedDict
  from itertools import starmap
  from types import MappingProxyType
  from warnings import catch_warnings, simplefilter
  import numpy
  import pytest
  from datashader.datashape.discovery import discover, null, unite_identical, unite_base, unite_merge_dimensions, do_one, lowest_common_dshape
  from datashader.datashape.coretypes import int64, float64, complex128, string, bool_, Tuple, Record, date_, datetime_, time_, timedelta_, int32, var, Option, real, Null, TimeDelta, String, float32, R
  from datashader.datashape.util.testing import assert_dshape_equal
  from datashader.datashape import dshape
  from datetime import date, time, datetime, timedelta
label_desc: Use image node_id 27 for calling a global function with example usage: test_unite_records() without return types