code: def test_partial_kwargs(self):
      def foo(a, b, c=2):
          return a, b, c
  
      def bar(a, b):
          return a, b
  
      # Override the default values. The last two should be no-ops.
      foo1 = lp_utils.partial_kwargs(foo, c=1)
      foo2 = lp_utils.partial_kwargs(foo)
      bar1 = lp_utils.partial_kwargs(bar)
  
      # Check that we raise errors on overriding kwargs with no default values
      with self.assertRaises(ValueError):
          lp_utils.partial_kwargs(foo, a=2)
  
      # CHeck the we raise if we try to override a kwarg that doesn't exist.
      with self.assertRaises(ValueError):
          lp_utils.partial_kwargs(foo, d=2)
  
      # Make sure we get back the correct values.
      self.assertEqual(foo1(1, 2), (1, 2, 1))
      self.assertEqual(foo2(1, 2), (1, 2, 2))
      self.assertEqual(bar1(1, 2), (1, 2))
  
imports: from acme.utils import lp_utils
  from absl.testing import absltest
label_desc: Use image node_id 1 for calling the LpUtilsTest obj's underlying member method code with example usage: obj.test_partial_kwargs() and returns: a,  b,  c, a,  b