@@ -40,8 +40,11 @@ def __mul__(self, value: "PDLContext"):
40
40
class SingletonContext (PDLContext ):
41
41
message : PdlLazy [dict [str , Any ]]
42
42
43
- def __init__ (self , message : PdlLazy [dict [str , Any ]]):
44
- self .message = message
43
+ def __init__ (self , message : PdlLazy [dict [str , Any ]] | dict [str , Any ]):
44
+ if isinstance (message , PdlLazy ):
45
+ self .message = message
46
+ else :
47
+ self .message = PdlConst (message )
45
48
46
49
def serialize (self , mode : SerializeMode ) -> list [dict [str , Any ]]:
47
50
result = self .message .result ()
@@ -60,20 +63,23 @@ def __repr__(self): # pyright: ignore
60
63
class IndependentContext (PDLContext ):
61
64
context : PdlLazy [list [PDLContext ]]
62
65
63
- def __init__ (self , context : list [PDLContext ]):
66
+ def __init__ (self , context : list [PDLContext | dict [ str , Any ] ]):
64
67
ret : list [PDLContext ] = []
65
68
for item in context :
66
- if isinstance (item , IndependentContext ):
67
- ret += item .context .data
68
- elif isinstance (item , SingletonContext ):
69
- ret += [item ]
70
- elif isinstance (item , DependentContext ) and len (item ) == 0 :
71
- pass
72
- else :
73
- # Not all elements of the list are Independent, so return
74
- self .context = PdlList (context )
75
- return
76
- # All elements of the list are Independent
69
+ match item :
70
+ case IndependentContext ():
71
+ ret += item .context .data
72
+ case SingletonContext ():
73
+ ret += [item ]
74
+ case DependentContext ():
75
+ if len (item ) == 0 :
76
+ pass
77
+ else :
78
+ ret += [item ]
79
+ case dict ():
80
+ ret += [SingletonContext (item )]
81
+ case _:
82
+ assert False
77
83
self .context = PdlList (ret )
78
84
79
85
def serialize (self , mode : SerializeMode ) -> list [dict [str , Any ]]:
@@ -99,20 +105,23 @@ def __repr__(self): # pyright: ignore
99
105
class DependentContext (PDLContext ):
100
106
context : PdlLazy [list [PDLContext ]]
101
107
102
- def __init__ (self , context : list [PDLContext ]):
108
+ def __init__ (self , context : list [PDLContext | dict [ str , Any ] ]):
103
109
ret : list [PDLContext ] = []
104
110
for item in context :
105
- if isinstance (item , DependentContext ):
106
- ret += item .context .data
107
- elif isinstance (item , SingletonContext ):
108
- ret += [item ]
109
- elif isinstance (item , IndependentContext ) and len (item ) == 0 :
110
- pass
111
- else :
112
- # Not all elements of the list are Dependent, so return
113
- self .context = PdlList (context )
114
- return
115
- # All elements of the list are Dependent
111
+ match item :
112
+ case DependentContext ():
113
+ ret += item .context .data
114
+ case SingletonContext ():
115
+ ret += [item ]
116
+ case IndependentContext ():
117
+ if len (item ) == 0 :
118
+ pass
119
+ else :
120
+ ret += [item ]
121
+ case dict ():
122
+ ret += [SingletonContext (item )]
123
+ case _:
124
+ assert False
116
125
self .context = PdlList (ret )
117
126
118
127
def serialize (self , mode : SerializeMode ) -> list [dict [str , Any ]]:
0 commit comments