diff --git a/examples/examples/simple/core/testing-ameasure.py b/examples/examples/simple/core/testing-ameasure.py index 76c8805..b5549eb 100644 --- a/examples/examples/simple/core/testing-ameasure.py +++ b/examples/examples/simple/core/testing-ameasure.py @@ -43,22 +43,14 @@ def example_response(user): pipeline = pipeline_by_slug -async def measure_func(user): - return example_response(user) +async def measure_func(x=None): + return x async def example_handler(pipeline_run_test_case): (runner, test_case) = pipeline_run_test_case - user = User( - id=1, - name="John Doe", - email="john@example.com", - age=30, - ) - await runner.ameasure( - measure_func, - user=user - ) + result = await runner.ameasure(measure_func, x=test_case) + return result async def main(): diff --git a/examples/poetry.lock b/examples/poetry.lock index 9eb81a1..5e7b9bd 100644 --- a/examples/poetry.lock +++ b/examples/poetry.lock @@ -330,13 +330,13 @@ files = [ [[package]] name = "gentrace-py" -version = "0.31.5" +version = "0.31.6" description = "Python SDK for the Gentrace API" category = "main" optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "gentrace_py-0.31.5.tar.gz", hash = "sha256:a65cf01baf8efa4e9e5a4d6f7468c8446675132dc85f90c81da234fd627f3e1b"}, + {file = "gentrace_py-0.31.6.tar.gz", hash = "sha256:be57af2b604fa4b83878af2b7ec71adfaa2a31d8fbcf6e26debf4937cfa8a39c"}, ] [package.dependencies] @@ -356,7 +356,7 @@ vectorstores = ["pinecone-client (>=2.2.1,<3.0.0)"] [package.source] type = "file" -url = "../package/dist/gentrace_py-0.31.5.tar.gz" +url = "../package/dist/gentrace_py-0.31.6.tar.gz" [[package]] name = "h11" @@ -1074,4 +1074,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "405b318c40802d3f70a6577646a45ef0f671404bed2439ed3563257d8243196e" +content-hash = "e07878065d493344b449e0154613aecfc4ae7fbb77f3903e1a5bace3c105c0cd" diff --git a/examples/pyproject.toml b/examples/pyproject.toml index 242a11e..c0af3bb 100644 --- a/examples/pyproject.toml +++ b/examples/pyproject.toml @@ -11,7 +11,7 @@ openai = "1.13.3" pinecone-client = "^2.2.1" python = "^3.8.1" python-dotenv = "^1.0.0" -gentrace-py = {path = "../package/dist/gentrace_py-0.31.5.tar.gz", develop = true} +gentrace-py = {path = "../package/dist/gentrace_py-0.31.6.tar.gz", develop = true} [tool.poetry.group.lint.dependencies] black = "^23.3.0" diff --git a/package/gentrace/providers/step_run.py b/package/gentrace/providers/step_run.py index 9859feb..bb903c1 100644 --- a/package/gentrace/providers/step_run.py +++ b/package/gentrace/providers/step_run.py @@ -22,16 +22,25 @@ def __init__( self.elapsed_time = elapsed_time self.start_time = start_time self.end_time = end_time - self.inputs = self._convert_to_dict(copy.deepcopy(inputs)) + self.inputs = self._convert_to_dict(inputs) self.model_params = model_params - self.outputs = self._convert_to_dict(copy.deepcopy(outputs)) - self.context = copy.deepcopy(context or {}) + self.outputs = self._convert_to_dict(outputs) + self.context = self._convert_to_dict(context or {}) def _convert_to_dict(self, obj: Any) -> Any: if hasattr(obj, '__dict__'): + # Check for DynamicSchema Gentrace custom types + if hasattr(obj, 'from_openapi_data_oapg'): + # Primitive type + if not hasattr(obj, 'items'): + return obj + obj = {k: self._convert_to_dict(v) for k, v in obj.items()} + return obj + # Check for model_dump first (works for both v1 and v2) if hasattr(obj, 'model_dump'): return obj.model_dump() + # Fallback to dict() if model_dump is not available elif hasattr(obj, 'dict'): return obj.dict()