| 86 | self.assertEqual(f.number2, 36) |
| 87 | |
| 88 | def test_full_init(self): |
| 89 | @signature_has_traits |
| 90 | class Foo(HasTraits): |
| 91 | number1 = Int() |
| 92 | number2 = Int() |
| 93 | value = Unicode("Hello") |
| 94 | |
| 95 | def __init__(self, arg1, arg2=None, *pos_args, **kw_args): |
| 96 | self.arg1 = arg1 |
| 97 | self.arg2 = arg2 |
| 98 | self.pos_args = pos_args |
| 99 | self.kw_args = kw_args |
| 100 | |
| 101 | super().__init__(*pos_args, **kw_args) |
| 102 | |
| 103 | parameters = signature(Foo).parameters |
| 104 | parameter_names = list(parameters) |
| 105 | |
| 106 | self.assertIs(parameters["arg1"].kind, Parameter.POSITIONAL_OR_KEYWORD) |
| 107 | self.assertEqual("arg1", parameter_names[0]) |
| 108 | |
| 109 | self.assertIs(parameters["arg2"].kind, Parameter.POSITIONAL_OR_KEYWORD) |
| 110 | self.assertEqual("arg2", parameter_names[1]) |
| 111 | |
| 112 | self.assertIs(parameters["pos_args"].kind, Parameter.VAR_POSITIONAL) |
| 113 | self.assertEqual("pos_args", parameter_names[2]) |
| 114 | |
| 115 | self.assertIs(parameters["number1"].kind, Parameter.KEYWORD_ONLY) |
| 116 | self.assertIs(parameters["number2"].kind, Parameter.KEYWORD_ONLY) |
| 117 | self.assertIs(parameters["value"].kind, Parameter.KEYWORD_ONLY) |
| 118 | |
| 119 | self.assertIs(parameters["kw_args"].kind, Parameter.VAR_KEYWORD) |
| 120 | self.assertEqual("kw_args", parameter_names[-1]) |
| 121 | |
| 122 | f = Foo(1, 3, 45, "hey", number1=32, value="World") |
| 123 | self.assertEqual(f.arg1, 1) |
| 124 | self.assertEqual(f.arg2, 3) |
| 125 | self.assertTupleEqual(f.pos_args, (45, "hey")) |
| 126 | self.assertEqual(f.number1, 32) |
| 127 | self.assertEqual(f.number2, 0) |
| 128 | self.assertEqual(f.value, "World") |
| 129 | |
| 130 | def test_no_kwargs(self): |
| 131 | with self.assertRaises(RuntimeError): |