1+ from abc import ABC , abstractmethod
12from collections .abc import Sequence
23from enum import StrEnum
34from typing import Any , Callable
@@ -21,23 +22,17 @@ class SerializeMode(StrEnum):
2122 GRANITEIO = "graniteio"
2223
2324
24- class PDLContext (Sequence ):
25+ class PDLContext (ABC , Sequence ):
2526
26- def serialize ( self , mode : SerializeMode ) -> list [ dict [ str , Any ]]:
27- return []
27+ @ abstractmethod
28+ def serialize ( self , mode : SerializeMode ) -> list [ dict [ str , Any ]]: ...
2829
2930 def __add__ (self , value : "PDLContext" ):
3031 return IndependentContext ([self , value ])
3132
3233 def __mul__ (self , value : "PDLContext" ):
3334 return DependentContext ([self , value ])
3435
35- def __len__ (self ):
36- return 0
37-
38- def __getitem__ (self , index : int | slice ): # pyright: ignore
39- return []
40-
4136 # def to_json(self):
4237 # return json.dumps(self.serialize(SerializeMode.LITELLM))
4338
@@ -52,16 +47,14 @@ def serialize(self, mode: SerializeMode) -> list[dict[str, Any]]:
5247 result = self .message .result ()
5348 return [result ]
5449
55- def __len__ (self ): # pyright: ignore
50+ def __len__ (self ):
5651 return 1
5752
5853 def __getitem__ (self , index : int | slice ): # pyright: ignore
59- if index in (0 , - 1 ):
60- return self .message .result ()
61- assert False
54+ return [self .message .result ()][index ]
6255
6356 def __repr__ (self ): # pyright: ignore
64- return str ( self .message .result ())
57+ return self .message .result (). __repr__ ( )
6558
6659
6760class IndependentContext (PDLContext ):
@@ -74,6 +67,8 @@ def __init__(self, context: list[PDLContext]):
7467 ret += item .context .data
7568 elif isinstance (item , SingletonContext ):
7669 ret += [item ]
70+ elif isinstance (item , DependentContext ) and len (item ) == 0 :
71+ pass
7772 else :
7873 # Not all elements of the list are Independent, so return
7974 self .context = PdlList (context )
@@ -111,6 +106,8 @@ def __init__(self, context: list[PDLContext]):
111106 ret += item .context .data
112107 elif isinstance (item , SingletonContext ):
113108 ret += [item ]
109+ elif isinstance (item , IndependentContext ) and len (item ) == 0 :
110+ pass
114111 else :
115112 # Not all elements of the list are Dependent, so return
116113 self .context = PdlList (context )
0 commit comments