MCPcopy Index your code
hub / github.com/python/cpython / test_KW_ONLY

Method test_KW_ONLY

Lib/test/test_dataclasses/__init__.py:5017–5063  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

5015 self.assertEqual(C(42, b=10).__match_args__, ('a',))
5016
5017 def test_KW_ONLY(self):
5018 @dataclass
5019 class A:
5020 a: int
5021 _: KW_ONLY
5022 b: int
5023 c: int
5024 A(3, c=5, b=4)
5025 msg = "takes 2 positional arguments but 4 were given"
5026 with self.assertRaisesRegex(TypeError, msg):
5027 A(3, 4, 5)
5028
5029
5030 @dataclass(kw_only=True)
5031 class B:
5032 a: int
5033 _: KW_ONLY
5034 b: int
5035 c: int
5036 B(a=3, b=4, c=5)
5037 msg = "takes 1 positional argument but 4 were given"
5038 with self.assertRaisesRegex(TypeError, msg):
5039 B(3, 4, 5)
5040
5041 # Explicitly make a field that follows KW_ONLY be non-keyword-only.
5042 @dataclass
5043 class C:
5044 a: int
5045 _: KW_ONLY
5046 b: int
5047 c: int = field(kw_only=False)
5048 c = C(1, 2, b=3)
5049 self.assertEqual(c.a, 1)
5050 self.assertEqual(c.b, 3)
5051 self.assertEqual(c.c, 2)
5052 c = C(1, b=3, c=2)
5053 self.assertEqual(c.a, 1)
5054 self.assertEqual(c.b, 3)
5055 self.assertEqual(c.c, 2)
5056 c = C(1, b=3, c=2)
5057 self.assertEqual(c.a, 1)
5058 self.assertEqual(c.b, 3)
5059 self.assertEqual(c.c, 2)
5060 c = C(c=2, b=3, a=1)
5061 self.assertEqual(c.a, 1)
5062 self.assertEqual(c.b, 3)
5063 self.assertEqual(c.c, 2)
5064
5065 def test_KW_ONLY_as_string(self):
5066 @dataclass

Callers

nothing calls this directly

Calls 5

assertRaisesRegexMethod · 0.80
AClass · 0.70
BClass · 0.70
CClass · 0.70
assertEqualMethod · 0.45

Tested by

no test coverage detected