code: def test_proxy_binop():
      class Foo:
          pass
  
      class Bar:
          def __add__(self, other):
              if isinstance(other, Foo):
                  return "sum"
              return NotImplemented
  
          def __radd__(self, other):
              return self.__add__(other)
  
      FooProxy = make_final_proxy_type(
          "FooProxy",
          _Unusable,
          Foo,
          fast_to_slow=Foo(),
          slow_to_fast=_Unusable(),
      )
  
      BarProxy = make_final_proxy_type(
          "BarProxy",
          _Unusable,
          Bar,
          fast_to_slow=Bar(),
          slow_to_fast=_Unusable(),
      )
  
      assert Foo() + Bar() == "sum"
      assert Bar() + Foo() == "sum"
      assert FooProxy() + BarProxy() == "sum"
      assert BarProxy() + FooProxy() == "sum"
      assert FooProxy() + Bar() == "sum"
      assert Bar() + FooProxy() == "sum"
      assert Foo() + BarProxy() == "sum"
      assert BarProxy() + Foo() == "sum"
  
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 21 for calling a global function with example usage: test_proxy_binop() and returns: NotImplemented, self, str