scrapegraphai 2.2.2__tar.gz → 2.2.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 (390) hide show
  1. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/CHANGELOG.md +12 -0
  2. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/PKG-INFO +1 -1
  3. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/chinese.md +6 -0
  4. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/french.md +6 -0
  5. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/german.md +6 -0
  6. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/italian.md +6 -0
  7. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/japanese.md +6 -0
  8. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/korean.md +6 -0
  9. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/portuguese.md +6 -0
  10. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/russian.md +6 -0
  11. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/spanish.md +6 -0
  12. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/turkish.md +6 -0
  13. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/pyproject.toml +1 -1
  14. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/proxy_rotation.py +11 -6
  15. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/utils/test_proxy_rotation.py +13 -2
  16. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.gitattributes +0 -0
  17. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.github/FUNDING.yml +0 -0
  18. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.github/ISSUE_TEMPLATE/custom.md +0 -0
  20. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  21. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.github/workflows/codeql.yml +0 -0
  22. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.github/workflows/dependency-review.yml +0 -0
  23. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.github/workflows/release.yml +0 -0
  24. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.github/workflows/test-suite.yml +0 -0
  25. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.gitignore +0 -0
  26. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.pre-commit-config.yaml +0 -0
  27. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.releaserc.yml +0 -0
  28. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/.semantic-commits-applied +0 -0
  29. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/AGENTS.md +0 -0
  30. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/CODE_OF_CONDUCT.md +0 -0
  31. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/CONTRIBUTING.md +0 -0
  32. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/Dockerfile +0 -0
  33. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/LICENSE +0 -0
  34. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/Makefile +0 -0
  35. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/PullRequests/PR_1027_reviews.md +0 -0
  36. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/README.md +0 -0
  37. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/SECURITY.md +0 -0
  38. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/SEMANTIC_COMMITS.md +0 -0
  39. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/TESTING_INFRASTRUCTURE.md +0 -0
  40. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/citation.cff +0 -0
  41. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/codebeaver.yml +0 -0
  42. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docker-compose.yml +0 -0
  43. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/api-banner.png +0 -0
  44. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/api_banner.png +0 -0
  45. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/apikey_1.png +0 -0
  46. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/apikey_2.png +0 -0
  47. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/apikey_3.png +0 -0
  48. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/apikey_4.png +0 -0
  49. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/browserbase_logo.png +0 -0
  50. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/codespaces-badge.png +0 -0
  51. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/histogram.png +0 -0
  52. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/nodemaven-banner.png +0 -0
  53. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/omniscrapergraph.png +0 -0
  54. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/omnisearchgraph.png +0 -0
  55. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/project_overview_diagram.fig +0 -0
  56. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/project_overview_diagram.png +0 -0
  57. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/scrapegraphai_logo.png +0 -0
  58. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/scrapegraphai_logo.svg +0 -0
  59. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/scriptcreatorgraph.png +0 -0
  60. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/searchgraph.png +0 -0
  61. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/sgai-hero.png +0 -0
  62. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/smartscrapergraph.png +0 -0
  63. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/assets/speechgraph.png +0 -0
  64. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/docs/timeout_configuration.md +0 -0
  65. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/ScrapegraphAI_cookbook.ipynb +0 -0
  66. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/code_generator_graph/.env.example +0 -0
  67. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/code_generator_graph/README.md +0 -0
  68. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/code_generator_graph/ollama/code_generator_graph_ollama.py +0 -0
  69. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/code_generator_graph/openai/code_generator_graph_openai.py +0 -0
  70. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/csv_scraper_graph/.env.example +0 -0
  71. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/csv_scraper_graph/README.md +0 -0
  72. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/csv_scraper_graph/ollama/csv_scraper_graph_multi_ollama.py +0 -0
  73. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/csv_scraper_graph/ollama/csv_scraper_ollama.py +0 -0
  74. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/csv_scraper_graph/ollama/inputs/username.csv +0 -0
  75. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/csv_scraper_graph/openai/csv_scraper_graph_multi_openai.py +0 -0
  76. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/csv_scraper_graph/openai/csv_scraper_openai.py +0 -0
  77. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/csv_scraper_graph/openai/inputs/username.csv +0 -0
  78. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/custom_graph/.env.example +0 -0
  79. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/custom_graph/README.md +0 -0
  80. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/custom_graph/ollama/custom_graph_ollama.py +0 -0
  81. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/custom_graph/openai/custom_graph_openai.py +0 -0
  82. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/depth_search_graph/.env.example +0 -0
  83. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/depth_search_graph/README.md +0 -0
  84. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/depth_search_graph/ollama/depth_search_graph_ollama.py +0 -0
  85. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/depth_search_graph/openai/depth_search_graph_openai.py +0 -0
  86. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/document_scraper_graph/.env.example +0 -0
  87. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/document_scraper_graph/README.md +0 -0
  88. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/document_scraper_graph/ollama/document_scraper_ollama.py +0 -0
  89. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/document_scraper_graph/ollama/inputs/plain_html_example.txt +0 -0
  90. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/document_scraper_graph/openai/document_scraper_openai.py +0 -0
  91. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/document_scraper_graph/openai/inputs/markdown_example.md +0 -0
  92. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/document_scraper_graph/openai/inputs/plain_html_example.txt +0 -0
  93. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/.env.example +0 -0
  94. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/Savedscreenshots/test_image.jpeg +0 -0
  95. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/authenticated_playwright.py +0 -0
  96. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/browser_base_integration.py +0 -0
  97. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/chromium_selenium.py +0 -0
  98. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/cond_smartscraper_usage.py +0 -0
  99. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/conditional_usage.py +0 -0
  100. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/custom_prompt.py +0 -0
  101. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/example.yml +0 -0
  102. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/force_mode.py +0 -0
  103. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/html_mode.py +0 -0
  104. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/load_yml.py +0 -0
  105. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/no_cut.py +0 -0
  106. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/proxy_rotation.py +0 -0
  107. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/rag_caching.py +0 -0
  108. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/reasoning.py +0 -0
  109. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/scrape_do.py +0 -0
  110. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/screenshot_scaping.py +0 -0
  111. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/serch_graph_scehma.py +0 -0
  112. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/slow_mo.py +0 -0
  113. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/extras/undected_playwright.py +0 -0
  114. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/.env.example +0 -0
  115. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/README.md +0 -0
  116. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/ollama/inputs/example.json +0 -0
  117. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/ollama/json_scraper_multi_ollama.py +0 -0
  118. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/ollama/json_scraper_ollama.py +0 -0
  119. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/openai/inputs/example.json +0 -0
  120. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/openai/json_scraper_multi_openai.py +0 -0
  121. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/openai/json_scraper_openai.py +0 -0
  122. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/openai/md_scraper_openai.py +0 -0
  123. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/json_scraper_graph/openai/omni_scraper_openai.py +0 -0
  124. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/markdownify/.env.example +0 -0
  125. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/markdownify/markdownify_scrapegraphai.py +0 -0
  126. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/markdownify/markdownify_scrapegraphai_v3.py +0 -0
  127. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/markdownify/readme.md +0 -0
  128. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/omni_scraper_graph/.env.example +0 -0
  129. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/omni_scraper_graph/README.md +0 -0
  130. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/omni_scraper_graph/omni_search_openai.py +0 -0
  131. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/readme.md +0 -0
  132. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/script_generator_graph/.env.example +0 -0
  133. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/script_generator_graph/README.md +0 -0
  134. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/script_generator_graph/ollama/script_generator_ollama.py +0 -0
  135. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/script_generator_graph/ollama/script_multi_generator_ollama.py +0 -0
  136. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/script_generator_graph/openai/script_generator_multi_openai.py +0 -0
  137. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/script_generator_graph/openai/script_generator_openai.py +0 -0
  138. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/script_generator_graph/openai/script_generator_schema_openai.py +0 -0
  139. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/.env.example +0 -0
  140. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/README.md +0 -0
  141. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/ollama/search_graph_ollama.py +0 -0
  142. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/ollama/search_graph_schema_ollama.py +0 -0
  143. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/openai/search_graph_openai.py +0 -0
  144. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/openai/search_graph_schema_openai.py +0 -0
  145. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/openai/search_link_graph_openai.py +0 -0
  146. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/scrapegraphai/.env.example +0 -0
  147. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/scrapegraphai/readme.md +0 -0
  148. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/scrapegraphai/searchscraper_scrapegraphai.py +0 -0
  149. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/search_graph/scrapegraphai/searchscraper_scrapegraphai_v3.py +0 -0
  150. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/.env.example +0 -0
  151. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/nvidia/smart_scraper_nvidia.py +0 -0
  152. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/ollama/smart_scraper_lite_ollama.py +0 -0
  153. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/ollama/smart_scraper_multi_concat_ollama.py +0 -0
  154. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/ollama/smart_scraper_multi_lite_ollama.py +0 -0
  155. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/ollama/smart_scraper_multi_ollama.py +0 -0
  156. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/ollama/smart_scraper_ollama.py +0 -0
  157. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/ollama/smart_scraper_schema_ollama.py +0 -0
  158. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/openai/smart_scraper_lite_openai.py +0 -0
  159. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/openai/smart_scraper_multi_concat_openai.py +0 -0
  160. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/openai/smart_scraper_multi_lite_openai.py +0 -0
  161. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/openai/smart_scraper_multi_openai.py +0 -0
  162. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/openai/smart_scraper_openai.py +0 -0
  163. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/openai/smart_scraper_schema_openai.py +0 -0
  164. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/scrapegraphai/.env.example +0 -0
  165. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/scrapegraphai/readme.md +0 -0
  166. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai.py +0 -0
  167. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai_v3.py +0 -0
  168. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/speech_graph/.env.example +0 -0
  169. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/speech_graph/README.md +0 -0
  170. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/speech_graph/speech_graph_openai.py +0 -0
  171. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/xml_scraper_graph/.env.example +0 -0
  172. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/xml_scraper_graph/README.md +0 -0
  173. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/xml_scraper_graph/ollama/inputs/books.xml +0 -0
  174. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/xml_scraper_graph/ollama/xml_scraper_graph_multi_ollama.py +0 -0
  175. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/xml_scraper_graph/ollama/xml_scraper_ollama.py +0 -0
  176. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/xml_scraper_graph/openai/inputs/books.xml +0 -0
  177. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/xml_scraper_graph/openai/xml_scraper_graph_multi_openai.py +0 -0
  178. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/examples/xml_scraper_graph/openai/xml_scraper_openai.py +0 -0
  179. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/media/banner.png +0 -0
  180. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/pytest.ini +0 -0
  181. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/__init__.py +0 -0
  182. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/builders/__init__.py +0 -0
  183. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/builders/graph_builder.py +0 -0
  184. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/docloaders/__init__.py +0 -0
  185. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/docloaders/browser_base.py +0 -0
  186. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/docloaders/chromium.py +0 -0
  187. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/docloaders/plasmate.py +0 -0
  188. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/docloaders/scrape_do.py +0 -0
  189. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/__init__.py +0 -0
  190. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/abstract_graph.py +0 -0
  191. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/base_graph.py +0 -0
  192. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/code_generator_graph.py +0 -0
  193. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/csv_scraper_graph.py +0 -0
  194. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/csv_scraper_multi_graph.py +0 -0
  195. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/depth_search_graph.py +0 -0
  196. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/document_scraper_graph.py +0 -0
  197. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/document_scraper_multi_graph.py +0 -0
  198. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/json_scraper_graph.py +0 -0
  199. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/json_scraper_multi_graph.py +0 -0
  200. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/markdownify_graph.py +0 -0
  201. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/omni_scraper_graph.py +0 -0
  202. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/omni_search_graph.py +0 -0
  203. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/screenshot_scraper_graph.py +0 -0
  204. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/script_creator_graph.py +0 -0
  205. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/script_creator_multi_graph.py +0 -0
  206. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/search_graph.py +0 -0
  207. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/search_link_graph.py +0 -0
  208. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/smart_scraper_graph.py +0 -0
  209. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/smart_scraper_lite_graph.py +0 -0
  210. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/smart_scraper_multi_batch_graph.py +0 -0
  211. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/smart_scraper_multi_concat_graph.py +0 -0
  212. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/smart_scraper_multi_graph.py +0 -0
  213. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/smart_scraper_multi_lite_graph.py +0 -0
  214. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/speech_graph.py +0 -0
  215. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/xml_scraper_graph.py +0 -0
  216. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/graphs/xml_scraper_multi_graph.py +0 -0
  217. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/helpers/__init__.py +0 -0
  218. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/helpers/default_filters.py +0 -0
  219. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/helpers/models_tokens.py +0 -0
  220. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/helpers/nodes_metadata.py +0 -0
  221. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/helpers/robots.py +0 -0
  222. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/helpers/schemas.py +0 -0
  223. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/integrations/__init__.py +0 -0
  224. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/integrations/burr_bridge.py +0 -0
  225. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/integrations/indexify_node.py +0 -0
  226. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/integrations/scrapegraph_py_compat.py +0 -0
  227. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/__init__.py +0 -0
  228. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/atlascloud.py +0 -0
  229. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/clod.py +0 -0
  230. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/deepseek.py +0 -0
  231. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/minimax.py +0 -0
  232. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/nvidia.py +0 -0
  233. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/oneapi.py +0 -0
  234. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/openai_itt.py +0 -0
  235. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/openai_tts.py +0 -0
  236. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/models/xai.py +0 -0
  237. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/__init__.py +0 -0
  238. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/base_node.py +0 -0
  239. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/batch_generate_answer_node.py +0 -0
  240. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/concat_answers_node.py +0 -0
  241. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/conditional_node.py +0 -0
  242. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/description_node.py +0 -0
  243. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/fetch_node.py +0 -0
  244. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/fetch_node_level_k.py +0 -0
  245. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/fetch_screen_node.py +0 -0
  246. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/generate_answer_csv_node.py +0 -0
  247. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/generate_answer_from_image_node.py +0 -0
  248. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/generate_answer_node.py +0 -0
  249. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/generate_answer_node_k_level.py +0 -0
  250. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/generate_answer_omni_node.py +0 -0
  251. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/generate_code_node.py +0 -0
  252. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/generate_scraper_node.py +0 -0
  253. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/get_probable_tags_node.py +0 -0
  254. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/graph_iterator_node.py +0 -0
  255. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/html_analyzer_node.py +0 -0
  256. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/image_to_text_node.py +0 -0
  257. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/markdownify_node.py +0 -0
  258. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/merge_answers_node.py +0 -0
  259. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/merge_generated_scripts_node.py +0 -0
  260. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/parse_node.py +0 -0
  261. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/parse_node_depth_k_node.py +0 -0
  262. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/prompt_refiner_node.py +0 -0
  263. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/rag_node.py +0 -0
  264. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/reasoning_node.py +0 -0
  265. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/robots_node.py +0 -0
  266. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/search_internet_node.py +0 -0
  267. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/search_link_node.py +0 -0
  268. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/search_node_with_context.py +0 -0
  269. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/nodes/text_to_speech_node.py +0 -0
  270. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/__init__.py +0 -0
  271. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/description_node_prompts.py +0 -0
  272. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/generate_answer_node_csv_prompts.py +0 -0
  273. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/generate_answer_node_omni_prompts.py +0 -0
  274. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/generate_answer_node_pdf_prompts.py +0 -0
  275. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/generate_answer_node_prompts.py +0 -0
  276. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/generate_code_node_prompts.py +0 -0
  277. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/get_probable_tags_node_prompts.py +0 -0
  278. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/html_analyzer_node_prompts.py +0 -0
  279. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/merge_answer_node_prompts.py +0 -0
  280. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/merge_generated_scripts_prompts.py +0 -0
  281. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/prompt_refiner_node_prompts.py +0 -0
  282. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/reasoning_node_prompts.py +0 -0
  283. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/robots_node_prompts.py +0 -0
  284. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/search_internet_node_prompts.py +0 -0
  285. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/search_link_node_prompts.py +0 -0
  286. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/prompts/search_node_with_context_prompts.py +0 -0
  287. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/telemetry/__init__.py +0 -0
  288. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/telemetry/telemetry.py +0 -0
  289. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/__init__.py +0 -0
  290. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/batch_api.py +0 -0
  291. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/cleanup_code.py +0 -0
  292. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/cleanup_html.py +0 -0
  293. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/code_error_analysis.py +0 -0
  294. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/code_error_correction.py +0 -0
  295. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/convert_to_md.py +0 -0
  296. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/copy.py +0 -0
  297. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/custom_callback.py +0 -0
  298. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/data_export.py +0 -0
  299. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/dict_content_compare.py +0 -0
  300. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/llm_callback_manager.py +0 -0
  301. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/logging.py +0 -0
  302. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/model_costs.py +0 -0
  303. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/output_parser.py +0 -0
  304. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/parse_state_keys.py +0 -0
  305. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/prettify_exec_info.py +0 -0
  306. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/research_web.py +0 -0
  307. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/save_audio_from_bytes.py +0 -0
  308. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/save_code_to_file.py +0 -0
  309. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/schema_trasform.py +0 -0
  310. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/screenshot_scraping/__init__.py +0 -0
  311. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/screenshot_scraping/screenshot_preparation.py +0 -0
  312. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/screenshot_scraping/text_detection.py +0 -0
  313. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/split_text_into_chunks.py +0 -0
  314. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/sys_dynamic_import.py +0 -0
  315. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/tokenizer.py +0 -0
  316. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/tokenizers/tokenizer_mistral.py +0 -0
  317. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/tokenizers/tokenizer_ollama.py +0 -0
  318. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/scrapegraphai/utils/tokenizers/tokenizer_openai.py +0 -0
  319. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/test +0 -0
  320. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/QUICKSTART.md +0 -0
  321. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/README_TESTING.md +0 -0
  322. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/Readme.md +0 -0
  323. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/conftest.py +0 -0
  324. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/fixtures/benchmarking.py +0 -0
  325. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/fixtures/helpers.py +0 -0
  326. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/fixtures/mock_server/__init__.py +0 -0
  327. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/fixtures/mock_server/server.py +0 -0
  328. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/.env.example +0 -0
  329. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/abstract_graph_test.py +0 -0
  330. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/code_generator_graph_openai_test.py +0 -0
  331. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/depth_search_graph_openai_test.py +0 -0
  332. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/inputs/books.xml +0 -0
  333. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/inputs/example.json +0 -0
  334. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/inputs/plain_html_example.txt +0 -0
  335. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/inputs/username.csv +0 -0
  336. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/scrape_plain_text_mistral_test.py +0 -0
  337. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/scrape_xml_ollama_test.py +0 -0
  338. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/screenshot_scraper_test.py +0 -0
  339. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/script_generator_test.py +0 -0
  340. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/search_graph_openai_test.py +0 -0
  341. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/search_link_ollama.py +0 -0
  342. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/smart_scraper_clod_test.py +0 -0
  343. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/smart_scraper_ernie_test.py +0 -0
  344. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/smart_scraper_fireworks_test.py +0 -0
  345. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/smart_scraper_multi_lite_graph_openai_test.py +0 -0
  346. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/smart_scraper_ollama_test.py +0 -0
  347. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/smart_scraper_openai_test.py +0 -0
  348. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/graphs/xml_scraper_openai_test.py +0 -0
  349. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/inputs/books.xml +0 -0
  350. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/inputs/example.json +0 -0
  351. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/inputs/plain_html_example.txt +0 -0
  352. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/inputs/username.csv +0 -0
  353. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/integration/__init__.py +0 -0
  354. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/integration/test_file_formats_integration.py +0 -0
  355. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/integration/test_multi_graph_integration.py +0 -0
  356. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/integration/test_smart_scraper_integration.py +0 -0
  357. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/nodes/fetch_node_test.py +0 -0
  358. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/nodes/inputs/books.xml +0 -0
  359. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/nodes/inputs/example.json +0 -0
  360. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/nodes/inputs/plain_html_example.txt +0 -0
  361. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/nodes/inputs/username.csv +0 -0
  362. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/nodes/robot_node_test.py +0 -0
  363. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/nodes/search_internet_node_test.py +0 -0
  364. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/nodes/search_link_node_test.py +0 -0
  365. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_atlascloud_model.py +0 -0
  366. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_batch_api.py +0 -0
  367. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_chromium.py +0 -0
  368. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_cleanup_html.py +0 -0
  369. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_csv_scraper_multi_graph.py +0 -0
  370. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_depth_search_graph.py +0 -0
  371. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_error_page_detection.py +0 -0
  372. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_fetch_node_timeout.py +0 -0
  373. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_generate_answer_node.py +0 -0
  374. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_json_scraper_graph.py +0 -0
  375. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_json_scraper_multi_graph.py +0 -0
  376. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_minimax_models.py +0 -0
  377. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_models_tokens.py +0 -0
  378. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_omni_search_graph.py +0 -0
  379. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_plasmate.py +0 -0
  380. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_scrape_do.py +0 -0
  381. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_script_creator_multi_graph.py +0 -0
  382. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_search_graph.py +0 -0
  383. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/test_smart_scraper_multi_concat_graph.py +0 -0
  384. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/utils/convert_to_md_test.py +0 -0
  385. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/utils/copy_utils_test.py +0 -0
  386. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/utils/output_parser_test.py +0 -0
  387. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/utils/parse_state_keys_test.py +0 -0
  388. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/utils/research_web_test.py +0 -0
  389. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/tests/utils/test_sys_dynamic_import.py +0 -0
  390. {scrapegraphai-2.2.2 → scrapegraphai-2.2.3}/uv.lock +0 -0
