scrapegraphai 2.3.0__tar.gz → 2.3.1__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.
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/CHANGELOG.md +7 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/PKG-INFO +1 -1
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/pyproject.toml +1 -1
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/schema_trasform.py +5 -0
- scrapegraphai-2.3.1/tests/utils/schema_transform_test.py +27 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.gitattributes +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.github/FUNDING.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.github/ISSUE_TEMPLATE/custom.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.github/workflows/codeql.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.github/workflows/dependency-review.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.github/workflows/release.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.github/workflows/test-suite.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.gitignore +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.pre-commit-config.yaml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.releaserc.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/.semantic-commits-applied +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/AGENTS.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/CODE_OF_CONDUCT.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/CONTRIBUTING.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/Dockerfile +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/LICENSE +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/Makefile +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/PullRequests/PR_1027_reviews.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/SECURITY.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/SEMANTIC_COMMITS.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/TESTING_INFRASTRUCTURE.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/citation.cff +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/codebeaver.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docker-compose.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/api-banner.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/api_banner.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/apikey_1.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/apikey_2.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/apikey_3.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/apikey_4.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/browserbase_logo.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/codespaces-badge.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/histogram.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/nodemaven-banner.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/omniscrapergraph.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/omnisearchgraph.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/project_overview_diagram.fig +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/project_overview_diagram.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/scrapegraphai_logo.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/scrapegraphai_logo.svg +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/scriptcreatorgraph.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/searchgraph.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/sgai-hero.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/smartscrapergraph.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/assets/speechgraph.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/chinese.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/french.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/german.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/italian.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/japanese.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/korean.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/portuguese.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/russian.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/spanish.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/timeout_configuration.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/docs/turkish.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/ScrapegraphAI_cookbook.ipynb +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/code_generator_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/code_generator_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/code_generator_graph/ollama/code_generator_graph_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/code_generator_graph/openai/code_generator_graph_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/ollama/csv_scraper_graph_multi_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/ollama/csv_scraper_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/ollama/inputs/username.csv +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/openai/csv_scraper_graph_multi_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/openai/csv_scraper_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/openai/inputs/username.csv +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/custom_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/custom_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/custom_graph/ollama/custom_graph_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/custom_graph/openai/custom_graph_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/depth_search_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/depth_search_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/depth_search_graph/ollama/depth_search_graph_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/depth_search_graph/openai/depth_search_graph_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/document_scraper_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/document_scraper_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/document_scraper_graph/ollama/document_scraper_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/document_scraper_graph/ollama/inputs/plain_html_example.txt +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/document_scraper_graph/openai/document_scraper_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/document_scraper_graph/openai/inputs/markdown_example.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/document_scraper_graph/openai/inputs/plain_html_example.txt +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/Savedscreenshots/test_image.jpeg +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/authenticated_playwright.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/browser_base_integration.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/chromium_selenium.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/cond_smartscraper_usage.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/conditional_usage.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/custom_prompt.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/example.yml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/force_mode.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/html_mode.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/load_yml.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/no_cut.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/proxy_rotation.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/rag_caching.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/reasoning.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/scrape_do.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/screenshot_scaping.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/serch_graph_scehma.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/slow_mo.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/undected_playwright.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/ollama/inputs/example.json +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/ollama/json_scraper_multi_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/ollama/json_scraper_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/openai/inputs/example.json +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/openai/json_scraper_multi_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/openai/json_scraper_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/openai/md_scraper_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/openai/omni_scraper_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/markdownify/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/markdownify/markdownify_scrapegraphai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/markdownify/markdownify_scrapegraphai_v3.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/markdownify/readme.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/omni_scraper_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/omni_scraper_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/omni_scraper_graph/omni_search_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/readme.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/script_generator_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/script_generator_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/script_generator_graph/ollama/script_generator_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/script_generator_graph/ollama/script_multi_generator_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/script_generator_graph/openai/script_generator_multi_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/script_generator_graph/openai/script_generator_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/script_generator_graph/openai/script_generator_schema_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/ollama/search_graph_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/ollama/search_graph_schema_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/openai/search_graph_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/openai/search_graph_schema_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/openai/search_link_graph_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/scrapegraphai/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/scrapegraphai/readme.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/scrapegraphai/searchscraper_scrapegraphai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/scrapegraphai/searchscraper_scrapegraphai_v3.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/nvidia/smart_scraper_nvidia.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/ollama/smart_scraper_lite_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/ollama/smart_scraper_multi_concat_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/ollama/smart_scraper_multi_lite_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/ollama/smart_scraper_multi_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/ollama/smart_scraper_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/ollama/smart_scraper_schema_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/openai/smart_scraper_lite_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/openai/smart_scraper_multi_concat_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/openai/smart_scraper_multi_lite_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/openai/smart_scraper_multi_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/openai/smart_scraper_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/openai/smart_scraper_schema_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/scrapegraphai/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/scrapegraphai/readme.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/scrapegraphai/smartscraper_scrapegraphai_v3.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/speech_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/speech_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/speech_graph/speech_graph_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/README.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/ollama/inputs/books.xml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/ollama/xml_scraper_graph_multi_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/ollama/xml_scraper_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/openai/inputs/books.xml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/openai/xml_scraper_graph_multi_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/openai/xml_scraper_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/media/banner.png +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/pytest.ini +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/builders/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/builders/graph_builder.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/docloaders/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/docloaders/browser_base.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/docloaders/chromium.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/docloaders/plasmate.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/docloaders/scrape_do.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/abstract_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/base_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/code_generator_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/csv_scraper_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/csv_scraper_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/depth_search_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/document_scraper_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/document_scraper_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/json_scraper_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/json_scraper_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/markdownify_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/omni_scraper_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/omni_search_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/screenshot_scraper_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/script_creator_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/script_creator_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/search_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/search_link_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/smart_scraper_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/smart_scraper_lite_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/smart_scraper_multi_batch_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/smart_scraper_multi_concat_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/smart_scraper_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/smart_scraper_multi_lite_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/speech_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/xml_scraper_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/xml_scraper_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/helpers/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/helpers/default_filters.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/helpers/models_tokens.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/helpers/nodes_metadata.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/helpers/robots.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/helpers/schemas.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/integrations/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/integrations/burr_bridge.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/integrations/indexify_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/integrations/scrapegraph_py_compat.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/atlascloud.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/cheaperinference.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/clod.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/deepseek.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/minimax.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/nvidia.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/oneapi.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/openai_itt.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/openai_tts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/models/xai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/base_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/batch_generate_answer_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/concat_answers_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/conditional_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/description_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/fetch_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/fetch_node_level_k.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/fetch_screen_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/generate_answer_csv_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/generate_answer_from_image_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/generate_answer_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/generate_answer_node_k_level.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/generate_answer_omni_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/generate_code_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/generate_scraper_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/get_probable_tags_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/graph_iterator_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/html_analyzer_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/image_to_text_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/markdownify_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/merge_answers_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/merge_generated_scripts_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/parse_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/parse_node_depth_k_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/prompt_refiner_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/rag_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/reasoning_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/robots_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/search_internet_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/search_link_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/search_node_with_context.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/nodes/text_to_speech_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/description_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/generate_answer_node_csv_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/generate_answer_node_omni_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/generate_answer_node_pdf_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/generate_answer_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/generate_code_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/get_probable_tags_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/html_analyzer_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/merge_answer_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/merge_generated_scripts_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/prompt_refiner_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/reasoning_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/robots_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/search_internet_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/search_link_node_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/prompts/search_node_with_context_prompts.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/telemetry/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/telemetry/telemetry.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/batch_api.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/cleanup_code.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/cleanup_html.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/code_error_analysis.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/code_error_correction.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/convert_to_md.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/copy.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/custom_callback.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/data_export.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/dict_content_compare.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/llm_callback_manager.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/logging.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/model_costs.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/output_parser.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/parse_state_keys.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/prettify_exec_info.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/proxy_rotation.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/research_web.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/save_audio_from_bytes.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/save_code_to_file.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/screenshot_scraping/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/screenshot_scraping/screenshot_preparation.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/screenshot_scraping/text_detection.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/split_text_into_chunks.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/sys_dynamic_import.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/tokenizer.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/tokenizers/tokenizer_mistral.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/tokenizers/tokenizer_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/utils/tokenizers/tokenizer_openai.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/test +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/QUICKSTART.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/README_TESTING.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/Readme.md +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/conftest.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/fixtures/benchmarking.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/fixtures/helpers.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/fixtures/mock_server/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/fixtures/mock_server/server.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/.env.example +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/abstract_graph_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/code_generator_graph_openai_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/depth_search_graph_openai_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/inputs/books.xml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/inputs/example.json +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/inputs/plain_html_example.txt +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/inputs/username.csv +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/scrape_plain_text_mistral_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/scrape_xml_ollama_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/screenshot_scraper_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/script_generator_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/search_graph_openai_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/search_link_ollama.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/smart_scraper_clod_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/smart_scraper_ernie_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/smart_scraper_fireworks_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/smart_scraper_multi_lite_graph_openai_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/smart_scraper_ollama_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/smart_scraper_openai_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/graphs/xml_scraper_openai_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/inputs/books.xml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/inputs/example.json +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/inputs/plain_html_example.txt +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/inputs/username.csv +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/integration/__init__.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/integration/test_file_formats_integration.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/integration/test_multi_graph_integration.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/integration/test_smart_scraper_integration.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/nodes/fetch_node_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/nodes/inputs/books.xml +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/nodes/inputs/example.json +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/nodes/inputs/plain_html_example.txt +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/nodes/inputs/username.csv +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/nodes/robot_node_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/nodes/search_internet_node_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/nodes/search_link_node_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_atlascloud_model.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_batch_api.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_cheaperinference_model.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_chromium.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_cleanup_html.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_csv_scraper_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_depth_search_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_error_page_detection.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_fetch_node_timeout.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_generate_answer_node.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_json_scraper_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_json_scraper_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_minimax_models.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_models_tokens.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_omni_search_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_plasmate.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_scrape_do.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_script_creator_multi_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_search_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_smart_scraper_multi_concat_graph.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/test_telemetry_flag.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/utils/convert_to_md_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/utils/copy_utils_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/utils/output_parser_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/utils/parse_state_keys_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/utils/research_web_test.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/utils/test_proxy_rotation.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/tests/utils/test_sys_dynamic_import.py +0 -0
- {scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/uv.lock +0 -0
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [2.3.1](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v2.3.0...v2.3.1) (2026-10-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **utils:** keep Optional fields in transform_schema ([#1160](https://github.com/ScrapeGraphAI/Scrapegraph-ai/issues/1160)) ([9906c69](https://github.com/ScrapeGraphAI/Scrapegraph-ai/commit/9906c69d0bed28c5932c5b5df79a0a9b8fe19fd7))
|
|
7
|
+
|
|
1
8
|
## [2.3.0](https://github.com/ScrapeGraphAI/Scrapegraph-ai/compare/v2.2.4...v2.3.0) (2026-09-25)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: scrapegraphai
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.1
|
|
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
|
|
@@ -17,6 +17,11 @@ def transform_schema(pydantic_schema):
|
|
|
17
17
|
def process_properties(properties):
|
|
18
18
|
result = {}
|
|
19
19
|
for key, value in properties.items():
|
|
20
|
+
if "anyOf" in value:
|
|
21
|
+
# Optional[X] is emitted as anyOf [X, null]: describe it as X
|
|
22
|
+
variants = [v for v in value["anyOf"] if v.get("type") != "null"]
|
|
23
|
+
if len(variants) == 1:
|
|
24
|
+
value = {**value, **variants[0]}
|
|
20
25
|
if "type" in value:
|
|
21
26
|
if value["type"] == "array":
|
|
22
27
|
if "items" in value and "$ref" in value["items"]:
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from typing import List, Optional
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel, Field
|
|
4
|
+
|
|
5
|
+
from scrapegraphai.utils.schema_trasform import transform_schema
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Seller(BaseModel):
|
|
9
|
+
name: str
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Product(BaseModel):
|
|
13
|
+
title: str = Field(description="Product title")
|
|
14
|
+
price: Optional[float] = Field(default=None, description="Price in USD")
|
|
15
|
+
tags: Optional[List[str]] = None
|
|
16
|
+
seller: Optional[Seller] = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_transform_schema_keeps_optional_fields():
|
|
20
|
+
result = transform_schema(Product.model_json_schema())
|
|
21
|
+
|
|
22
|
+
assert result == {
|
|
23
|
+
"title": {"type": "string", "description": "Product title"},
|
|
24
|
+
"price": {"type": "number", "description": "Price in USD"},
|
|
25
|
+
"tags": ["string"],
|
|
26
|
+
"seller": {"name": {"type": "string", "description": ""}},
|
|
27
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/ollama/csv_scraper_ollama.py
RENAMED
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/ollama/inputs/username.csv
RENAMED
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/openai/csv_scraper_openai.py
RENAMED
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/csv_scraper_graph/openai/inputs/username.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/custom_graph/ollama/custom_graph_ollama.py
RENAMED
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/custom_graph/openai/custom_graph_openai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/extras/Savedscreenshots/test_image.jpeg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/ollama/inputs/example.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/openai/inputs/example.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/json_scraper_graph/openai/md_scraper_openai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/markdownify/markdownify_scrapegraphai.py
RENAMED
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/markdownify/markdownify_scrapegraphai_v3.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/omni_scraper_graph/omni_search_openai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/ollama/search_graph_ollama.py
RENAMED
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/openai/search_graph_openai.py
RENAMED
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/openai/search_link_graph_openai.py
RENAMED
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/search_graph/scrapegraphai/.env.example
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/scrapegraphai/.env.example
RENAMED
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/smart_scraper_graph/scrapegraphai/readme.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/ollama/inputs/books.xml
RENAMED
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/ollama/xml_scraper_ollama.py
RENAMED
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/openai/inputs/books.xml
RENAMED
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/examples/xml_scraper_graph/openai/xml_scraper_openai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/document_scraper_multi_graph.py
RENAMED
|
File without changes
|
|
File without changes
|
{scrapegraphai-2.3.0 → scrapegraphai-2.3.1}/scrapegraphai/graphs/json_scraper_multi_graph.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|