- 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
1 line
7.1 KiB
JSON
1 line
7.1 KiB
JSON
{"nodes": [{"id": "$graphify-root$_tests_test_models_py", "label": "test_models.py", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L1"}, {"id": "$graphify-root$_tests_test_models_test_ecp_snapshot_valid", "label": "test_ecp_snapshot_valid()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L15", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_ecp_snapshot_defaults", "label": "test_ecp_snapshot_defaults()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L45", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "label": "test_ecp_snapshot_missing_required()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L59", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_classification_result_serialization", "label": "test_classification_result_serialization()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L70", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_classification_error_serialization", "label": "test_classification_error_serialization()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L88", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_parser_strip_markdown", "label": "test_parser_strip_markdown()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L100", "_callable": true}, {"id": "$graphify-root$_tests_test_models_test_extract_evidence_snippets", "label": "test_extract_evidence_snippets()", "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L110", "_callable": true}, {"id": "$graphify-root$_tests_test_models_rationale_1", "label": "Unit tests for ECP models, schema validation, and structured error handling.", "file_type": "rationale", "source_file": "tests/test_models.py", "source_location": "L1"}], "edges": [{"source": "$graphify-root$_tests_test_models_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L3", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "src_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L5", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "src_parser", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L12", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_ecp_snapshot_valid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L15", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_ecp_snapshot_defaults", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L59", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_classification_result_serialization", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_classification_error_serialization", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_parser_strip_markdown", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L100", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_py", "target": "$graphify-root$_tests_test_models_test_extract_evidence_snippets", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L110", "weight": 1.0}, {"source": "$graphify-root$_tests_test_models_rationale_1", "target": "$graphify-root$_tests_test_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_valid", "callee": "from_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L36", "receiver": "ECPSnapshot"}, {"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_defaults", "callee": "from_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L53", "receiver": "ECPSnapshot"}, {"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "callee": "raises", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L66", "receiver": "pytest"}, {"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "callee": "ValueError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_models.py", "source_location": "L66"}, {"caller_nid": "$graphify-root$_tests_test_models_test_ecp_snapshot_missing_required", "callee": "from_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L67", "receiver": "ECPSnapshot"}, {"caller_nid": "$graphify-root$_tests_test_models_test_classification_result_serialization", "callee": "ClassificationResult", "is_member_call": false, "source_file": "tests/test_models.py", "source_location": "L71", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_models_test_classification_result_serialization", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L80", "receiver": "res"}, {"caller_nid": "$graphify-root$_tests_test_models_test_classification_error_serialization", "callee": "ClassificationError", "is_member_call": false, "source_file": "tests/test_models.py", "source_location": "L89", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_models_test_classification_error_serialization", "callee": "to_dict", "is_member_call": true, "source_file": "tests/test_models.py", "source_location": "L94", "receiver": "err"}, {"caller_nid": "$graphify-root$_tests_test_models_test_parser_strip_markdown", "callee": "strip_markdown", "is_member_call": false, "source_file": "tests/test_models.py", "source_location": "L102", "receiver": null}, {"caller_nid": "$graphify-root$_tests_test_models_test_extract_evidence_snippets", "callee": "extract_evidence_snippets", "is_member_call": false, "source_file": "tests/test_models.py", "source_location": "L112", "receiver": null}]} |