@@ -1,3 +1,15 @@
1
+ ## [2.2.3](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v2.2.2...v2.2.3) (2026-09-07)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **proxy:** handle schemeless proxy server format and broker routing ([70dbd2d](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/70dbd2d26d63bdc7473293371a275a4d856737f9))
7
+
8
+
9
+ ### Docs
10
+
11
+ * add NodeMaven sponsor to all README languages ([cc8568c](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/cc8568cc76f765f3d2bd2db0bdf5018d347af101))
12
+
1
13
  ## [2.2.2](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v2.2.1...v2.2.2) (2026-08-23)
2
14
 
3
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: scrapegraphai
3
- Version: 2.2.2
3
+ Version: 2.2.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
@@ -158,6 +158,12 @@ print(json.dumps(result, indent=4))
158
158
 
159
159
  ScrapeGraphAI 的文档可以在[这里](https://docs.scrapegraphai.com/introduction)找到。
160
160
 
161
+ ## 🏆 赞助商
162
+
163
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
164
+
165
+ ScrapeGraphAI 用户优惠码:`SCRAPEGRAPH35`(移动和住宅代理 35% 折扣),`SCRAPEGRAPH40`(ISP / 静态代理 40% 折扣)。
166
+
161
167
  ## 🤝 贡献
162
168
 
163
169
  欢迎贡献并加入我们的 Discord 服务器与我们讨论改进和提出建议!
@@ -160,6 +160,12 @@ N'oubliez pas d'installer [Ollama](https://ollama.com/) et de télécharger les
160
160
 
161
161
  La documentation pour ScrapeGraphAI se trouve [ici](https://docs.scrapegraphai.com/introduction).
162
162
 
163
+ ## 🏆 Sponsors
164
+
165
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
166
+
167
+ Codes pour les utilisateurs de ScrapeGraphAI : `SCRAPEGRAPH35` (35 % sur les proxies mobile et résidentiels), `SCRAPEGRAPH40` (40 % sur les proxies ISP / statiques).
168
+
163
169
  ## 🤝 Contribuer
164
170
 
165
171
  N'hésitez pas à contribuer et à rejoindre notre serveur Discord pour discuter avec nous des améliorations et nous donner des suggestions !
@@ -160,6 +160,12 @@ Denken Sie daran, [Ollama](https://ollama.com/) installiert zu haben und die Mod
160
160
 
161
161
  Die Dokumentation zu ScrapeGraphAI finden Sie [hier](https://docs.scrapegraphai.com/introduction).
162
162
 
163
+ ## 🏆 Sponsoren
164
+
165
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
166
+
167
+ Codes für ScrapeGraphAI-Nutzer: `SCRAPEGRAPH35` (35 % auf Mobile- und Residential-Proxys), `SCRAPEGRAPH40` (40 % auf ISP- / Static-Proxys).
168
+
163
169
  ## 🤝 Mitwirken
164
170
 
165
171
  Fühlen Sie sich frei, beizutragen und treten Sie unserem Discord-Server bei, um mit uns über Verbesserungen zu diskutieren und uns Vorschläge zu machen!
@@ -162,6 +162,12 @@ Ricordati di avere [Ollama](https://ollama.com/) installato e di scaricare i mod
162
162
  La documentazione di ScrapeGraphAI è disponibile [qui](https://scrapegraph-ai.readthedocs.io/en/latest/).
163
163
  Consulta anche il Docusaurus [qui](https://docs-oss.scrapegraphai.com/).
164
164
 
165
+ ## 🏆 Sponsor
166
+
167
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
168
+
169
+ Codici per gli utenti ScrapeGraphAI: `SCRAPEGRAPH35` (35% su proxy mobile e residenziali), `SCRAPEGRAPH40` (40% su proxy ISP / statici).
170
+
165
171
  ## 🤝 Vuoi contribuire?
166
172
 
167
173
  Sentiti libero di contribuire e unisciti al nostro server Discord per discutere con noi su cosa migliorare e darci suggerimenti!
@@ -158,6 +158,12 @@ print(json.dumps(result, indent=4))
158
158
 
159
159
  ScrapeGraphAIのドキュメントは[こちら](https://docs.scrapegraphai.com/introduction)で見ることができます。
160
160
 
161
+ ## 🏆 スポンサー
162
+
163
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
164
+
165
+ ScrapeGraphAI ユーザー向けコード:`SCRAPEGRAPH35`(モバイル / 住宅用プロキシ 35% オフ)、`SCRAPEGRAPH40`(ISP / 静的プロキシ 40% オフ)。
166
+
161
167
  ## 🤝 貢献
162
168
 
163
169
  貢献を歓迎し、Discordサーバーで改善や提案について話し合います!
@@ -158,6 +158,12 @@ OpenAI, Groq, Azure, Gemini와 같은 API를 통해 다양한 LLM을 사용할
158
158
 
159
159
  ScrapeGraphAI 관련 문서는 [여기](https://docs.scrapegraphai.com/introduction)에서 확인하실 수 있습니다.
160
160
 
161
+ ## 🏆 스폰서
162
+
163
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
164
+
165
+ ScrapeGraphAI 사용자 코드: `SCRAPEGRAPH35` (모바일 및 주거용 프록시 35% 할인), `SCRAPEGRAPH40` (ISP / 고정 프록시 40% 할인).
166
+
161
167
  ## 🤝 기여
162
168
 
163
169
  자유롭게 기여하고 Discord 서버에 참여하여 개선 사항을 논의하고 제안해 주세요!
@@ -158,6 +158,12 @@ Lembre-se de ter o [Ollama](https://ollama.com/) instalado e baixar os modelos u
158
158
 
159
159
  A documentação do ScrapeGraphAI pode ser encontrada [aqui](https://docs.scrapegraphai.com/introduction).
160
160
 
161
+ ## 🏆 Patrocinadores
162
+
163
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
164
+
165
+ Códigos para usuários do ScrapeGraphAI: `SCRAPEGRAPH35` (35% em proxies móveis e residenciais), `SCRAPEGRAPH40` (40% em proxies ISP / estáticos).
166
+
161
167
  ## 🤝 Contribuindo
162
168
 
163
169
  Sinta-se à vontade para contribuir e junte-se ao nosso servidor Discord para discutir melhorias e nos dar sugestões!
@@ -158,6 +158,12 @@ print(json.dumps(result, indent=4))
158
158
 
159
159
  Документация для ScrapeGraphAI доступна [здесь](https://docs.scrapegraphai.com/introduction).
160
160
 
161
+ ## 🏆 Спонсоры
162
+
163
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
164
+
165
+ Коды для пользователей ScrapeGraphAI: `SCRAPEGRAPH35` (скидка 35% на mobile и residential-прокси), `SCRAPEGRAPH40` (скидка 40% на ISP / static-прокси).
166
+
161
167
  ## 🤝 Участие
162
168
 
163
169
  Не стесняйтесь вносить свой вклад и присоединяйтесь к нашему серверу Discord, чтобы обсудить с нами улучшения и дать нам предложения!
@@ -165,6 +165,12 @@ Recuerda tener [Ollama](https://ollama.com/) instalado y descargar los modelos c
165
165
 
166
166
  La documentación de ScrapeGraphAI está disponible [aquí](https://docs.scrapegraphai.com/introduction).
167
167
 
168
+ ## 🏆 Patrocinadores
169
+
170
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
171
+
172
+ Códigos para usuarios de ScrapeGraphAI: `SCRAPEGRAPH35` (35% en proxies móviles y residenciales), `SCRAPEGRAPH40` (40% en proxies ISP / estáticos).
173
+
168
174
  ## 🤝 Contribuciones
169
175
 
170
176
  ¡Siéntete libre de contribuir y únete a nuestro servidor de Discord para discutir mejoras y compartir sugerencias!
@@ -159,6 +159,12 @@ Yerel modelleri kullanmak istiyorsanız, [Ollama](https://ollama.com/) kurulu ol
159
159
 
160
160
  ScrapeGraphAI dokümantasyonuna [buradan](https://docs.scrapegraphai.com/introduction) ulaşabilirsiniz.
161
161
 
162
+ ## 🏆 Sponsorlar
163
+
164
+ [![NodeMaven](assets/nodemaven-banner.png)](https://go.nodemaven.com/scrapegraphyai)
165
+
166
+ ScrapeGraphAI kullanıcıları için kodlar: `SCRAPEGRAPH35` (mobil ve residential proxy'lerde %35 indirim), `SCRAPEGRAPH40` (ISP / static proxy'lerde %40 indirim).
167
+
162
168
  ## 🤝 Katkıda Bulunun
163
169
 
164
170
  Projeye katkıda bulunmaktan çekinmeyin ve geliştirmeleri tartışmak ve bize önerilerde bulunmak için Discord sunucumuza katılın!
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "scrapegraphai"
3
3
 
4
- version = "2.2.2"
4
+ version = "2.2.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 = [
@@ -142,18 +142,18 @@ def _parse_proxy(proxy: ProxySettings) -> ProxySettings:
142
142
  """
143
143
  assert "server" in proxy, "missing server in the proxy configuration"
144
144
 
145
- auhtorization = [x in proxy for x in ("username", "password")]
145
+ authorization = [x in proxy for x in ("username", "password")]
146
146
 
147
147
  message = "username and password must be provided in pairs or not at all"
148
148
 
149
- assert all(auhtorization) or not any(auhtorization), message
149
+ assert all(authorization) or not any(authorization), message
150
150
 
151
151
  parsed = {"server": proxy["server"]}
152
152
 
153
153
  if proxy.get("bypass"):
154
154
  parsed["bypass"] = proxy["bypass"]
155
155
 
156
- if all(auhtorization):
156
+ if all(authorization):
157
157
  parsed["username"] = proxy["username"]
158
158
  parsed["password"] = proxy["password"]
159
159
 
@@ -192,9 +192,14 @@ def parse_or_search_proxy(proxy: Proxy) -> ProxySettings:
192
192
  """
193
193
  Parses a proxy configuration or searches for a matching one via broker.
194
194
  """
195
- assert "server" in proxy, "Missing 'server' field in the proxy configuration."
195
+ assert "server" in proxy, "missing server in the proxy configuration"
196
+
197
+ server = proxy["server"]
198
+ if server == "broker":
199
+ return _search_proxy(proxy)
196
200
 
197
- parsed_url = urlparse(proxy["server"])
201
+ server_with_scheme = server if "://" in server else f"http://{server}"
202
+ parsed_url = urlparse(server_with_scheme)
198
203
  server_address = parsed_url.hostname
199
204
 
200
205
  if server_address is None:
@@ -206,6 +211,6 @@ def parse_or_search_proxy(proxy: Proxy) -> ProxySettings:
206
211
  ):
207
212
  return _parse_proxy(proxy)
208
213
 
209
- assert proxy["server"] == "broker", f"Unknown proxy server type: {proxy['server']}"
214
+ assert proxy["server"] == "broker", f"unknown proxy server type: {proxy['server']}"
210
215
 
211
216
  return _search_proxy(proxy)
@@ -1,3 +1,4 @@
1
+ from unittest.mock import patch
1
2
  import pytest
2
3
  from fp.errors import FreeProxyException
3
4
 
@@ -58,7 +59,8 @@ def test_parse_proxy_exception():
58
59
  assert "username and password must be provided in pairs" in str(error_info.value)
59
60
 
60
61
 
61
- def test_search_proxy_success():
62
+ @patch("scrapegraphai.utils.proxy_rotation.search_proxy_servers", return_value=["http://103.10.63.135:8080"])
63
+ def test_search_proxy_success(mock_search):
62
64
  proxy = Proxy(criteria={"anonymous": True, "countryset": {"US"}})
63
65
  found_proxy = _search_proxy(proxy)
64
66
 
@@ -72,7 +74,8 @@ def test_is_ipv4_address():
72
74
  assert is_ipv4_address("no-address") is False
73
75
 
74
76
 
75
- def test_parse_or_search_proxy_success():
77
+ @patch("scrapegraphai.utils.proxy_rotation.search_proxy_servers", return_value=["http://103.10.63.135:8080"])
78
+ def test_parse_or_search_proxy_success(mock_search):
76
79
  proxy = {
77
80
  "server": "192.168.1.1:8080",
78
81
  "username": "username",
@@ -82,6 +85,14 @@ def test_parse_or_search_proxy_success():
82
85
  parsed_proxy = parse_or_search_proxy(proxy)
83
86
  assert parsed_proxy == proxy
84
87
 
88
+ proxy_domain = {
89
+ "server": "gate.nodemaven.com:8080",
90
+ "username": "user",
91
+ "password": "pwd",
92
+ }
93
+ parsed_domain = parse_or_search_proxy(proxy_domain)
94
+ assert parsed_domain == proxy_domain
95
+
85
96
  proxy_broker = {
86
97
  "server": "broker",
87
98
  "criteria": {
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes