forked from aws/bedrock-agentcore-sdk-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
40 lines (29 loc) · 1.24 KB
/
Copy pathutils.py
File metadata and controls
40 lines (29 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""Bedrock AgentCore runtime utilities for object conversion and serialization."""
from dataclasses import asdict, is_dataclass
from typing import Any
def convert_complex_objects(obj: Any, _depth: int = 0) -> Any:
"""Recursively convert complex objects to serializable dictionaries."""
# Prevent infinite recursion
if _depth > 50:
return f"<too_deep:{type(obj).__name__}>"
# Handle Pydantic models (like AIMessage)
if hasattr(obj, "model_dump"):
return obj.model_dump()
# Handle dataclasses (like AgentResult)
elif is_dataclass(obj):
return asdict(obj)
# Handle dictionaries recursively
elif isinstance(obj, dict):
return {k: convert_complex_objects(v, _depth + 1) for k, v in obj.items()}
# Handle lists and tuples recursively
elif isinstance(obj, (list, tuple)):
return [convert_complex_objects(item, _depth + 1) for item in obj]
# Handle sets (convert to list)
elif isinstance(obj, set):
return [convert_complex_objects(item, _depth + 1) for item in obj]
# Return primitives as-is
else:
return obj
def is_valid_partition(partition: str) -> bool:
"""Returns if parsed-arn partition is valid."""
return partition in ("aws", "aws-us-gov")