1 line
46 KiB
JSON
1 line
46 KiB
JSON
{"nodes": [{"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "label": "test_storage_s3.py", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_storage", "label": "_make_storage()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L15", "_callable": true}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/tests/test_storage_s3.py"}, {"id": "s3filestorage", "label": "S3FileStorage", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/tests/test_storage_s3.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_client_error", "label": "_client_error()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L19", "_callable": true}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/tests/test_storage_s3.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody", "label": "_FakeBody", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L25", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody_init", "label": ".__init__()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L28", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody_read", "label": ".read()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L32", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "label": "_make_client_ctx()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L36", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_storage", "label": "storage()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L44", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "label": "test_save_file_calls_put_object()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L53", "_callable": true}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/senko/Work/mcma-compose/mcma-backend/tests/test_storage_s3.py"}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_returns_size_and_content_type", "label": "test_stat_returns_size_and_content_type()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L72", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_falls_back_to_ext_content_type", "label": "test_stat_falls_back_to_ext_content_type()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L82", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "label": "test_stat_not_found_raises_storage_error()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L91", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_true", "label": "test_exists_true()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L104", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_false_on_404", "label": "test_exists_false_on_404()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L111", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_delete_calls_delete_object", "label": "test_delete_calls_delete_object()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L123", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "label": "test_open_range_full()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L136", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "label": "test_open_range_partial()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L153", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "label": "test_open_range_not_found_raises_storage_error()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L171", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "label": "test_as_local_path_yields_file_with_content()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L185", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "label": "test_as_local_path_cleans_up_on_error()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L198", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_returns_s3_storage_when_configured", "label": "test_provider_returns_s3_storage_when_configured()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L218", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_raises_when_s3_bucket_missing", "label": "test_provider_raises_when_s3_bucket_missing()", "file_type": "code", "source_file": "tests/test_storage_s3.py", "source_location": "L238", "_callable": true}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_rationale_1", "label": "Unit tests for S3FileStorage \u2014 all S3 calls are mocked.", "file_type": "rationale", "source_file": "tests/test_storage_s3.py", "source_location": "L1"}, {"id": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_rationale_26", "label": "Async-iterable body that yields chunks from a bytes buffer.", "file_type": "rationale", "source_file": "tests/test_storage_s3.py", "source_location": "L26"}], "edges": [{"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "io", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L5", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L6", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L7", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "unittest_mock", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L8", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "pytest", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L10", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "app_domain_errors", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L11", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "app_infrastructure_storage_s3", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L12", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_storage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_storage", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_storage", "target": "s3filestorage", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L15", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_client_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L19", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_client_error", "target": "exception", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L19", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L25", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L28", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody_read", "relation": "method", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L32", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L36", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L36", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "target": "any", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L36", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_storage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L44", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_storage", "target": "s3filestorage", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L44", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L53", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L53", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L53", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_returns_size_and_content_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L72", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_returns_size_and_content_type", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L72", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_falls_back_to_ext_content_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L82", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_falls_back_to_ext_content_type", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L82", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L91", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L91", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_true", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L104", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_true", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L104", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_false_on_404", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L111", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_false_on_404", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L111", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_delete_calls_delete_object", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L123", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_delete_calls_delete_object", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L123", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L136", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L136", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L153", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L153", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L171", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L171", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L185", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L185", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L198", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "target": "s3filestorage", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L198", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_returns_s3_storage_when_configured", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L218", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_returns_s3_storage_when_configured", "target": "path", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L218", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_raises_when_s3_bucket_missing", "relation": "contains", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L238", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_storage", "target": "s3filestorage", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L16", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_storage", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_storage", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L45", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L58", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_returns_size_and_content_type", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L75", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_falls_back_to_ext_content_type", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L85", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_client_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L93", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L94", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_true", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L107", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_false_on_404", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_client_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L113", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_false_on_404", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L114", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_delete_calls_delete_object", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L125", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L140", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L142", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L158", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L160", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_client_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L173", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L175", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L188", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L190", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_client_error", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L200", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L204", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_rationale_1", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L1", "weight": 1.0}, {"source": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_rationale_26", "target": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "tests/test_storage_s3.py", "source_location": "L26", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_client_error", "callee": "ClientError", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L22", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_fakebody_init", "callee": "BytesIO", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L29", "receiver": "io"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "callee": "MagicMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L37", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L38", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_make_client_ctx", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L39", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "callee": "write_bytes", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L55", "receiver": "src"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L57", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L58", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "callee": "save_file", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L59", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_save_file_calls_put_object", "callee": "assert_awaited_once_with", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L61", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_returns_size_and_content_type", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L73", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_returns_size_and_content_type", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L75", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_returns_size_and_content_type", "callee": "stat", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L76", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_falls_back_to_ext_content_type", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L83", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_falls_back_to_ext_content_type", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L85", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_falls_back_to_ext_content_type", "callee": "stat", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L86", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L92", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L94", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "callee": "raises", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L95", "receiver": "pytest"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "callee": "StorageError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_storage_s3.py", "source_location": "L95"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_stat_not_found_raises_storage_error", "callee": "stat", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L96", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_true", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L105", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_true", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L107", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_true", "callee": "exists", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L108", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_false_on_404", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L112", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_false_on_404", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L114", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_exists_false_on_404", "callee": "exists", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L115", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_delete_calls_delete_object", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L124", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_delete_calls_delete_object", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L125", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_delete_calls_delete_object", "callee": "delete", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L126", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_delete_calls_delete_object", "callee": "assert_awaited_once_with", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L128", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L138", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L142", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "callee": "open_range", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L143", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "callee": "join", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L146", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_full", "callee": "assert_awaited_once_with", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L148", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L156", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L160", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "callee": "open_range", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L161", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "callee": "join", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L162", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_partial", "callee": "assert_awaited_once_with", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L166", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L172", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L175", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "callee": "raises", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L176", "receiver": "pytest"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "callee": "StorageError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_storage_s3.py", "source_location": "L176"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_open_range_not_found_raises_storage_error", "callee": "open_range", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L177", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L187", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L190", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "callee": "as_local_path", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L191", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "callee": "exists", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L192", "receiver": "path"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "callee": "read_bytes", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L193", "receiver": "path"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_yields_file_with_content", "callee": "exists", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L195", "receiver": "path"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "callee": "AsyncMock", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L199", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "callee": "object", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L204", "receiver": "patch"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "callee": "raises", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L205", "receiver": "pytest"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "callee": "StorageError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_storage_s3.py", "source_location": "L205"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "callee": "as_local_path", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L206", "receiver": "storage"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "callee": "append", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L207", "receiver": "captured"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "callee": "path", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_storage_s3.py", "source_location": "L207"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_as_local_path_cleans_up_on_error", "callee": "exists", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L210", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_returns_s3_storage_when_configured", "callee": "Settings", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L224", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_returns_s3_storage_when_configured", "callee": "patch", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L231", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_returns_s3_storage_when_configured", "callee": "get_file_storage", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L232", "receiver": "provider"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_returns_s3_storage_when_configured", "callee": "S3FileStorage", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_storage_s3.py", "source_location": "L234"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_raises_when_s3_bucket_missing", "callee": "Settings", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L244", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_raises_when_s3_bucket_missing", "callee": "patch", "is_member_call": false, "source_file": "tests/test_storage_s3.py", "source_location": "L250", "receiver": null}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_raises_when_s3_bucket_missing", "callee": "raises", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L251", "receiver": "pytest"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_raises_when_s3_bucket_missing", "callee": "RuntimeError", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "tests/test_storage_s3.py", "source_location": "L251"}, {"caller_nid": "users_senko_work_mcma_compose_mcma_backend_tests_test_storage_s3_test_provider_raises_when_s3_bucket_missing", "callee": "get_file_storage", "is_member_call": true, "source_file": "tests/test_storage_s3.py", "source_location": "L252", "receiver": "provider"}]} |