MCPcopy
hub / github.com/ScrapeGraphAI/Scrapegraph-ai / safe_deepcopy

Function safe_deepcopy

scrapegraphai/utils/copy.py:35–71  ·  view source on GitHub ↗

Safely create a deep copy of an object, handling special cases. Args: obj: Object to copy Returns: Deep copy of the object Raises: DeepCopyError: If object cannot be deep copied

(obj: Any)

Source from the content-addressed store, hash-verified

33
34
35def safe_deepcopy(obj: Any) -> Any:
36 """
37 Safely create a deep copy of an object, handling special cases.
38
39 Args:
40 obj: Object to copy
41
42 Returns:
43 Deep copy of the object
44
45 Raises:
46 DeepCopyError: If object cannot be deep copied
47 """
48 try:
49 # Handle special cases first
50 if obj is None or isinstance(obj, (str, int, float, bool)):
51 return obj
52
53 if isinstance(obj, (list, set)):
54 return type(obj)(safe_deepcopy(v) for v in obj)
55
56 if isinstance(obj, dict):
57 return {k: safe_deepcopy(v) for k, v in obj.items()}
58
59 if isinstance(obj, tuple):
60 return tuple(safe_deepcopy(v) for v in obj)
61
62 if isinstance(obj, frozenset):
63 return frozenset(safe_deepcopy(v) for v in obj)
64
65 if is_boto3_client(obj):
66 return obj
67
68 return copy.copy(obj)
69
70 except Exception as e:
71 raise DeepCopyError(f"Cannot deep copy object of type {type(obj)}") from e

Calls 2

is_boto3_clientFunction · 0.85
DeepCopyErrorClass · 0.85