scrapegraphai 2.1.2__tar.gz → 2.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/CHANGELOG.md +31 -0
  2. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/PKG-INFO +2 -2
  3. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/pyproject.toml +2 -2
  4. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/helpers/models_tokens.py +1 -5
  5. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/research_web.py +42 -7
  6. scrapegraphai-2.1.3/tests/test_minimax_models.py +62 -0
  7. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/uv.lock +269 -1449
  8. scrapegraphai-2.1.2/tests/test_minimax_models.py +0 -55
  9. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.gitattributes +0 -0
  10. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.github/FUNDING.yml +0 -0
  11. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  12. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.github/ISSUE_TEMPLATE/custom.md +0 -0
  13. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  14. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.github/workflows/codeql.yml +0 -0
  15. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.github/workflows/dependency-review.yml +0 -0
  16. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.github/workflows/release.yml +0 -0
  17. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.github/workflows/test-suite.yml +0 -0
  18. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.gitignore +0 -0
  19. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.pre-commit-config.yaml +0 -0
  20. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.releaserc.yml +0 -0
  21. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/.semantic-commits-applied +0 -0
  22. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/CODE_OF_CONDUCT.md +0 -0
  23. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/CONTRIBUTING.md +0 -0
  24. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/Dockerfile +0 -0
  25. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/LICENSE +0 -0
  26. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/Makefile +0 -0
  27. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/PullRequests/PR_1027_reviews.md +0 -0
  28. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/README.md +0 -0
  29. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/SECURITY.md +0 -0
  30. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/SEMANTIC_COMMITS.md +0 -0
  31. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/TESTING_INFRASTRUCTURE.md +0 -0
  32. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/citation.cff +0 -0
  33. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/codebeaver.yml +0 -0
  34. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docker-compose.yml +0 -0
  35. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/api-banner.png +0 -0
  36. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/api_banner.png +0 -0
  37. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/apikey_1.png +0 -0
  38. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/apikey_2.png +0 -0
  39. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/apikey_3.png +0 -0
  40. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/apikey_4.png +0 -0
  41. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/browserbase_logo.png +0 -0
  42. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/codespaces-badge.png +0 -0
  43. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/histogram.png +0 -0
  44. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/omniscrapergraph.png +0 -0
  45. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/omnisearchgraph.png +0 -0
  46. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/project_overview_diagram.fig +0 -0
  47. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/project_overview_diagram.png +0 -0
  48. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/scrapegraphai_logo.png +0 -0
  49. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/scrapegraphai_logo.svg +0 -0
  50. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/scriptcreatorgraph.png +0 -0
  51. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/searchgraph.png +0 -0
  52. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/sgai-hero.png +0 -0
  53. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/smartscrapergraph.png +0 -0
  54. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/assets/speechgraph.png +0 -0
  55. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/chinese.md +0 -0
  56. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/french.md +0 -0
  57. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/german.md +0 -0
  58. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/italian.md +0 -0
  59. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/japanese.md +0 -0
  60. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/korean.md +0 -0
  61. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/portuguese.md +0 -0
  62. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/russian.md +0 -0
  63. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/spanish.md +0 -0
  64. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/timeout_configuration.md +0 -0
  65. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/docs/turkish.md +0 -0
  66. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/ScrapegraphAI_cookbook.ipynb +0 -0
  67. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/code_generator_graph/.env.example +0 -0
  68. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/code_generator_graph/README.md +0 -0
  69. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/code_generator_graph/ollama/code_generator_graph_ollama.py +0 -0
  70. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/code_generator_graph/openai/code_generator_graph_openai.py +0 -0
  71. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/csv_scraper_graph/.env.example +0 -0
  72. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/csv_scraper_graph/README.md +0 -0
  73. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/csv_scraper_graph/ollama/csv_scraper_graph_multi_ollama.py +0 -0
  74. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/csv_scraper_graph/ollama/csv_scraper_ollama.py +0 -0
  75. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/csv_scraper_graph/ollama/inputs/username.csv +0 -0
  76. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/csv_scraper_graph/openai/csv_scraper_graph_multi_openai.py +0 -0
  77. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/csv_scraper_graph/openai/csv_scraper_openai.py +0 -0
  78. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/csv_scraper_graph/openai/inputs/username.csv +0 -0
  79. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/custom_graph/.env.example +0 -0
  80. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/custom_graph/README.md +0 -0
  81. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/custom_graph/ollama/custom_graph_ollama.py +0 -0
  82. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/custom_graph/openai/custom_graph_openai.py +0 -0
  83. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/depth_search_graph/.env.example +0 -0
  84. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/depth_search_graph/README.md +0 -0
  85. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/depth_search_graph/ollama/depth_search_graph_ollama.py +0 -0
  86. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/depth_search_graph/openai/depth_search_graph_openai.py +0 -0
  87. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/document_scraper_graph/.env.example +0 -0
  88. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/document_scraper_graph/README.md +0 -0
  89. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/document_scraper_graph/ollama/document_scraper_ollama.py +0 -0
  90. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/document_scraper_graph/ollama/inputs/plain_html_example.txt +0 -0
  91. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/document_scraper_graph/openai/document_scraper_openai.py +0 -0
  92. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/document_scraper_graph/openai/inputs/markdown_example.md +0 -0
  93. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/document_scraper_graph/openai/inputs/plain_html_example.txt +0 -0
  94. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/.env.example +0 -0
  95. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/Savedscreenshots/test_image.jpeg +0 -0
  96. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/authenticated_playwright.py +0 -0
  97. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/browser_base_integration.py +0 -0
  98. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/chromium_selenium.py +0 -0
  99. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/cond_smartscraper_usage.py +0 -0
  100. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/conditional_usage.py +0 -0
  101. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/custom_prompt.py +0 -0
  102. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/example.yml +0 -0
  103. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/force_mode.py +0 -0
  104. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/html_mode.py +0 -0
  105. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/load_yml.py +0 -0
  106. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/no_cut.py +0 -0
  107. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/proxy_rotation.py +0 -0
  108. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/rag_caching.py +0 -0
  109. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/reasoning.py +0 -0
  110. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/scrape_do.py +0 -0
  111. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/screenshot_scaping.py +0 -0
  112. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/serch_graph_scehma.py +0 -0
  113. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/slow_mo.py +0 -0
  114. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/extras/undected_playwright.py +0 -0
  115. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/.env.example +0 -0
  116. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/README.md +0 -0
  117. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/ollama/inputs/example.json +0 -0
  118. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/ollama/json_scraper_multi_ollama.py +0 -0
  119. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/ollama/json_scraper_ollama.py +0 -0
  120. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/openai/inputs/example.json +0 -0
  121. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/openai/json_scraper_multi_openai.py +0 -0
  122. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/openai/json_scraper_openai.py +0 -0
  123. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/openai/md_scraper_openai.py +0 -0
  124. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/json_scraper_graph/openai/omni_scraper_openai.py +0 -0
  125. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/markdownify/.env.example +0 -0
  126. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/markdownify/markdownify_scrapegraphai.py +0 -0
  127. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/markdownify/markdownify_scrapegraphai_v3.py +0 -0
  128. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/markdownify/readme.md +0 -0
  129. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/omni_scraper_graph/.env.example +0 -0
  130. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/omni_scraper_graph/README.md +0 -0
  131. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/omni_scraper_graph/omni_search_openai.py +0 -0
  132. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/readme.md +0 -0
  133. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/script_generator_graph/.env.example +0 -0
  134. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/script_generator_graph/README.md +0 -0
  135. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/script_generator_graph/ollama/script_generator_ollama.py +0 -0
  136. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/script_generator_graph/ollama/script_multi_generator_ollama.py +0 -0
  137. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/script_generator_graph/openai/script_generator_multi_openai.py +0 -0
  138. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/script_generator_graph/openai/script_generator_openai.py +0 -0
  139. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/script_generator_graph/openai/script_generator_schema_openai.py +0 -0
  140. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/.env.example +0 -0
  141. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/README.md +0 -0
  142. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/ollama/search_graph_ollama.py +0 -0
  143. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/ollama/search_graph_schema_ollama.py +0 -0
  144. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/openai/search_graph_openai.py +0 -0
  145. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/openai/search_graph_schema_openai.py +0 -0
  146. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/openai/search_link_graph_openai.py +0 -0
  147. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/scrapegraphai/.env.example +0 -0
  148. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/scrapegraphai/readme.md +0 -0
  149. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/scrapegraphai/searchscraper_scrapegraphai.py +0 -0
  150. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/search_graph/scrapegraphai/searchscraper_scrapegraphai_v3.py +0 -0
  151. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/.env.example +0 -0
  152. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/nvidia/smart_scraper_nvidia.py +0 -0
  153. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/ollama/smart_scraper_lite_ollama.py +0 -0
  154. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/ollama/smart_scraper_multi_concat_ollama.py +0 -0
  155. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/ollama/smart_scraper_multi_lite_ollama.py +0 -0
  156. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/ollama/smart_scraper_multi_ollama.py +0 -0
  157. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/ollama/smart_scraper_ollama.py +0 -0
  158. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/ollama/smart_scraper_schema_ollama.py +0 -0
  159. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/openai/smart_scraper_lite_openai.py +0 -0
  160. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/openai/smart_scraper_multi_concat_openai.py +0 -0
  161. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/openai/smart_scraper_multi_lite_openai.py +0 -0
  162. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/openai/smart_scraper_multi_openai.py +0 -0
  163. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/openai/smart_scraper_openai.py +0 -0
  164. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/openai/smart_scraper_schema_openai.py +0 -0
  165. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/scrapegraphai/.env.example +0 -0
  166. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/scrapegraphai/readme.md +0 -0
  167. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai.py +0 -0
  168. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai_v3.py +0 -0
  169. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/speech_graph/.env.example +0 -0
  170. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/speech_graph/README.md +0 -0
  171. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/speech_graph/speech_graph_openai.py +0 -0
  172. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/xml_scraper_graph/.env.example +0 -0
  173. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/xml_scraper_graph/README.md +0 -0
  174. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/xml_scraper_graph/ollama/inputs/books.xml +0 -0
  175. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/xml_scraper_graph/ollama/xml_scraper_graph_multi_ollama.py +0 -0
  176. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/xml_scraper_graph/ollama/xml_scraper_ollama.py +0 -0
  177. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/xml_scraper_graph/openai/inputs/books.xml +0 -0
  178. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/xml_scraper_graph/openai/xml_scraper_graph_multi_openai.py +0 -0
  179. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/examples/xml_scraper_graph/openai/xml_scraper_openai.py +0 -0
  180. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/media/banner.png +0 -0
  181. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/pytest.ini +0 -0
  182. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/__init__.py +0 -0
  183. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/builders/__init__.py +0 -0
  184. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/builders/graph_builder.py +0 -0
  185. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/docloaders/__init__.py +0 -0
  186. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/docloaders/browser_base.py +0 -0
  187. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/docloaders/chromium.py +0 -0
  188. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/docloaders/plasmate.py +0 -0
  189. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/docloaders/scrape_do.py +0 -0
  190. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/__init__.py +0 -0
  191. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/abstract_graph.py +0 -0
  192. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/base_graph.py +0 -0
  193. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/code_generator_graph.py +0 -0
  194. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/csv_scraper_graph.py +0 -0
  195. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/csv_scraper_multi_graph.py +0 -0
  196. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/depth_search_graph.py +0 -0
  197. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/document_scraper_graph.py +0 -0
  198. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/document_scraper_multi_graph.py +0 -0
  199. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/json_scraper_graph.py +0 -0
  200. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/json_scraper_multi_graph.py +0 -0
  201. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/markdownify_graph.py +0 -0
  202. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/omni_scraper_graph.py +0 -0
  203. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/omni_search_graph.py +0 -0
  204. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/screenshot_scraper_graph.py +0 -0
  205. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/script_creator_graph.py +0 -0
  206. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/script_creator_multi_graph.py +0 -0
  207. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/search_graph.py +0 -0
  208. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/search_link_graph.py +0 -0
  209. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/smart_scraper_graph.py +0 -0
  210. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/smart_scraper_lite_graph.py +0 -0
  211. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/smart_scraper_multi_batch_graph.py +0 -0
  212. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/smart_scraper_multi_concat_graph.py +0 -0
  213. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/smart_scraper_multi_graph.py +0 -0
  214. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/smart_scraper_multi_lite_graph.py +0 -0
  215. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/speech_graph.py +0 -0
  216. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/xml_scraper_graph.py +0 -0
  217. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/graphs/xml_scraper_multi_graph.py +0 -0
  218. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/helpers/__init__.py +0 -0
  219. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/helpers/default_filters.py +0 -0
  220. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/helpers/nodes_metadata.py +0 -0
  221. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/helpers/robots.py +0 -0
  222. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/helpers/schemas.py +0 -0
  223. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/integrations/__init__.py +0 -0
  224. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/integrations/burr_bridge.py +0 -0
  225. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/integrations/indexify_node.py +0 -0
  226. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/integrations/scrapegraph_py_compat.py +0 -0
  227. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/__init__.py +0 -0
  228. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/clod.py +0 -0
  229. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/deepseek.py +0 -0
  230. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/minimax.py +0 -0
  231. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/nvidia.py +0 -0
  232. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/oneapi.py +0 -0
  233. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/openai_itt.py +0 -0
  234. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/openai_tts.py +0 -0
  235. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/models/xai.py +0 -0
  236. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/__init__.py +0 -0
  237. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/base_node.py +0 -0
  238. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/batch_generate_answer_node.py +0 -0
  239. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/concat_answers_node.py +0 -0
  240. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/conditional_node.py +0 -0
  241. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/description_node.py +0 -0
  242. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/fetch_node.py +0 -0
  243. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/fetch_node_level_k.py +0 -0
  244. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/fetch_screen_node.py +0 -0
  245. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/generate_answer_csv_node.py +0 -0
  246. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/generate_answer_from_image_node.py +0 -0
  247. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/generate_answer_node.py +0 -0
  248. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/generate_answer_node_k_level.py +0 -0
  249. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/generate_answer_omni_node.py +0 -0
  250. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/generate_code_node.py +0 -0
  251. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/generate_scraper_node.py +0 -0
  252. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/get_probable_tags_node.py +0 -0
  253. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/graph_iterator_node.py +0 -0
  254. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/html_analyzer_node.py +0 -0
  255. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/image_to_text_node.py +0 -0
  256. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/markdownify_node.py +0 -0
  257. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/merge_answers_node.py +0 -0
  258. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/merge_generated_scripts_node.py +0 -0
  259. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/parse_node.py +0 -0
  260. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/parse_node_depth_k_node.py +0 -0
  261. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/prompt_refiner_node.py +0 -0
  262. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/rag_node.py +0 -0
  263. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/reasoning_node.py +0 -0
  264. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/robots_node.py +0 -0
  265. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/search_internet_node.py +0 -0
  266. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/search_link_node.py +0 -0
  267. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/search_node_with_context.py +0 -0
  268. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/nodes/text_to_speech_node.py +0 -0
  269. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/__init__.py +0 -0
  270. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/description_node_prompts.py +0 -0
  271. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/generate_answer_node_csv_prompts.py +0 -0
  272. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/generate_answer_node_omni_prompts.py +0 -0
  273. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/generate_answer_node_pdf_prompts.py +0 -0
  274. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/generate_answer_node_prompts.py +0 -0
  275. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/generate_code_node_prompts.py +0 -0
  276. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/get_probable_tags_node_prompts.py +0 -0
  277. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/html_analyzer_node_prompts.py +0 -0
  278. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/merge_answer_node_prompts.py +0 -0
  279. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/merge_generated_scripts_prompts.py +0 -0
  280. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/prompt_refiner_node_prompts.py +0 -0
  281. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/reasoning_node_prompts.py +0 -0
  282. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/robots_node_prompts.py +0 -0
  283. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/search_internet_node_prompts.py +0 -0
  284. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/search_link_node_prompts.py +0 -0
  285. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/prompts/search_node_with_context_prompts.py +0 -0
  286. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/telemetry/__init__.py +0 -0
  287. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/telemetry/telemetry.py +0 -0
  288. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/__init__.py +0 -0
  289. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/batch_api.py +0 -0
  290. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/cleanup_code.py +0 -0
  291. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/cleanup_html.py +0 -0
  292. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/code_error_analysis.py +0 -0
  293. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/code_error_correction.py +0 -0
  294. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/convert_to_md.py +0 -0
  295. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/copy.py +0 -0
  296. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/custom_callback.py +0 -0
  297. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/data_export.py +0 -0
  298. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/dict_content_compare.py +0 -0
  299. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/llm_callback_manager.py +0 -0
  300. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/logging.py +0 -0
  301. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/model_costs.py +0 -0
  302. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/output_parser.py +0 -0
  303. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/parse_state_keys.py +0 -0
  304. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/prettify_exec_info.py +0 -0
  305. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/proxy_rotation.py +0 -0
  306. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/save_audio_from_bytes.py +0 -0
  307. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/save_code_to_file.py +0 -0
  308. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/schema_trasform.py +0 -0
  309. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/screenshot_scraping/__init__.py +0 -0
  310. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/screenshot_scraping/screenshot_preparation.py +0 -0
  311. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/screenshot_scraping/text_detection.py +0 -0
  312. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/split_text_into_chunks.py +0 -0
  313. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/sys_dynamic_import.py +0 -0
  314. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/tokenizer.py +0 -0
  315. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/tokenizers/tokenizer_mistral.py +0 -0
  316. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/tokenizers/tokenizer_ollama.py +0 -0
  317. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/scrapegraphai/utils/tokenizers/tokenizer_openai.py +0 -0
  318. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/test +0 -0
  319. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/QUICKSTART.md +0 -0
  320. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/README_TESTING.md +0 -0
  321. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/Readme.md +0 -0
  322. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/conftest.py +0 -0
  323. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/fixtures/benchmarking.py +0 -0
  324. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/fixtures/helpers.py +0 -0
  325. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/fixtures/mock_server/__init__.py +0 -0
  326. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/fixtures/mock_server/server.py +0 -0
  327. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/.env.example +0 -0
  328. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/abstract_graph_test.py +0 -0
  329. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/code_generator_graph_openai_test.py +0 -0
  330. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/depth_search_graph_openai_test.py +0 -0
  331. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/inputs/books.xml +0 -0
  332. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/inputs/example.json +0 -0
  333. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/inputs/plain_html_example.txt +0 -0
  334. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/inputs/username.csv +0 -0
  335. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/scrape_plain_text_mistral_test.py +0 -0
  336. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/scrape_xml_ollama_test.py +0 -0
  337. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/screenshot_scraper_test.py +0 -0
  338. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/script_generator_test.py +0 -0
  339. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/search_graph_openai_test.py +0 -0
  340. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/search_link_ollama.py +0 -0
  341. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/smart_scraper_clod_test.py +0 -0
  342. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/smart_scraper_ernie_test.py +0 -0
  343. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/smart_scraper_fireworks_test.py +0 -0
  344. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/smart_scraper_multi_lite_graph_openai_test.py +0 -0
  345. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/smart_scraper_ollama_test.py +0 -0
  346. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/smart_scraper_openai_test.py +0 -0
  347. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/graphs/xml_scraper_openai_test.py +0 -0
  348. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/inputs/books.xml +0 -0
  349. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/inputs/example.json +0 -0
  350. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/inputs/plain_html_example.txt +0 -0
  351. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/inputs/username.csv +0 -0
  352. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/integration/__init__.py +0 -0
  353. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/integration/test_file_formats_integration.py +0 -0
  354. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/integration/test_multi_graph_integration.py +0 -0
  355. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/integration/test_smart_scraper_integration.py +0 -0
  356. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/nodes/fetch_node_test.py +0 -0
  357. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/nodes/inputs/books.xml +0 -0
  358. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/nodes/inputs/example.json +0 -0
  359. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/nodes/inputs/plain_html_example.txt +0 -0
  360. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/nodes/inputs/username.csv +0 -0
  361. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/nodes/robot_node_test.py +0 -0
  362. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/nodes/search_internet_node_test.py +0 -0
  363. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/nodes/search_link_node_test.py +0 -0
  364. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_batch_api.py +0 -0
  365. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_chromium.py +0 -0
  366. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_cleanup_html.py +0 -0
  367. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_csv_scraper_multi_graph.py +0 -0
  368. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_depth_search_graph.py +0 -0
  369. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_fetch_node_timeout.py +0 -0
  370. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_generate_answer_node.py +0 -0
  371. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_json_scraper_graph.py +0 -0
  372. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_json_scraper_multi_graph.py +0 -0
  373. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_models_tokens.py +0 -0
  374. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_omni_search_graph.py +0 -0
  375. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_plasmate.py +0 -0
  376. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_scrape_do.py +0 -0
  377. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_script_creator_multi_graph.py +0 -0
  378. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_search_graph.py +0 -0
  379. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/test_smart_scraper_multi_concat_graph.py +0 -0
  380. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/utils/convert_to_md_test.py +0 -0
  381. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/utils/copy_utils_test.py +0 -0
  382. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/utils/parse_state_keys_test.py +0 -0
  383. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/utils/research_web_test.py +0 -0
  384. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/utils/test_proxy_rotation.py +0 -0
  385. {scrapegraphai-2.1.2 → scrapegraphai-2.1.3}/tests/utils/test_sys_dynamic_import.py +0 -0
