Files
TextNLPClassifierApp/graphify-out/cache/ast/v0.9.47-s2/3acc7ff372e6b0f1f42dad29d280b835ac51784b1dca8054472287a7355c9386.json
T
andreferraro 6a45368cb0 feat(extractor): implement multi-engine article content extractor
- Added scripts/extract_article_contents.py for batch scraping with stealth Foxcape and triple extraction (Trafilatura, Newspaper4k, Readability)
- Created unit, integration, and E2E test suite in tests/test_extract_article_contents.py (90/90 passing)
- Updated specs/003-article-content-extractor and README.md with usage documentation and CLI contracts
- Passed ruff linting/formatting and mypy type checking cleanly
2026-08-20 19:22:20 -03:00

1 line
16 KiB
JSON

{"nodes": [{"id": "$graphify-root$_tests_test_adversarial_py", "label": "test_adversarial.py", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "label": "test_adversarial_sao_paulo_city_vs_fc()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L14", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "label": "test_adversarial_apple_fruit_recipe()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L44", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "label": "test_adversarial_related_entity_without_scope_context()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L68", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "label": "test_adversarial_subprocess_cli_success_stdout()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L104", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "label": "test_adversarial_subprocess_cli_empty_content()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L148", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "label": "test_adversarial_subprocess_cli_missing_required_field()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L185", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "label": "test_adversarial_subprocess_cli_corrupted_json()", "file_type": "code", "source_file": "tests/test_adversarial.py", "source_location": "L220", "_callable": true}, {"id": "$graphify-root$_tests_test_adversarial_rationale_1", "label": "Adversarial and robustness test suite for Multilingual NLP Entity Inherence\u2026", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_15", "label": "Content about city/state governance of S\u00e3o Paulo against ECP for S\u00e3o Paulo FC.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L15"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_45", "label": "Content about apple fruit/culinary recipe against Apple Inc. tech entity.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L45"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_69", "label": "High-weight related entity mentioned in passing without required domain anchors.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L69"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_105", "label": "Run CLI via subprocess without --output and verify stdout is pure parseable\u2026", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L105"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_149", "label": "Run CLI via subprocess with empty content and verify error code and exit code.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L149"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_186", "label": "Run CLI via subprocess with missing target_name and verify error payload.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L186"}, {"id": "$graphify-root$_tests_test_adversarial_rationale_221", "label": "Run CLI via subprocess with corrupted JSON and verify error payload.", "file_type": "rationale", "source_file": "tests/test_adversarial.py", "source_location": "L221"}], "edges": [{"source": "$graphify-root$_tests_test_adversarial_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L7", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "subprocess", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L8", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L9", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L11", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L14", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L44", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L68", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L104", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L185", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_py", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_1", "target": "$graphify-root$_tests_test_adversarial_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_15", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_45", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_69", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_105", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_149", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L149", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_186", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_tests_test_adversarial_rationale_221", "target": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_adversarial.py", "source_location": "L221", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "callee": "ECPSnapshot", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L16", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L37", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_sao_paulo_city_vs_fc", "callee": "classify", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L38", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "callee": "ECPSnapshot", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L46", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L62", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_apple_fruit_recipe", "callee": "classify", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L63", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "callee": "ECPSnapshot", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L70", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "callee": "RelatedEntity", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L78", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "callee": "InherenceClassifier", "is_member_call": false, "source_file": "tests/test_adversarial.py", "source_location": "L96", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_related_entity_without_scope_context", "callee": "classify", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L97", "receiver": "classifier"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L107", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L108", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L121", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "run", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L130", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "strip", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L140", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_success_stdout", "callee": "loads", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L141", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L155", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L156", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L169", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "run", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L171", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_empty_content", "callee": "loads", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L181", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L192", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "dumps", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L193", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L205", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "run", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L207", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_missing_required_field", "callee": "loads", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L216", "receiver": "json"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L227", "receiver": "ecp_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "callee": "write_text", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L230", "receiver": "content_file"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "callee": "run", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L232", "receiver": "subprocess"}, {"caller_nid": "$graphify-root$_tests_test_adversarial_test_adversarial_subprocess_cli_corrupted_json", "callee": "loads", "is_member_call": true, "source_file": "tests/test_adversarial.py", "source_location": "L241", "receiver": "json"}]}