|
18 | 18 | ArgumentError, |
19 | 19 | ArgumentParser, |
20 | 20 | Namespace, |
| 21 | + compose_dataclasses, |
21 | 22 | get_config_read_mode, |
22 | 23 | set_config_read_mode, |
23 | 24 | set_docstring_parse_options, |
@@ -681,7 +682,6 @@ def test_import_from_deprecated(): |
681 | 682 | ("link_arguments", "ArgumentLinking"), |
682 | 683 | ("loaders_dumpers", "set_loader"), |
683 | 684 | ("namespace", "Namespace"), |
684 | | - ("signatures", "compose_dataclasses"), |
685 | 685 | ("typehints", "lazy_instance"), |
686 | 686 | ("util", "Path"), |
687 | 687 | ("parameter_resolvers", "ParamData"), |
@@ -802,3 +802,28 @@ def test_DefaultHelpFormatter_yaml_comments(parser): |
802 | 802 | formatter.set_yaml_argument_comment("arg", cfg, "arg", 0) |
803 | 803 | assert "set_yaml_argument_comment method is deprecated and will be removed in v5.0.0" in str(w[-1].message) |
804 | 804 | assert "formatter.set_yaml_argument_comment(" in source[w[-1].lineno - 1] |
| 805 | + |
| 806 | + |
| 807 | +@dataclasses.dataclass |
| 808 | +class ComposeA: |
| 809 | + a: int = 1 |
| 810 | + |
| 811 | + def __post_init__(self): |
| 812 | + self.a += 1 |
| 813 | + |
| 814 | + |
| 815 | +@dataclasses.dataclass |
| 816 | +class ComposeB: |
| 817 | + b: str = "1" |
| 818 | + |
| 819 | + |
| 820 | +def test_compose_dataclasses(): |
| 821 | + with catch_warnings(record=True) as w: |
| 822 | + ComposeAB = compose_dataclasses(ComposeA, ComposeB) |
| 823 | + assert_deprecation_warn( |
| 824 | + w, |
| 825 | + message="compose_dataclasses is deprecated", |
| 826 | + code="ComposeAB = compose_dataclasses(ComposeA, ComposeB)", |
| 827 | + ) |
| 828 | + assert 2 == len(dataclasses.fields(ComposeAB)) |
| 829 | + assert {"a": 3, "b": "2"} == dataclasses.asdict(ComposeAB(a=2, b="2")) # pylint: disable=unexpected-keyword-arg |
0 commit comments