@@ -1,3 +1,34 @@
1
+ ## [2.1.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v2.1.2...v2.1.3) (2026-06-02)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **search:** restore SearchGraph by migrating DuckDuckGo backend to ddgs ([#1083](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1083)) ([2139e37](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/2139e37c0addfb9039e3b985bb33801f20e4e05b)), closes [#1082](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1082) [#1082](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1082)
7
+
8
+ ## [2.2.0-beta.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v2.2.0-beta.2...v2.2.0-beta.3) (2026-06-01)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **nodes:** update outdated ChatOllama import path to langchain_ollama ([#1076](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1076)) ([e6054cb](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/e6054cbf19a7fe940899ea70b30706f676f86fa7))
14
+
15
+
16
+ ### Docs
17
+
18
+ * 📚 Standardize and fix links across translated READMEs ([#1074](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1074)) ([458d36a](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/458d36a6b83f4a412206cdbe9935a059e9d47f57))
19
+
20
+
21
+ ### CI
22
+
23
+ * **release:** 2.1.2 [skip ci] ([210c992](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/210c99280048863774fa27053412185a5c18150d)), closes [#1076](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1076) [#1074](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1074)
24
+
25
+ ## [2.2.0-beta.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v2.2.0-beta.1...v2.2.0-beta.2) (2026-06-01)
26
+
27
+
28
+ ### Features
29
+
30
+ * upgrade MiniMax default model to M3 ([#1080](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1080)) ([1b16c26](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/1b16c268f4e9044c1386ccfaf67b38692b487e5a))
31
+
1
32
  ## [2.1.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v2.1.1...v2.1.2) (2026-06-01)
2
33
 
3
34
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: scrapegraphai
3
- Version: 2.1.2
3
+ Version: 2.1.3
4
4
  Summary: A web scraping library based on LangChain which uses LLM and direct graph logic to create scraping pipelines.
5
5
  Author-email: Marco Vinciguerra <mvincig11@gmail.com>, Lorenzo Padoan <lorenzo.padoan977@gmail.com>
6
6
  Keywords: ai,artificial intelligence,gpt,graph,langchain,llm,machine learning,natural language processing,nlp,openai,rag,scrapegraph,scrapegraphai,scraping,web scraping,web scraping library,web scraping tool,webscraping
@@ -11,7 +11,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
11
11
  Requires-Python: <4.0,>=3.12
12
12
  Requires-Dist: async-timeout>=4.0.0
13
13
  Requires-Dist: beautifulsoup4>=4.14.3
14
- Requires-Dist: duckduckgo-search>=8.1.1
14
+ Requires-Dist: ddgs>=9.0.0
15
15
  Requires-Dist: free-proxy>=1.1.3
16
16
  Requires-Dist: html2text>=2025.4.15
17
17
  Requires-Dist: jsonschema>=4.25.1
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "scrapegraphai"
3
3
 
4
- version = "2.1.2"
4
+ version = "2.1.3"
5
5
 
6
6
  description = "A web scraping library based on LangChain which uses LLM and direct graph logic to create scraping pipelines."
7
7
  authors = [
@@ -30,7 +30,7 @@ dependencies = [
30
30
  "async-timeout>=4.0.0",
31
31
  "simpleeval>=1.0.3",
32
32
  "jsonschema>=4.25.1",
33
- "duckduckgo-search>=8.1.1",
33
+ "ddgs>=9.0.0",
34
34
  "pydantic>=2.12.5",
35
35
  "scrapegraph-py>=2.0.0",
36
36
  ]
@@ -408,12 +408,8 @@ models_tokens = {
408
408
  "grok-beta": 128000,
409
409
  },
410
410
  "minimax": {
411
+ "MiniMax-M3": 524288,
411
412
  "MiniMax-M2.7": 204000,
412
413
  "MiniMax-M2.7-highspeed": 204000,
413
- "MiniMax-M1": 1000000,
414
- "MiniMax-M1-40k": 40000,
415
- "MiniMax-M2": 204000,
416
- "MiniMax-M2.5": 204000,
417
- "MiniMax-M2.5-highspeed": 204000,
418
414
  },
419
415
  }
@@ -11,7 +11,6 @@ from typing import Dict, List, Optional, Union
11
11
 
12
12
  import requests
13
13
  from bs4 import BeautifulSoup
14
- from langchain_community.tools import DuckDuckGoSearchResults
15
14
  from pydantic import BaseModel, Field, validator
16
15
 
17
16
 
@@ -215,12 +214,9 @@ def search_on_web(
215
214
 
216
215
  results = []
217
216
  if config.search_engine == "duckduckgo":
218
- # Create a DuckDuckGo search object with max_results
219
- research = DuckDuckGoSearchResults(max_results=config.max_results)
220
- # Run the search
221
- res = research.run(config.query)
222
- # Extract URLs using regex
223
- results = re.findall(r"https?://[^\s,\]]+", res)
217
+ results = _search_duckduckgo(
218
+ config.query, config.max_results, formatted_proxy
219
+ )
224
220
 
225
221
  elif config.search_engine == "bing":
226
222
  results = _search_bing(
@@ -247,6 +243,45 @@ def search_on_web(
247
243
  raise SearchConfigError(f"Invalid search configuration: {str(e)}")
248
244
 
249
245
 
246
+ def _search_duckduckgo(
247
+ query: str, max_results: int, proxy: Optional[str] = None
248
+ ) -> List[str]:
249
+ """
250
+ Helper function for DuckDuckGo search using the ``ddgs`` package.
251
+
252
+ The ``duckduckgo-search`` package was renamed to ``ddgs``; recent
253
+ ``langchain-community`` releases import ``from ddgs import DDGS``, which
254
+ silently broke the previous langchain-based implementation. This calls
255
+ ``ddgs`` directly so results no longer depend on parsing a formatted string.
256
+
257
+ Args:
258
+ query (str): Search query
259
+ max_results (int): Maximum number of results to return
260
+ proxy (str, optional): Proxy configuration
261
+
262
+ Returns:
263
+ List[str]: List of URLs from search results
264
+ """
265
+ try:
266
+ from ddgs import DDGS
267
+ except ImportError as e:
268
+ raise ImportError(
269
+ "Could not import the 'ddgs' package required for DuckDuckGo "
270
+ "search. Please install it with `pip install -U ddgs`."
271
+ ) from e
272
+
273
+ try:
274
+ with DDGS(proxy=proxy) as ddgs:
275
+ results = [
276
+ result["href"]
277
+ for result in ddgs.text(query, max_results=max_results)
278
+ if result.get("href")
279
+ ]
280
+ return results
281
+ except Exception as e:
282
+ raise SearchRequestError(f"DuckDuckGo search failed: {str(e)}")
283
+
284
+
250
285
  def _search_bing(
251
286
  query: str, max_results: int, timeout: int, proxy: Optional[str] = None
252
287
  ) -> List[str]:
@@ -0,0 +1,62 @@
1
+ """Tests for MiniMax model configuration."""
2
+
3
+ import importlib.util
4
+ import os
5
+ import sys
6
+
7
+ import pytest
8
+
9
+
10
+ @pytest.fixture(scope="module")
11
+ def models_tokens():
12
+ """Import models_tokens directly to avoid triggering the full package init."""
13
+ spec = importlib.util.spec_from_file_location(
14
+ "models_tokens",
15
+ os.path.join(
16
+ os.path.dirname(__file__),
17
+ "..",
18
+ "scrapegraphai",
19
+ "helpers",
20
+ "models_tokens.py",
21
+ ),
22
+ )
23
+ module = importlib.util.module_from_spec(spec)
24
+ spec.loader.exec_module(module)
25
+ return module.models_tokens
26
+
27
+
28
+ def test_minimax_m3_in_model_list(models_tokens):
29
+ """MiniMax-M3 should be in the model list."""
30
+ minimax_models = models_tokens["minimax"]
31
+ assert "MiniMax-M3" in minimax_models
32
+
33
+
34
+ def test_minimax_m3_listed_first(models_tokens):
35
+ """MiniMax-M3 should be the first (default) model in the minimax dict."""
36
+ minimax_models = list(models_tokens["minimax"].keys())
37
+ assert minimax_models[0] == "MiniMax-M3"
38
+
39
+
40
+ def test_minimax_m27_still_available(models_tokens):
41
+ """MiniMax-M2.7 and its highspeed variant should remain as legacy options."""
42
+ minimax_models = models_tokens["minimax"]
43
+ assert "MiniMax-M2.7" in minimax_models
44
+ assert "MiniMax-M2.7-highspeed" in minimax_models
45
+
46
+
47
+ def test_minimax_deprecated_models_removed(models_tokens):
48
+ """Older deprecated MiniMax models should be removed from the list."""
49
+ minimax_models = models_tokens["minimax"]
50
+ assert "MiniMax-M2.5" not in minimax_models
51
+ assert "MiniMax-M2.5-highspeed" not in minimax_models
52
+ assert "MiniMax-M2" not in minimax_models
53
+ assert "MiniMax-M1" not in minimax_models
54
+ assert "MiniMax-M1-40k" not in minimax_models
55
+
56
+
57
+ def test_minimax_token_limits(models_tokens):
58
+ """MiniMax model token limits should match upstream documentation."""
59
+ minimax_models = models_tokens["minimax"]
60
+ assert minimax_models["MiniMax-M3"] == 524288
61
+ assert minimax_models["MiniMax-M2.7"] == 204000
62
+ assert minimax_models["MiniMax-M2.7-highspeed"] == 204000