|
17 | 17 | from marshmallow.fields import List as ListField
|
18 | 18 | from marshmallow.validate import Validator
|
19 | 19 |
|
20 |
| -from marshmallow_dataclass import NewType, _is_generic_alias_of_dataclass, class_schema |
| 20 | +from marshmallow_dataclass import NewType, class_schema |
21 | 21 |
|
22 | 22 |
|
23 | 23 | class TestClassSchema(unittest.TestCase):
|
@@ -460,79 +460,6 @@ class Meta:
|
460 | 460 | self.assertNotIn("no_init", class_schema(NoInit)().fields)
|
461 | 461 | self.assertIn("no_init", class_schema(Init)().fields)
|
462 | 462 |
|
463 |
| - def test_generic_dataclass(self): |
464 |
| - T = typing.TypeVar("T") |
465 |
| - |
466 |
| - @dataclasses.dataclass |
467 |
| - class SimpleGeneric(typing.Generic[T]): |
468 |
| - data: T |
469 |
| - |
470 |
| - @dataclasses.dataclass |
471 |
| - class NestedFixed: |
472 |
| - data: SimpleGeneric[int] |
473 |
| - |
474 |
| - @dataclasses.dataclass |
475 |
| - class NestedGeneric(typing.Generic[T]): |
476 |
| - data: SimpleGeneric[T] |
477 |
| - |
478 |
| - self.assertTrue(_is_generic_alias_of_dataclass(SimpleGeneric[int])) |
479 |
| - self.assertFalse(_is_generic_alias_of_dataclass(SimpleGeneric)) |
480 |
| - |
481 |
| - schema_s = class_schema(SimpleGeneric[str])() |
482 |
| - self.assertEqual(SimpleGeneric(data="a"), schema_s.load({"data": "a"})) |
483 |
| - self.assertEqual(schema_s.dump(SimpleGeneric(data="a")), {"data": "a"}) |
484 |
| - with self.assertRaises(ValidationError): |
485 |
| - schema_s.load({"data": 2}) |
486 |
| - |
487 |
| - schema_nested = class_schema(NestedFixed)() |
488 |
| - self.assertEqual( |
489 |
| - NestedFixed(data=SimpleGeneric(1)), |
490 |
| - schema_nested.load({"data": {"data": 1}}), |
491 |
| - ) |
492 |
| - self.assertEqual( |
493 |
| - schema_nested.dump(NestedFixed(data=SimpleGeneric(data=1))), |
494 |
| - {"data": {"data": 1}}, |
495 |
| - ) |
496 |
| - with self.assertRaises(ValidationError): |
497 |
| - schema_nested.load({"data": {"data": "str"}}) |
498 |
| - |
499 |
| - schema_nested_generic = class_schema(NestedGeneric[int])() |
500 |
| - self.assertEqual( |
501 |
| - NestedGeneric(data=SimpleGeneric(1)), |
502 |
| - schema_nested_generic.load({"data": {"data": 1}}), |
503 |
| - ) |
504 |
| - self.assertEqual( |
505 |
| - schema_nested_generic.dump(NestedGeneric(data=SimpleGeneric(data=1))), |
506 |
| - {"data": {"data": 1}}, |
507 |
| - ) |
508 |
| - with self.assertRaises(ValidationError): |
509 |
| - schema_nested_generic.load({"data": {"data": "str"}}) |
510 |
| - |
511 |
| - def test_generic_dataclass_repeated_fields(self): |
512 |
| - T = typing.TypeVar("T") |
513 |
| - |
514 |
| - @dataclasses.dataclass |
515 |
| - class AA: |
516 |
| - a: int |
517 |
| - |
518 |
| - @dataclasses.dataclass |
519 |
| - class BB(typing.Generic[T]): |
520 |
| - b: T |
521 |
| - |
522 |
| - @dataclasses.dataclass |
523 |
| - class Nested: |
524 |
| - x: BB[float] |
525 |
| - z: BB[float] |
526 |
| - # if y is the first field in this class, deserialisation will fail. |
527 |
| - # see https://github.com/lovasoa/marshmallow_dataclass/pull/172#issuecomment-1334024027 |
528 |
| - y: BB[AA] |
529 |
| - |
530 |
| - schema_nested = class_schema(Nested)() |
531 |
| - self.assertEqual( |
532 |
| - Nested(x=BB(b=1), z=BB(b=1), y=BB(b=AA(1))), |
533 |
| - schema_nested.load({"x": {"b": 1}, "z": {"b": 1}, "y": {"b": {"a": 1}}}), |
534 |
| - ) |
535 |
| - |
536 | 463 |
|
537 | 464 | if __name__ == "__main__":
|
538 | 465 | unittest.main()
|
0 commit comments