Skip to content

Commit d1926a4

Browse files
committed
fix: deepcopy fail for coping model_instance config
1 parent 4f4d091 commit d1926a4

9 files changed

+27
-45
lines changed

scrapegraphai/graphs/csv_scraper_multi_graph.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22
CSVScraperMultiGraph Module
33
"""
44

5-
from copy import copy, deepcopy
65
from typing import List, Optional
76
from pydantic import BaseModel
7+
8+
89
from .base_graph import BaseGraph
910
from .abstract_graph import AbstractGraph
1011
from .csv_scraper_graph import CSVScraperGraph
1112
from ..nodes import (
1213
GraphIteratorNode,
1314
MergeAnswersNode
1415
)
16+
from ..utils.copy import safe_deepcopy
1517

1618
class CSVScraperMultiGraph(AbstractGraph):
1719
"""
@@ -46,10 +48,7 @@ def __init__(self, prompt: str, source: List[str],
4648

4749
self.max_results = config.get("max_results", 3)
4850

49-
if all(isinstance(value, str) for value in config.values()):
50-
self.copy_config = copy(config)
51-
else:
52-
self.copy_config = deepcopy(config)
51+
self.copy_config = safe_deepcopy(self.copy_config)
5352

5453
super().__init__(prompt, config, source, schema)
5554

scrapegraphai/graphs/json_scraper_multi_graph.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22
JSONScraperMultiGraph Module
33
"""
44

5-
from copy import copy, deepcopy
5+
from copy import deepcopy
66
from typing import List, Optional
77
from pydantic import BaseModel
8+
89
from .base_graph import BaseGraph
910
from .abstract_graph import AbstractGraph
1011
from .json_scraper_graph import JSONScraperGraph
1112
from ..nodes import (
1213
GraphIteratorNode,
1314
MergeAnswersNode
1415
)
16+
from ..utils.copy import safe_deepcopy
1517

1618
class JSONScraperMultiGraph(AbstractGraph):
1719
"""
@@ -45,10 +47,7 @@ def __init__(self, prompt: str, source: List[str], config: dict, schema: Optiona
4547

4648
self.max_results = config.get("max_results", 3)
4749

48-
if all(isinstance(value, str) for value in config.values()):
49-
self.copy_config = copy(config)
50-
else:
51-
self.copy_config = deepcopy(config)
50+
self.copy_config = safe_deepcopy(self.copy_config)
5251

5352
self.copy_schema = deepcopy(schema)
5453

scrapegraphai/graphs/markdown_scraper_multi_graph.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
GraphIteratorNode,
1313
MergeAnswersNode
1414
)
15+
from ..utils.copy import safe_deepcopy
1516

1617
class MDScraperMultiGraph(AbstractGraph):
1718
"""
@@ -42,11 +43,7 @@ class MDScraperMultiGraph(AbstractGraph):
4243
"""
4344

4445
def __init__(self, prompt: str, source: List[str], config: dict, schema: Optional[BaseModel] = None):
45-
if all(isinstance(value, str) for value in config.values()):
46-
self.copy_config = copy(config)
47-
else:
48-
self.copy_config = deepcopy(config)
49-
46+
self.copy_config = safe_deepcopy(self.copy_config)
5047
self.copy_schema = deepcopy(schema)
5148

5249
super().__init__(prompt, config, source, schema)

scrapegraphai/graphs/omni_search_graph.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
OmniSearchGraph Module
33
"""
44

5-
from copy import copy, deepcopy
5+
from copy import deepcopy
66
from typing import Optional
77
from pydantic import BaseModel
88

@@ -15,6 +15,7 @@
1515
GraphIteratorNode,
1616
MergeAnswersNode
1717
)
18+
from ..utils.copy import safe_deepcopy
1819

1920

2021
class OmniSearchGraph(AbstractGraph):
@@ -48,10 +49,7 @@ def __init__(self, prompt: str, config: dict, schema: Optional[BaseModel] = None
4849

4950
self.max_results = config.get("max_results", 3)
5051

51-
if all(isinstance(value, str) for value in config.values()):
52-
self.copy_config = copy(config)
53-
else:
54-
self.copy_config = deepcopy(config)
52+
self.copy_config = safe_deepcopy(self.copy_config)
5553

5654
self.copy_schema = deepcopy(schema)
5755

scrapegraphai/graphs/pdf_scraper_multi_graph.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
PdfScraperMultiGraph Module
33
"""
44

5-
from copy import copy, deepcopy
5+
from copy import deepcopy
66
from typing import List, Optional
77
from pydantic import BaseModel
88
from .base_graph import BaseGraph
@@ -12,6 +12,7 @@
1212
GraphIteratorNode,
1313
MergeAnswersNode
1414
)
15+
from ..utils.copy import safe_deepcopy
1516

