code: def test_full_init(self):
      @signature_has_traits
      class Foo(HasTraits):
          number1 = Int()
          number2 = Int()
          value = Unicode("Hello")
  
          def __init__(self, arg1, arg2=None, *pos_args, **kw_args):
              self.arg1 = arg1
              self.arg2 = arg2
              self.pos_args = pos_args
              self.kw_args = kw_args
  
              super().__init__(*pos_args, **kw_args)
  
      parameters = signature(Foo).parameters
      parameter_names = list(parameters)
  
      self.assertIs(
          parameters["arg1"].kind, Parameter.POSITIONAL_OR_KEYWORD
      )
      self.assertEqual("arg1", parameter_names[0])
  
      self.assertIs(
          parameters["arg2"].kind, Parameter.POSITIONAL_OR_KEYWORD
      )
      self.assertEqual("arg2", parameter_names[1])
  
      self.assertIs(
          parameters["pos_args"].kind, Parameter.VAR_POSITIONAL
      )
      self.assertEqual("pos_args", parameter_names[2])
  
      self.assertIs(parameters["number1"].kind, Parameter.KEYWORD_ONLY)
      self.assertIs(parameters["number2"].kind, Parameter.KEYWORD_ONLY)
      self.assertIs(parameters["value"].kind, Parameter.KEYWORD_ONLY)
  
      self.assertIs(parameters["kw_args"].kind, Parameter.VAR_KEYWORD)
      self.assertEqual("kw_args", parameter_names[-1])
  
      f = Foo(1, 3, 45, "hey", number1=32, value="World")
      self.assertEqual(f.arg1, 1)
      self.assertEqual(f.arg2, 3)
      self.assertTupleEqual(f.pos_args, (45, "hey"))
      self.assertEqual(f.number1, 32)
      self.assertEqual(f.number2, 0)
      self.assertEqual(f.value, "World")
  
file_path: catboost/contrib/python/traitlets/py3/tests/utils/test_decorators.py
imports: from inspect import Parameter, signature
  from unittest import TestCase
  from traitlets import HasTraits, Int, Unicode
  from traitlets.utils.decorators import signature_has_traits
label_desc: Use image node_id 4 for calling the TestExpandSignature obj's underlying member method code with example usage: obj.test_full_init() without return types