Files
TextNLPClassifierApp/graphify-out/cache/ast/v0.9.47-s2/60084a23d0cb5e7f2ae4dcd86849fc83dca47b865f3429c24256209513a78691.json
T
andreferraro 6e3d57619b feat(extractor): add Google News headlines extractor with Foxcape headless and URL resolution
- Add standalone CLI script scripts/extract_google_news.py for Google News RSS scraping
- Integrate foxcape in headless mode as primary stealth anti-bot engine
- Implement parallel article URL resolution using googlenewsdecoder and ThreadPoolExecutor
- Support language and regional locale mapping (-l, --lang, --locale)
- Implement real-time progress logging in stderr and --silent flag
- Add unit, integration, and live E2E tests in tests/test_extract_google_news.py
- Add full SpecKit documentation (specs/002-google-news-extractor/)
- Create comprehensive README.md covering both NLP Classifier and Google News Extractor
2026-08-20 11:50:16 -03:00

1 line
41 KiB
JSON

{"nodes": [{"id": "$graphify-root$_tests_test_extract_google_news_py", "label": "test_extract_google_news.py", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "fixture", "label": "fixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "label": "sample_rss_xml()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "label": "test_get_hl_gl_ceid_default_mappings()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "label": "test_get_hl_gl_ceid_with_custom_locale()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "label": "test_get_hl_gl_ceid_dynamic_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "label": "test_search_query_validation()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "label": "test_parse_google_news_rss_with_fixture()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "label": "test_resolve_article_url_fallback()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "label": "test_resolve_article_url_success()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L150", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "label": "test_resolve_articles_urls_batch()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L163", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "label": "test_extract_google_news_orchestration_mocked()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L188", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "label": "test_cli_execution_stdout()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L217", "_callable": true}, {"id": "capturefixture", "label": "CaptureFixture", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "label": "test_cli_execution_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L242", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/tests/test_extract_google_news.py"}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "label": "test_cli_empty_query_error()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "label": "test_cli_network_error_handling()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "label": "test_e2e_resolve_real_google_news_url()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L291", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "label": "test_e2e_extract_google_news_live_pipeline()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L312", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "label": "test_e2e_cli_live_file_output()", "file_type": "code", "source_file": "tests/test_extract_google_news.py", "source_location": "L328", "_callable": true}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_1", "label": "Testes unit\u00e1rios e de integra\u00e7\u00e3o para o Extrator de Manchetes do Google News.\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_33", "label": "Fixture que fornece o conte\u00fado do XML de exemplo para testes offline.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L33"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_38", "label": "Valida o mapeamento padr\u00e3o de idiomas para pares (hl, gl, ceid).", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L38"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_61", "label": "Valida a sobrescrita geogr\u00e1fica quando o argumento locale \u00e9 especificado.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L61"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_79", "label": "Valida fallback din\u00e2mico para idiomas regionais n\u00e3o listados explicitamente.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L79"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_87", "label": "Valida as regras de neg\u00f3cio e limites de SearchQuery.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L87"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_112", "label": "Valida o parsing do feed RSS, higieniza\u00e7\u00e3o de tags HTML e deduplica\u00e7\u00e3o.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L112"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_139", "label": "Valida fallback gracioso de URL quando n\u00e3o \u00e9 link do Google News ou em erro.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L139"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_151", "label": "Valida resolu\u00e7\u00e3o bem-sucedida de URL do Google News para o portal destino.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L151"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_164", "label": "Valida a resolu\u00e7\u00e3o concorrente em lote de uma lista de NewsArticle.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L164"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_189", "label": "Valida a consolida\u00e7\u00e3o do ExtractionResult a partir da busca mockada com URLs\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L189"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_218", "label": "Valida execu\u00e7\u00e3o padr\u00e3o do CLI com sa\u00edda JSON no stdout.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L218"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_243", "label": "Valida grava\u00e7\u00e3o em arquivo com cria\u00e7\u00e3o autom\u00e1tica de diret\u00f3rios pais.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L243"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_264", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 1 para par\u00e2metro vazio.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L264"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_273", "label": "Valida tratamento de erro e c\u00f3digo de sa\u00edda 2 para falhas de rede.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L273"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_292", "label": "Valida E2E que o decodificador resolve uma URL real do Google News para o\u2026", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L292"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_313", "label": "Valida E2E o fluxo completo de busca, parsing e resolu\u00e7\u00e3o de URLs reais ao vivo.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L313"}, {"id": "$graphify-root$_tests_test_extract_google_news_rationale_329", "label": "Valida E2E a execu\u00e7\u00e3o do CLI com sa\u00edda real em arquivo e URLs decodificadas.", "file_type": "rationale", "source_file": "tests/test_extract_google_news.py", "source_location": "L329"}], "edges": [{"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L10", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "scripts_extract_google_news", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L16", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "target": "fixture", "relation": "references", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L31", "weight": 1.0, "context": "decorator"}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L32", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L37", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L60", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L78", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L86", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L111", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L138", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L150", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L163", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L188", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L217", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L242", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L263", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "target": "capturefixture", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L272", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L291", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L312", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_py", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L328", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L328", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_1", "target": "$graphify-root$_tests_test_extract_google_news_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_33", "target": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L33", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_38", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L38", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_61", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L61", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_79", "target": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L79", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_87", "target": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_112", "target": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L112", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_139", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L139", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_151", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_164", "target": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_189", "target": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L189", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_218", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_243", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L243", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_264", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L264", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_273", "target": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L273", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_292", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L292", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_313", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L313", "weight": 1.0}, {"source": "$graphify-root$_tests_test_extract_google_news_rationale_329", "target": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_extract_google_news.py", "source_location": "L329", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_extract_google_news_sample_rss_xml", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L34", "receiver": "FIXTURE_PATH"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L39", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L44", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L49", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_default_mappings", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L54", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L67", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_with_custom_locale", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L72", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_get_hl_gl_ceid_dynamic_fallback", "callee": "get_hl_gl_ceid", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L80", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L96", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L96"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L97", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L100", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L100"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L101", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L104", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L104"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L105", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "raises", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L107", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L107"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_search_query_validation", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L108", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "parse_google_news_rss", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L113", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_parse_google_news_rss_with_fixture", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L121", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L141", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L143", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_fallback", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L147", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L155", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_article_url_success", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L159", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "NewsArticle", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L166", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "NewsArticle", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L171", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L178", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "split", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L180", "receiver": "u"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_resolve_articles_urls_batch", "callee": "resolve_articles_urls", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L182", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L190", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L195", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L199", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L204", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L206"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_extract_google_news_orchestration_mocked", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L214", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L220", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L224", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L228", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L233", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L234", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L247", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L251", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L255", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L258", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L259", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_execution_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L259", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L265", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_empty_query_error", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L268", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "patch", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L274", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "RuntimeError", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L276", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L278", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_cli_network_error_handling", "callee": "readouterr", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L281", "receiver": "capsys"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "callee": "resolve_article_url", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L303", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_resolve_real_google_news_url", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L308", "receiver": "resolved_url"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "SearchQuery", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L314", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "extract_google_news", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L315", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "ExtractionResult", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_extract_google_news.py", "source_location": "L317"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_extract_google_news_live_pipeline", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L323", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "main", "is_member_call": false, "source_file": "tests/test_extract_google_news.py", "source_location": "L331", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "exists", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L345", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "loads", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L347", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "read_text", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L347", "receiver": "out_file"}, {"caller_nid": "$graphify-root$_tests_test_extract_google_news_test_e2e_cli_live_file_output", "callee": "startswith", "is_member_call": true, "source_file": "tests/test_extract_google_news.py", "source_location": "L354", "receiver": null}]}