1617
class PdfScraperMultiGraph(AbstractGraph):
1718
"""
@@ -44,10 +45,7 @@ class PdfScraperMultiGraph(AbstractGraph):
4445
def __init__(self, prompt: str, source: List[str],
4546
config: dict, schema: Optional[BaseModel] = None):
4647

47-
if all(isinstance(value, str) for value in config.values()):
48-
self.copy_config = copy(config)
49-
else:
50-
self.copy_config = deepcopy(config)
48+
self.copy_config = safe_deepcopy(self.copy_config)
5149

5250
self.copy_schema = deepcopy(schema)
5351

scrapegraphai/graphs/script_creator_multi_graph.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
ScriptCreatorMultiGraph Module
33
"""
44

5-
from copy import copy, deepcopy
65
from typing import List, Optional
76

87
from pydantic import BaseModel
@@ -15,6 +14,7 @@
1514
GraphIteratorNode,
1615
MergeGeneratedScriptsNode
1716
)
17+
from ..utils.copy import safe_deepcopy
1818

1919
class ScriptCreatorMultiGraph(AbstractGraph):
2020
"""
@@ -47,10 +47,7 @@ def __init__(self, prompt: str, source: List[str], config: dict, schema: Optiona
4747

4848
self.max_results = config.get("max_results", 3)
4949

50-
if all(isinstance(value, str) for value in config.values()):
51-
self.copy_config = copy(config)
52-
else:
53-
self.copy_config = deepcopy(config)
50+
self.copy_config = safe_deepcopy(self.copy_config)
5451

5552
super().__init__(prompt, config, source, schema)
5653

scrapegraphai/graphs/search_graph.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
SearchGraph Module
33
"""
44

5-
from copy import copy, deepcopy
5+
from copy import deepcopy
66
from typing import Optional, List
77
from pydantic import BaseModel
88

@@ -15,6 +15,7 @@
1515
GraphIteratorNode,
1616
MergeAnswersNode
1717
)
18+
from ..utils.copy import safe_deepcopy
1819

1920
class SearchGraph(AbstractGraph):
2021
"""
@@ -47,10 +48,7 @@ class SearchGraph(AbstractGraph):
4748
def __init__(self, prompt: str, config: dict, schema: Optional[BaseModel] = None):
4849
self.max_results = config.get("max_results", 3)
4950

50-
if all(isinstance(value, str) for value in config.values()):
51-
self.copy_config = copy(config)
52-
else:
53-
self.copy_config = deepcopy(config)
51+
self.copy_config = safe_deepcopy(self.copy_config)
5452
self.copy_schema = deepcopy(schema)
5553
self.considered_urls = [] # New attribute to store URLs
5654

scrapegraphai/graphs/smart_scraper_multi_graph.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
SmartScraperMultiGraph Module
33
"""
44

5-
from copy import copy, deepcopy
5+
from copy import deepcopy
66
from typing import List, Optional
77
from pydantic import BaseModel
88

@@ -14,6 +14,7 @@
1414
GraphIteratorNode,
1515
MergeAnswersNode
1616
)
17+
from ..utils.copy import safe_deepcopy
1718

1819
class SmartScraperMultiGraph(AbstractGraph):
1920
"""
@@ -48,10 +49,7 @@ def __init__(self, prompt: str, source: List[str],
4849

4950
self.max_results = config.get("max_results", 3)
5051

51-
if all(isinstance(value, str) for value in config.values()):
52-
self.copy_config = copy(config)
53-
else:
54-
self.copy_config = deepcopy(config)
52+
self.copy_config = safe_deepcopy(self.copy_config)
5553

5654
self.copy_schema = deepcopy(schema)
5755

scrapegraphai/graphs/xml_scraper_multi_graph.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
XMLScraperMultiGraph Module
33
"""
44

5-
from copy import copy, deepcopy
5+
from copy import deepcopy
66
from typing import List, Optional
77
from pydantic import BaseModel
88

@@ -14,6 +14,7 @@
1414
GraphIteratorNode,
1515
MergeAnswersNode
1616
)
17+
from ..utils.copy import safe_deepcopy
1718

1819
class XMLScraperMultiGraph(AbstractGraph):
1920
"""
@@ -46,10 +47,7 @@ class XMLScraperMultiGraph(AbstractGraph):
4647
def __init__(self, prompt: str, source: List[str],
4748
config: dict, schema: Optional[BaseModel] = None):
4849

49-
if all(isinstance(value, str) for value in config.values()):
50-
self.copy_config = copy(config)
51-
else:
52-
self.copy_config = deepcopy(config)
50+
self.copy_config = safe_deepcopy(self.copy_config)
5351

5452
self.copy_schema = deepcopy(schema)
5553

0 commit comments

Comments
 (0)