Skip to content

Commit f4fbdb8

Browse files
authored
fix: trace generation with context (#968)
Signed-off-by: Louis Mandel <[email protected]>
1 parent 123f923 commit f4fbdb8

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

src/pdl/pdl_context.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from abc import ABC, abstractmethod
12
from collections.abc import Sequence
23
from enum import StrEnum
34
from 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

6760
class 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

Comments
 (0)