46 lines
		
	
	
		
			578 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			578 B
		
	
	
	
		
			Python
		
	
	
	
# mypy: allow-untyped-defs
 | 
						|
from dataclasses import dataclass
 | 
						|
 | 
						|
 | 
						|
@dataclass
 | 
						|
class S:
 | 
						|
    a: int
 | 
						|
    b: str
 | 
						|
 | 
						|
 | 
						|
@dataclass
 | 
						|
class C:
 | 
						|
    c: S
 | 
						|
    d: S
 | 
						|
 | 
						|
 | 
						|
@dataclass
 | 
						|
class C2:
 | 
						|
    e: C
 | 
						|
    f: S
 | 
						|
 | 
						|
 | 
						|
@dataclass
 | 
						|
class C3:
 | 
						|
    g: S
 | 
						|
    h: C2
 | 
						|
    i: str
 | 
						|
    j: str
 | 
						|
 | 
						|
 | 
						|
def test_recursive_dataclasses():
 | 
						|
    left = C3(
 | 
						|
        S(10, "ten"),
 | 
						|
        C2(C(S(1, "one"), S(2, "two")), S(2, "three")),
 | 
						|
        "equal",
 | 
						|
        "left",
 | 
						|
    )
 | 
						|
    right = C3(
 | 
						|
        S(20, "xxx"),
 | 
						|
        C2(C(S(1, "one"), S(2, "yyy")), S(3, "three")),
 | 
						|
        "equal",
 | 
						|
        "right",
 | 
						|
    )
 | 
						|
 | 
						|
    assert left == right
 |