code: def test_arrow_size_diff_values(ray_start_regular_shared):
      b = ArrowBlockBuilder()
      assert b.get_estimated_memory_usage() == 0
      b.add(ARROW_LARGE_VALUE)
      assert b._num_compactions == 0
      assert_close(b.get_estimated_memory_usage(), 10019)
      b.add(ARROW_LARGE_VALUE)
      assert b._num_compactions == 0
      assert_close(b.get_estimated_memory_usage(), 20038)
      for _ in range(10):
          b.add(ARROW_SMALL_VALUE)
      assert_close(b.get_estimated_memory_usage(), 25178)
      for _ in range(100):
          b.add(ARROW_SMALL_VALUE)
      assert b._num_compactions == 0
      assert_close(b.get_estimated_memory_usage(), 35394)
      for _ in range(13000):
          b.add(ARROW_LARGE_VALUE)
      assert_close(b.get_estimated_memory_usage(), 130131680)
      assert b._num_compactions == 2
      for _ in range(4000):
          b.add(ARROW_LARGE_VALUE)
      assert_close(b.get_estimated_memory_usage(), 170129189)
      assert b._num_compactions == 3
      assert b.build().num_rows == 17112
  
file_path: ray/python/ray/data/tests/test_size_estimation.py
imports: import os
  import uuid
  import pytest
  import ray
  from ray.data._internal.arrow_block import ArrowBlockBuilder
  from ray.tests.conftest import *
label_desc: Use image node_id 3 for calling a global function with example usage: test_arrow_size_diff_values(ray_start_regular_shared) without return types