code: def test_tuple_with_attrs_transform():
      Bunch = tuple_with_attrs("Bunch", ["a", "b"], {"c", "d"})
      Bunch2 = tuple_with_attrs("Bunch", ["a", "b"], {"c", "d"})
      a = Bunch(1, 2, c=3, d=4)
      b = (1, 2)
      c = Bunch(1, 2, c=4, d=3)
      d = Bunch2(1, 2, c=3, d=4)
      assert a != c
      assert a != b
      assert b != c
      assert a != d
      transform = partial(
          _transform_arg, attribute_name="_fsproxy_fast", seen=set()
      )
      aprime = transform(a)
      bprime = transform(b)
      cprime = transform(c)
      dprime = transform(d)
      assert a == aprime and a is not aprime
      assert b == bprime and b is not bprime
      assert c == cprime and c is not cprime
      assert d == dprime and d is not dprime
  
imports: import inspect
  from functools import partial
  from io import StringIO
  import numpy
  import pytest
  from cudf.pandas.fast_slow_proxy import _fast_arg, _FunctionProxy, _slow_arg, _transform_arg, _Unusable, make_final_proxy_type, make_intermediate_proxy_type
label_desc: Use image node_id 23 for calling a global function with example usage: test_tuple_with_attrs_transform() without return types