PBSOI CISG MVP v0.9 — Impact Engine

/mnt/data/PBSOI_CISG_MVP_v0.9/pbsio · Python repository · evidence-grounded static graph

13
Files
4888
Nodes
13367
Edges
458
Impact targets
1635
Data values
66
State regions
0
Defects
137
Motifs

MVP pipeline

Repository → CISG → Data/State Closure → Impact Engine → review scope

v0.9 technical view preserves one-hop direct evidence from bounded derived impact. Derived impact uses resolved local-call reachability and shared-state coupling; it is review scope, not a claim that every reachable entity will change at runtime.

Metrics

{
  "loaded_files": 13,
  "nodes": 4888,
  "edges": 13367,
  "node_types": {
    "file": 13,
    "function": 125,
    "class": 9,
    "method": 78,
    "boundary_module": 22,
    "control": 586,
    "data_value": 1635,
    "state_region": 66,
    "module_binding": 19,
    "data_sink": 229,
    "boundary_call": 483,
    "data_phi": 772,
    "data_use": 452,
    "data_undefined": 362,
    "exception_handler": 19,
    "effect": 2,
    "exception_event": 9,
    "boundary_exception": 7
  },
  "edge_types": {
    "contains": 212,
    "imports": 94,
    "controls": 586,
    "defines": 2407,
    "reads_state": 210,
    "reads_binding": 40,
    "flows_to": 2991,
    "guards": 703,
    "contains_data": 686,
    "calls": 3245,
    "returns_value": 442,
    "phi_input": 1544,
    "contains_exception_handler": 19,
    "writes_state": 68,
    "aliases_at_definition": 47,
    "effect": 47,
    "exception_value": 8,
    "raises": 9,
    "exception_flow": 9
  },
  "resolved_local_calls": 610,
  "boundary_calls": 2635,
  "findings_by_category": {
    "anomaly": 13,
    "hotspot": 142
  },
  "findings_by_severity": {
    "info": 155
  },
  "motif_instances": 137,
  "motif_clusters": 30,
  "data_values": 1635,
  "phi_nodes": 772,
  "data_edges": 8142,
  "alias_edges": 47,
  "state_regions": 66,
  "state_reads": 210,
  "state_writes": 68,
  "module_binding_reads": 40,
  "exception_handlers": 19,
  "explicit_raises": 9,
  "unresolved_local_uses": 0,
  "warnings": 0
}

Highest review breadth

KindTargetReview breadthPath
function616cli.py
function265cache.py
function224impact.py
function218analyzer.py
function216impact.py
function196cli.py
function193semantic_diff.py
function186impact.py
function175product_ui.py
function174report.py
function165semantic_diff.py
function160pr_review.py
function155impact.py
function150product_ui.py
function149report.py
function149pr_review.py
function142analyzer.py
function140report.py
function140product_ui.py
function136analyzer.py

Warnings

  • None

Impact Engine

Direct = one-hop graph evidence. Derived = bounded resolved call paths + shared-state coupling. No single impact score is treated as truth.

Choose a target.

Code-Induced Semantic Graph

Overview shows 224 of 225 file/class/function entities. Full graph is in cisg.json / cisg.graphml.
analyzer.pyanalyzer.py{"id": "file_51170169a2bbf138", "type": "file", "label": "analyzer.py", "path": "analyzer.py", "module": "analyzer", "status": "observed", "confidence": 1.0, "evidence": {"path": "analyzer.py", "line": 1, "end_line": 927, "source_hash": "4df04e2eaea2f72a1f58dc3fee1be6432f0c9ef39b3ccf8bcadd8ac8352de5b2", "source_kind": "code"}}infer_effectinfer_effect{"id": "fn_9fb138022e08b6d0", "type": "function", "label": "infer_effect", "path": "analyzer.py", "module": "analyzer", "symbol": "infer_effect", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_0851728aeeafa83b685ee7af", "fragment_source_hash": "84d6fab5d13610abece1444c73e079f1d829306462fea759a60011c0ebe1ab6a", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 30, "end_line": 46, "source_hash": "84d6fab5d13610abece1444c73e079f1d829306462fea759a60011c0ebe1ab6a", "source_kind": "code"}, "shape_signature": "shape_f748abcbdaaa94ae", "motif_signature": "motif_exact_6fafdc4b734a", "motif_coarse_signature": "motif_coarse_b4a27ad8a6cb", "features": {"controls": ["branch", "branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["analyzer:global:EFFECT_PATTERNS[]"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 9}}EvidenceEvidence{"id": "class_670bb98443848b2f", "type": "class", "label": "Evidence", "path": "analyzer.py", "module": "analyzer", "symbol": "Evidence", "status": "observed", "confidence": 1.0, "evidence": {"path": "analyzer.py", "line": 51, "end_line": 56, "source_hash": "4df04e2eaea2f72a1f58dc3fee1be6432f0c9ef39b3ccf8bcadd8ac8352de5b2", "source_kind": "code"}}stable_idstable_id{"id": "fn_0a451a5533c79689", "type": "function", "label": "stable_id", "path": "analyzer.py", "module": "analyzer", "symbol": "stable_id", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d2de13e6895c5ce1218e727d", "fragment_source_hash": "7e9a2d14491a5d266d28b09f501da89bcb14b4ff940df4439d2c1c7eee88c73e", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 59, "end_line": 61, "source_hash": "7e9a2d14491a5d266d28b09f501da89bcb14b4ff940df4439d2c1c7eee88c73e", "source_kind": "code"}, "shape_signature": "shape_cff3429fc68d953c", "motif_signature": "motif_exact_4452dbae8c96", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 5}}sha256_textsha256_text{"id": "fn_6a80ee6b70f4f879", "type": "function", "label": "sha256_text", "path": "analyzer.py", "module": "analyzer", "symbol": "sha256_text", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a6018aef514c0df85001c65d", "fragment_source_hash": "8bc6dac7e5b1831ce26e9601cec1c7cbe2ca129cfae4586a387c76577fa29983", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 64, "end_line": 65, "source_hash": "8bc6dac7e5b1831ce26e9601cec1c7cbe2ca129cfae4586a387c76577fa29983", "source_kind": "code"}, "shape_signature": "shape_e47f524ca97aeb64", "motif_signature": "motif_exact_ac0fccfcaff6", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 3}}module_namemodule_name{"id": "fn_011aaeb1751a3478", "type": "function", "label": "module_name", "path": "analyzer.py", "module": "analyzer", "symbol": "module_name", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_4e50378fb0f0b9455fb1d6d6", "fragment_source_hash": "3ab31db6176f633e20597013e4a3f3a653cc5ba28188983afd071987f180e8ff", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 68, "end_line": 73, "source_hash": "3ab31db6176f633e20597013e4a3f3a653cc5ba28188983afd071987f180e8ff", "source_kind": "code"}, "shape_signature": "shape_6beded6048eca929", "motif_signature": "motif_exact_f76fac0b6c29", "motif_coarse_signature": "motif_coarse_69581341d26f", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}node_textnode_text{"id": "fn_ee763d54df671f46", "type": "function", "label": "node_text", "path": "analyzer.py", "module": "analyzer", "symbol": "node_text", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a08048975114c16905a8e142", "fragment_source_hash": "9f4d49d4c5565dee65c52a93e75637f113fc5e2c5c8ae4a616db92dacbca551e", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 76, "end_line": 86, "source_hash": "9f4d49d4c5565dee65c52a93e75637f113fc5e2c5c8ae4a616db92dacbca551e", "source_kind": "code"}, "shape_signature": "shape_86d381bc4f5178df", "motif_signature": "motif_exact_42ab17443866", "motif_coarse_signature": "motif_coarse_f4a86b4f0a93", "features": {"controls": ["branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 3, "boundary_calls": 5}}resolve_relativeresolve_relative{"id": "fn_a2d53a02f10c9ecb", "type": "function", "label": "resolve_relative", "path": "analyzer.py", "module": "analyzer", "symbol": "resolve_relative", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_113f3575b7e2781623511e70", "fragment_source_hash": "d188dbd2ceff149d1c269aaaeb1ab9b20e09263a2cdead4f13f7842f9f43ecd6", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 89, "end_line": 100, "source_hash": "d188dbd2ceff149d1c269aaaeb1ab9b20e09263a2cdead4f13f7842f9f43ecd6", "source_kind": "code"}, "shape_signature": "shape_3258e53a07fb1a39", "motif_signature": "motif_exact_33d99e516bf0", "motif_coarse_signature": "motif_coarse_b4a27ad8a6cb", "features": {"controls": ["branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 6}}iter_python_filesiter_python_files{"id": "fn_b9e500bcbdb5e0b0", "type": "function", "label": "iter_python_files", "path": "analyzer.py", "module": "analyzer", "symbol": "iter_python_files", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_5affed7d85e61c6c1f2f15d4", "fragment_source_hash": "200ece370aeee2fa252d1764efc7b2c2ba4069e10324cceff21202f791a6fce3", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 103, "end_line": 119, "source_hash": "200ece370aeee2fa252d1764efc7b2c2ba4069e10324cceff21202f791a6fce3", "source_kind": "code"}, "shape_signature": "shape_a1bba230a40dd491", "motif_signature": "motif_exact_c6f2c448345e", "motif_coarse_signature": "motif_coarse_6b17282fe849", "features": {"controls": ["for_loop", "branch", "try", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 5}}FunctionScannerFunctionScanner{"id": "class_cc81f6e34f681148", "type": "class", "label": "FunctionScanner", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner", "status": "observed", "confidence": 1.0, "evidence": {"path": "analyzer.py", "line": 122, "end_line": 184, "source_hash": "4df04e2eaea2f72a1f58dc3fee1be6432f0c9ef39b3ccf8bcadd8ac8352de5b2", "source_kind": "code"}}FunctionScanner.__init__FunctionScanner.__init__{"id": "fn_f19945b211f6562b", "type": "method", "label": "FunctionScanner.__init__", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.__init__", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_c1730ad6de5ce78f32f87639", "fragment_source_hash": "6f631d57bfc93637b4b1e9d73991f98c22818718f6223e2279fd11203a499073", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 123, "end_line": 131, "source_hash": "6f631d57bfc93637b4b1e9d73991f98c22818718f6223e2279fd11203a499073", "source_kind": "code"}, "shape_signature": "shape_9c6fb869ac152adb", "motif_signature": "motif_exact_de1d2ed658d1", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 8, "state_read_targets": [], "state_write_targets": ["analyzer:FunctionScanner:self.calls", "analyzer:FunctionScanner:self.controls", "analyzer:FunctionScanner:self.effects", "analyzer:FunctionScanner:self.file_rel", "analyzer:FunctionScanner:self.issues", "analyzer:FunctionScanner:self.owner", "analyzer:FunctionScanner:self.state_reads", "analyzer:FunctionScanner:self.state_writes"], "local_calls": 0, "boundary_calls": 0}}FunctionScanner._controlFunctionScanner._control{"id": "fn_ddb2aaf2020f98c1", "type": "method", "label": "FunctionScanner._control", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner._control", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_30f812c5b2c1a611bcef09e8", "fragment_source_hash": "b9f6fb52caddaafb3df75cf52ee0b3e0a6f421fd4793834357bf02b14f052414", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 133, "end_line": 135, "source_hash": "b9f6fb52caddaafb3df75cf52ee0b3e0a6f421fd4793834357bf02b14f052414", "source_kind": "code"}, "shape_signature": "shape_d25eadf61bf980ab", "motif_signature": "motif_exact_4682f995915c", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["analyzer:FunctionScanner:self.controls"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}FunctionScanner.visit_IfFunctionScanner.visit_If{"id": "fn_e3a3cf223430c19e", "type": "method", "label": "FunctionScanner.visit_If", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_If", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_2d4792e2ba1d038c7edf6956", "fragment_source_hash": "b0aa139941a6d8c11f4d60ec6ee03456d100336e98c4dcf19a6abf82f06b628d", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 137, "end_line": 137, "source_hash": "b0aa139941a6d8c11f4d60ec6ee03456d100336e98c4dcf19a6abf82f06b628d", "source_kind": "code"}, "shape_signature": "shape_2186afaf5798e002", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}FunctionScanner.visit_ForFunctionScanner.visit_For{"id": "fn_2e0e9cf9489407a9", "type": "method", "label": "FunctionScanner.visit_For", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_For", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_753753ce5c7728b12a487d93", "fragment_source_hash": "b61d383fc4b1b16022fc315a7b3a6db936eb981aa286cab114dbd2debc2ce1de", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 138, "end_line": 138, "source_hash": "b61d383fc4b1b16022fc315a7b3a6db936eb981aa286cab114dbd2debc2ce1de", "source_kind": "code"}, "shape_signature": "shape_f1910aa4fc86c11e", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}FunctionScanner.visit_AsyncForFunctionScanner.visit_Asy…{"id": "fn_45e09865c6612ad3", "type": "method", "label": "FunctionScanner.visit_AsyncFor", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_AsyncFor", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_3e0a573bc0c4a70047d9404b", "fragment_source_hash": "aaf9f67e5aef9505b3afca3fa21382937fcb1aa605c6b3c6767bd1561d4d0de8", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 139, "end_line": 139, "source_hash": "aaf9f67e5aef9505b3afca3fa21382937fcb1aa605c6b3c6767bd1561d4d0de8", "source_kind": "code"}, "shape_signature": "shape_7bfe7d1aa63304e4", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}FunctionScanner.visit_WhileFunctionScanner.visit_While{"id": "fn_107779efa34d23dd", "type": "method", "label": "FunctionScanner.visit_While", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_While", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e69ee7141345894ae9e9586e", "fragment_source_hash": "d1fcc2ae2b93532e865e38b366babc5551239498592dd241c6cdd3285d9fda3d", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 140, "end_line": 140, "source_hash": "d1fcc2ae2b93532e865e38b366babc5551239498592dd241c6cdd3285d9fda3d", "source_kind": "code"}, "shape_signature": "shape_20932819d9cbafee", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}FunctionScanner.visit_WithFunctionScanner.visit_With{"id": "fn_3e1c92a478ef436f", "type": "method", "label": "FunctionScanner.visit_With", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_With", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_9563f6f6717e49636bf1ad61", "fragment_source_hash": "db3ec6fa435243cd4a3cb39992ba2f7c5f7c15441447eb09de965aa998db3e89", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 141, "end_line": 141, "source_hash": "db3ec6fa435243cd4a3cb39992ba2f7c5f7c15441447eb09de965aa998db3e89", "source_kind": "code"}, "shape_signature": "shape_e97008d114ec42f2", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}FunctionScanner.visit_AsyncWithFunctionScanner.visit_Asy…{"id": "fn_7ca0a3cca2b5d88d", "type": "method", "label": "FunctionScanner.visit_AsyncWith", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_AsyncWith", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_2404351737962fdbe25da1e6", "fragment_source_hash": "d5b3399303b577b9118b2ace713c61a1496c6ebf89c47fcea48933cf06411fcb", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 142, "end_line": 142, "source_hash": "d5b3399303b577b9118b2ace713c61a1496c6ebf89c47fcea48933cf06411fcb", "source_kind": "code"}, "shape_signature": "shape_5d52280dba10cb5e", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}FunctionScanner.visit_MatchFunctionScanner.visit_Match{"id": "fn_94a0e3c386d5e7fd", "type": "method", "label": "FunctionScanner.visit_Match", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_Match", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_0e2ad0a7c70ece08ecb961e9", "fragment_source_hash": "b2edf53ed4d534772fef3af29f367ccf6a991be0f3613f034f09576a4620d9eb", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 143, "end_line": 143, "source_hash": "b2edf53ed4d534772fef3af29f367ccf6a991be0f3613f034f09576a4620d9eb", "source_kind": "code"}, "shape_signature": "shape_d970a992f880bc44", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}FunctionScanner.visit_TryFunctionScanner.visit_Try{"id": "fn_8ced1586d6fc4a63", "type": "method", "label": "FunctionScanner.visit_Try", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_Try", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e90239a8a86d46a0f230c3d8", "fragment_source_hash": "d7c22f2c5e6c7901dab9e98773398f99adc30722743e3c2fff011a1c383fc52b", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 145, "end_line": 154, "source_hash": "d7c22f2c5e6c7901dab9e98773398f99adc30722743e3c2fff011a1c383fc52b", "source_kind": "code"}, "shape_signature": "shape_cf46a96d840fd4a1", "motif_signature": "motif_exact_e9a8746ce978", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["for_loop", "branch", "branch"], "effects": [], "state_reads": 3, "state_writes": 0, "state_read_targets": ["analyzer:FunctionScanner:self.controls", "analyzer:FunctionScanner:self.issues"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 8}}FunctionScanner.visit_CallFunctionScanner.visit_Call{"id": "fn_5e14a7fdb4c3bbe8", "type": "method", "label": "FunctionScanner.visit_Call", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_Call", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_48aa7be03349800f6f7a3c75", "fragment_source_hash": "bfd59f680c39366259125b89a01be36a507fbb7fc4a1bd495e8598c022a4f268", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 156, "end_line": 162, "source_hash": "bfd59f680c39366259125b89a01be36a507fbb7fc4a1bd495e8598c022a4f268", "source_kind": "code"}, "shape_signature": "shape_304e9bfb2dcd9300", "motif_signature": "motif_exact_e77ec9bdcac7", "motif_coarse_signature": "motif_coarse_ef5db5e5ba38", "features": {"controls": ["branch"], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["analyzer:FunctionScanner:self.calls", "analyzer:FunctionScanner:self.effects"], "state_write_targets": [], "local_calls": 2, "boundary_calls": 4}}FunctionScanner.visit_AttributeFunctionScanner.visit_Att…{"id": "fn_9bd37da56d9c46ab", "type": "method", "label": "FunctionScanner.visit_Attribute", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_Attribute", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_191704f6e6f8b95a8f5f1ed4", "fragment_source_hash": "5fb7d8a414dbd050530fc81997382662d9eca1d195f5beefe4b25e8253c5ac62", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 164, "end_line": 168, "source_hash": "5fb7d8a414dbd050530fc81997382662d9eca1d195f5beefe4b25e8253c5ac62", "source_kind": "code"}, "shape_signature": "shape_68108108cc4f5c74", "motif_signature": "motif_exact_dd2125dea44a", "motif_coarse_signature": "motif_coarse_c10ceceefb4d", "features": {"controls": ["branch"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["analyzer:FunctionScanner:self.state_reads"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 4}}FunctionScanner.visit_AssignFunctionScanner.visit_Assign{"id": "fn_2b35520a0cddc4cc", "type": "method", "label": "FunctionScanner.visit_Assign", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_Assign", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_7203ed070520454dc870c961", "fragment_source_hash": "9434dc10534b2aee582b1083d5493e1a4c353bf3a7de08f7a0f3f0233b167dad", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 170, "end_line": 174, "source_hash": "9434dc10534b2aee582b1083d5493e1a4c353bf3a7de08f7a0f3f0233b167dad", "source_kind": "code"}, "shape_signature": "shape_1bdc6d790044c9e9", "motif_signature": "motif_exact_c12a91193ac1", "motif_coarse_signature": "motif_coarse_662d65d73597", "features": {"controls": ["for_loop", "branch"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["analyzer:FunctionScanner:self.state_writes"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 3}}FunctionScanner.visit_AnnAssignFunctionScanner.visit_Ann…{"id": "fn_2d6c24b23ec4622c", "type": "method", "label": "FunctionScanner.visit_AnnAssign", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_AnnAssign", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_4da4dbc770c75663c7faf9ad", "fragment_source_hash": "facb2127d0479e5d86c1adbf3d13eaa8c6ca91f53849a687e572200c1c2d542d", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 176, "end_line": 179, "source_hash": "facb2127d0479e5d86c1adbf3d13eaa8c6ca91f53849a687e572200c1c2d542d", "source_kind": "code"}, "shape_signature": "shape_995f5308a8667c92", "motif_signature": "motif_exact_d978a69bad65", "motif_coarse_signature": "motif_coarse_c10ceceefb4d", "features": {"controls": ["branch"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["analyzer:FunctionScanner:self.state_writes"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 3}}FunctionScanner.visit_AugAssignFunctionScanner.visit_Aug…{"id": "fn_5cab64292dfc66a4", "type": "method", "label": "FunctionScanner.visit_AugAssign", "path": "analyzer.py", "module": "analyzer", "symbol": "FunctionScanner.visit_AugAssign", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_13fc773b0248a6a1ba96b6b0", "fragment_source_hash": "13c73240c6fdb37d0bba26880726cf212a362bd1db200dbf6de809d16aec0908", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 181, "end_line": 184, "source_hash": "13c73240c6fdb37d0bba26880726cf212a362bd1db200dbf6de809d16aec0908", "source_kind": "code"}, "shape_signature": "shape_27393b005662b6f6", "motif_signature": "motif_exact_d978a69bad65", "motif_coarse_signature": "motif_coarse_c10ceceefb4d", "features": {"controls": ["branch"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["analyzer:FunctionScanner:self.state_writes"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 3}}block_unreachableblock_unreachable{"id": "fn_c128bc8f61fbea61", "type": "function", "label": "block_unreachable", "path": "analyzer.py", "module": "analyzer", "symbol": "block_unreachable", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d924874e6d2394f35ea6dc3b", "fragment_source_hash": "142a45be647b6265d790d009796f0f8089475e1adf5e32f2a177cdcacf89c9fd", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 187, "end_line": 207, "source_hash": "142a45be647b6265d790d009796f0f8089475e1adf5e32f2a177cdcacf89c9fd", "source_kind": "code"}, "shape_signature": "shape_b2028369af05d287", "motif_signature": "motif_exact_0e72c01b02e9", "motif_coarse_signature": "motif_coarse_1d063c7b37b2", "features": {"controls": ["for_loop", "branch", "branch", "for_loop", "branch", "branch", "for_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 8}}normalized_function_shapenormalized_function_shape{"id": "fn_4853ec82def2958a", "type": "function", "label": "normalized_function_shape", "path": "analyzer.py", "module": "analyzer", "symbol": "normalized_function_shape", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e4cc367666b492cf0c36e061", "fragment_source_hash": "e3e5a12629a583c87bf75487ff12808a17c43dda9e30af30aa8b1c8fdd264b67", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 210, "end_line": 231, "source_hash": "e3e5a12629a583c87bf75487ff12808a17c43dda9e30af30aa8b1c8fdd264b67", "source_kind": "code"}, "shape_signature": "shape_a50c6bac851e3cc5", "motif_signature": "motif_exact_f5f0abe211a1", "motif_coarse_signature": "motif_coarse_6b17282fe849", "features": {"controls": ["try", "for_loop", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 8}}function_shape_signaturefunction_shape_signature{"id": "fn_7773c5cedea2a64a", "type": "function", "label": "function_shape_signature", "path": "analyzer.py", "module": "analyzer", "symbol": "function_shape_signature", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_3c9dc2dd81e2ead743a72c1a", "fragment_source_hash": "14304b79852707eefbd30b34ed23d102a94d2e4434e3dc60fb87986721644400", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 234, "end_line": 236, "source_hash": "14304b79852707eefbd30b34ed23d102a94d2e4434e3dc60fb87986721644400", "source_kind": "code"}, "shape_signature": "shape_2a4895c9ca542462", "motif_signature": "motif_exact_00dfbb6aacb8", "motif_coarse_signature": "motif_coarse_125fe4728a6b", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 3}}fragment_fingerprintfragment_fingerprint{"id": "fn_04b0d0bb2b0607e7", "type": "function", "label": "fragment_fingerprint", "path": "analyzer.py", "module": "analyzer", "symbol": "fragment_fingerprint", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8f4d699c25858018a7619d86", "fragment_source_hash": "b12f38db973b9df2a58f6634c3028ecc16ddf71adc3d4bca97c73d99c8532f5f", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 239, "end_line": 247, "source_hash": "b12f38db973b9df2a58f6634c3028ecc16ddf71adc3d4bca97c73d99c8532f5f", "source_kind": "code"}, "shape_signature": "shape_b254de90a5e3e0c9", "motif_signature": "motif_exact_b3c2e0b59537", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}fragment_source_hashfragment_source_hash{"id": "fn_399ea8d269a3753e", "type": "function", "label": "fragment_source_hash", "path": "analyzer.py", "module": "analyzer", "symbol": "fragment_source_hash", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_26cb80503f1f3a56ec05d9f9", "fragment_source_hash": "93f8e5333387029464eafb32bb40be70b286070b55735e2871c44b85f7f82b12", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 250, "end_line": 256, "source_hash": "93f8e5333387029464eafb32bb40be70b286070b55735e2871c44b85f7f82b12", "source_kind": "code"}, "shape_signature": "shape_23537724ef87f449", "motif_signature": "motif_exact_b65f0af65a78", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 13}}fragment_context_fingerprintfragment_context_fingerprint{"id": "fn_8a56d9a16f7e2bbe", "type": "function", "label": "fragment_context_fingerprint", "path": "analyzer.py", "module": "analyzer", "symbol": "fragment_context_fingerprint", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_33fe9dbc4462418ba112f08e", "fragment_source_hash": "a202c0712da66d47c336b1f96056ec3cb4d0a71897726b1a712c20b32883b5f0", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 259, "end_line": 265, "source_hash": "a202c0712da66d47c336b1f96056ec3cb4d0a71897726b1a712c20b32883b5f0", "source_kind": "code"}, "shape_signature": "shape_9538f8ac003c150d", "motif_signature": "motif_exact_b91abcf0b347", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 11}}_clone_rebound_source_hash_clone_rebound_source_hash{"id": "fn_f5ddb46b98d7dacb", "type": "function", "label": "_clone_rebound_source_hash", "path": "analyzer.py", "module": "analyzer", "symbol": "_clone_rebound_source_hash", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8baf8ce2918be7aef1f18dd7", "fragment_source_hash": "95fb45c567b92673514b9193739099350ca0cf822ba61c5445c77fb39ea75226", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 268, "end_line": 287, "source_hash": "95fb45c567b92673514b9193739099350ca0cf822ba61c5445c77fb39ea75226", "source_kind": "code"}, "shape_signature": "shape_539ba87b78cf822a", "motif_signature": "motif_exact_16fb12e6c15f", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["branch", "branch", "branch", "for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 9}}_build_fragment_reuse_index_build_fragment_reuse_index{"id": "fn_1ea8f6d46b345ac5", "type": "function", "label": "_build_fragment_reuse_index", "path": "analyzer.py", "module": "analyzer", "symbol": "_build_fragment_reuse_index", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_448c8e78a998b6587a2b234f", "fragment_source_hash": "bbc430867c4041a0cf0e0a489fba2638c767a66a463e04a935c1982d74f68af2", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 290, "end_line": 346, "source_hash": "bbc430867c4041a0cf0e0a489fba2638c767a66a463e04a935c1982d74f68af2", "source_kind": "code"}, "shape_signature": "shape_24ccb1784550e48e", "motif_signature": "motif_exact_44161d0d0141", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["for_loop", "branch", "branch", "branch", "for_loop", "branch", "branch", "branch", "for_loop", "branch", "branch", "for_loop", "branch", "branch", "branch", "for_loop", "branch", "for_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 52}}_reuse_function_fragment_reuse_function_fragment{"id": "fn_9aa8d877a4c23a2e", "type": "function", "label": "_reuse_function_fragment", "path": "analyzer.py", "module": "analyzer", "symbol": "_reuse_function_fragment", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_1cbf15a3fc04e78f4a7e3e42", "fragment_source_hash": "d3b7ad702acaa18123d82517401e857fe43cb3d9e6c8b3f38ad5ddbf6c9719d1", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 349, "end_line": 381, "source_hash": "d3b7ad702acaa18123d82517401e857fe43cb3d9e6c8b3f38ad5ddbf6c9719d1", "source_kind": "code"}, "shape_signature": "shape_c2ae1dee93abf58e", "motif_signature": "motif_exact_4775dd144c08", "motif_coarse_signature": "motif_coarse_21f990ba2ff9", "features": {"controls": ["branch", "for_loop", "for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 2, "state_read_targets": [], "state_write_targets": ["param:nodes[]"], "local_calls": 1, "boundary_calls": 18}}motif_signaturemotif_signature{"id": "fn_e3992a45edc32427", "type": "function", "label": "motif_signature", "path": "analyzer.py", "module": "analyzer", "symbol": "motif_signature", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_ce35cdcffb55698b97830781", "fragment_source_hash": "5773df753f9149d80e5f3a0cc42f2222da90949ac37f8a5e228b95b52f660287", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 385, "end_line": 395, "source_hash": "5773df753f9149d80e5f3a0cc42f2222da90949ac37f8a5e228b95b52f660287", "source_kind": "code"}, "shape_signature": "shape_8718353c6782fc41", "motif_signature": "motif_exact_5a84b5644fc0", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 12}}coarse_motif_signaturecoarse_motif_signature{"id": "fn_3b4d050060354f05", "type": "function", "label": "coarse_motif_signature", "path": "analyzer.py", "module": "analyzer", "symbol": "coarse_motif_signature", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_dd9b4d22641182494feb5c3a", "fragment_source_hash": "f99ecb2997f0efa2b04e51522c9f48a0bbe033afc55787af575d746bce39b31d", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 397, "end_line": 412, "source_hash": "f99ecb2997f0efa2b04e51522c9f48a0bbe033afc55787af575d746bce39b31d", "source_kind": "code"}, "shape_signature": "shape_77d6fc36aedf46b3", "motif_signature": "motif_exact_3d54db2d5bd7", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 22}}infer_structural_motifsinfer_structural_motifs{"id": "fn_b965f29db31ad7d8", "type": "function", "label": "infer_structural_motifs", "path": "analyzer.py", "module": "analyzer", "symbol": "infer_structural_motifs", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_91c2a3f9032c2f257c9862d8", "fragment_source_hash": "b240b1978c59fbb9048269d5dec92bdf8775a18686dfa785d90cc9d2688c43c9", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 415, "end_line": 436, "source_hash": "b240b1978c59fbb9048269d5dec92bdf8775a18686dfa785d90cc9d2688c43c9", "source_kind": "code"}, "shape_signature": "shape_2a82af0b30e8ad9a", "motif_signature": "motif_exact_8a2e69ae16d8", "motif_coarse_signature": "motif_coarse_b4a27ad8a6cb", "features": {"controls": ["branch", "branch", "branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 19}}_edge_evidence_path_edge_evidence_path{"id": "fn_5631fb71b710de32", "type": "function", "label": "_edge_evidence_path", "path": "analyzer.py", "module": "analyzer", "symbol": "_edge_evidence_path", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e75e6b13a19d9a3a9948a931", "fragment_source_hash": "5e7ea1dd174b7393d17f9118b61b1d1299324638cdadb69d8a8ea043d6ce444a", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 450, "end_line": 454, "source_hash": "5e7ea1dd174b7393d17f9118b61b1d1299324638cdadb69d8a8ea043d6ce444a", "source_kind": "code"}, "shape_signature": "shape_6c007404c5383fa8", "motif_signature": "motif_exact_f76fac0b6c29", "motif_coarse_signature": "motif_coarse_69581341d26f", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}_preload_reused_graph_preload_reused_graph{"id": "fn_0e2d8dfd8a4679c4", "type": "function", "label": "_preload_reused_graph", "path": "analyzer.py", "module": "analyzer", "symbol": "_preload_reused_graph", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d65ffb613bd993bffafa8dd1", "fragment_source_hash": "ee72cc35edf08a2548ca12104cece1aff111e11b4809b00a13dbcfd0427933aa", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 457, "end_line": 480, "source_hash": "ee72cc35edf08a2548ca12104cece1aff111e11b4809b00a13dbcfd0427933aa", "source_kind": "code"}, "shape_signature": "shape_707bbf6df073f410", "motif_signature": "motif_exact_bc45f5deb432", "motif_coarse_signature": "motif_coarse_1d063c7b37b2", "features": {"controls": ["for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 14}}_garbage_collect_shared_nodes_garbage_collect_shared_n…{"id": "fn_9c48886e3e55abd0", "type": "function", "label": "_garbage_collect_shared_nodes", "path": "analyzer.py", "module": "analyzer", "symbol": "_garbage_collect_shared_nodes", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_cb8e48f882f6a9794d72b957", "fragment_source_hash": "87b8a25836e5ed50f0dbe75f3e166a06871cfd065feba7e975bf7739147b2213", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 483, "end_line": 490, "source_hash": "87b8a25836e5ed50f0dbe75f3e166a06871cfd065feba7e975bf7739147b2213", "source_kind": "code"}, "shape_signature": "shape_dfde1406f9b75a83", "motif_signature": "motif_exact_aa83a40d90ab", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 9}}analyzeanalyze{"id": "fn_4d64b5f12bb99f0b", "type": "function", "label": "analyze", "path": "analyzer.py", "module": "analyzer", "symbol": "analyze", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_c208830ad97fef6d93098f72", "fragment_source_hash": "a7715c68731de872658f19d0ecf0d5c126ad5cafa30c37b1d836c62f508879f9", "fragment_context_fingerprint": "ctx_077e8177dae620ae7c6d6d9f", "evidence": {"path": "analyzer.py", "line": 493, "end_line": 927, "source_hash": "a7715c68731de872658f19d0ecf0d5c126ad5cafa30c37b1d836c62f508879f9", "source_kind": "code"}, "shape_signature": "shape_a645a8304bc37c04", "motif_signature": "motif_exact_e54ff16307f2", "motif_coarse_signature": "motif_coarse_71bf8330f5e4", "features": {"controls": ["branch", "branch", "for_loop", "branch", "for_loop", "branch", "branch", "try", "branch", "branch", "branch", "branch", "for_loop", "branch", "try", "for_loop", "branch", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch", "branch", "branch", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "branch", "for_loop", "for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch"], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 53, "boundary_calls": 261}}cache.pycache.py{"id": "file_d9643ebd7eb9c0a0", "type": "file", "label": "cache.py", "path": "cache.py", "module": "cache", "status": "observed", "confidence": 1.0, "evidence": {"path": "cache.py", "line": 1, "end_line": 318, "source_hash": "bb7f4ff6a3557f63adfa48e1e942230b16132917375aac4a6dc4815ba72c72b2", "source_kind": "code"}}_json_hash_json_hash{"id": "fn_762e23e98dbe61cb", "type": "function", "label": "_json_hash", "path": "cache.py", "module": "cache", "symbol": "_json_hash", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_4800c35f61aa2f120594a1d7", "fragment_source_hash": "1f92715449bbf33a75515507304022e8277f93f59575855926b5f522492686e8", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 18, "end_line": 20, "source_hash": "1f92715449bbf33a75515507304022e8277f93f59575855926b5f522492686e8", "source_kind": "code"}, "shape_signature": "shape_f4578e79dca63e8a", "motif_signature": "motif_exact_b3c2e0b59537", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}analysis_configanalysis_config{"id": "fn_7904375139904ca6", "type": "function", "label": "analysis_config", "path": "cache.py", "module": "cache", "symbol": "analysis_config", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_ca6a361327faa6ab4479f075", "fragment_source_hash": "fe23002dcd5a07b000385980121071796bfb2871ef7d205ce74173938dfd31f8", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 23, "end_line": 30, "source_hash": "fe23002dcd5a07b000385980121071796bfb2871ef7d205ce74173938dfd31f8", "source_kind": "code"}, "shape_signature": "shape_75008fba18fa122e", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}config_fingerprintconfig_fingerprint{"id": "fn_583e1ea9148a77be", "type": "function", "label": "config_fingerprint", "path": "cache.py", "module": "cache", "symbol": "config_fingerprint", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_689fe2fb6b1143f8a242b8ab", "fragment_source_hash": "27b1864d1162e33c5e4ff38ae96f8402c37b78436a63fb48a7a30613921ff010", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 33, "end_line": 34, "source_hash": "27b1864d1162e33c5e4ff38ae96f8402c37b78436a63fb48a7a30613921ff010", "source_kind": "code"}, "shape_signature": "shape_51dc290c3d65e07e", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}_iter_python_candidates_iter_python_candidates{"id": "fn_ae7b43b039714656", "type": "function", "label": "_iter_python_candidates", "path": "cache.py", "module": "cache", "symbol": "_iter_python_candidates", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d59893106ef9964bddadf9d0", "fragment_source_hash": "1d3ea7e333af01b20d35ea71d26f93b1661e3475dc4830551dde60a46a0d7e1a", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 37, "end_line": 45, "source_hash": "1d3ea7e333af01b20d35ea71d26f93b1661e3475dc4830551dde60a46a0d7e1a", "source_kind": "code"}, "shape_signature": "shape_3af424c9ca60a23b", "motif_signature": "motif_exact_869842f33f09", "motif_coarse_signature": "motif_coarse_ec19895b48ff", "features": {"controls": ["for_loop", "try", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}scan_python_manifestscan_python_manifest{"id": "fn_cbe340a8ce00d577", "type": "function", "label": "scan_python_manifest", "path": "cache.py", "module": "cache", "symbol": "scan_python_manifest", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_72b79f2c5b8f41009a15ef7a", "fragment_source_hash": "8ae3aeffee54004dad2c6452d4b8dae457c580bdde4c58ceeb05efdbb12d4c6e", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 48, "end_line": 82, "source_hash": "8ae3aeffee54004dad2c6452d4b8dae457c580bdde4c58ceeb05efdbb12d4c6e", "source_kind": "code"}, "shape_signature": "shape_62db8ddcc6ac06f8", "motif_signature": "motif_exact_9f6e9be48b46", "motif_coarse_signature": "motif_coarse_3bb754932ec1", "features": {"controls": ["for_loop", "try", "branch", "branch"], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 3, "boundary_calls": 12}}_atomic_bytes_atomic_bytes{"id": "fn_8ba4881a24dcd70d", "type": "function", "label": "_atomic_bytes", "path": "cache.py", "module": "cache", "symbol": "_atomic_bytes", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_bf90036d6dfad5c1383ff481", "fragment_source_hash": "117241a98aea7fc43f7df9da31d9a0e887d0d6cde82b072a808a0a5955ebc16e", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 85, "end_line": 89, "source_hash": "117241a98aea7fc43f7df9da31d9a0e887d0d6cde82b072a808a0a5955ebc16e", "source_kind": "code"}, "shape_signature": "shape_77f55a6f64c19520", "motif_signature": "motif_exact_d9334f05d9b5", "motif_coarse_signature": "motif_coarse_2a35739c27f5", "features": {"controls": [], "effects": ["file_io", "file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}_atomic_json_atomic_json{"id": "fn_77eb4b374697d7e1", "type": "function", "label": "_atomic_json", "path": "cache.py", "module": "cache", "symbol": "_atomic_json", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_db37fc3f1c49d421a054355e", "fragment_source_hash": "8748ffcf763a8d3ac2f8ff7a4cb369438574187b49658df5cd2e026c974e1bd4", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 92, "end_line": 94, "source_hash": "8748ffcf763a8d3ac2f8ff7a4cb369438574187b49658df5cd2e026c974e1bd4", "source_kind": "code"}, "shape_signature": "shape_ca4f9090b41c3311", "motif_signature": "motif_exact_d96d6867ecd2", "motif_coarse_signature": "motif_coarse_125fe4728a6b", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 2}}CacheStoreCacheStore{"id": "class_89c1511cf46ef01f", "type": "class", "label": "CacheStore", "path": "cache.py", "module": "cache", "symbol": "CacheStore", "status": "observed", "confidence": 1.0, "evidence": {"path": "cache.py", "line": 97, "end_line": 154, "source_hash": "bb7f4ff6a3557f63adfa48e1e942230b16132917375aac4a6dc4815ba72c72b2", "source_kind": "code"}}CacheStore.__init__CacheStore.__init__{"id": "fn_51589144657c1db9", "type": "method", "label": "CacheStore.__init__", "path": "cache.py", "module": "cache", "symbol": "CacheStore.__init__", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e96cb775e3341ef9bae6674c", "fragment_source_hash": "af0467f08c8eefd2b086a3a5c61fdcafd9d0f48a9f8b1c4be0735cbf63459dfd", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 98, "end_line": 102, "source_hash": "af0467f08c8eefd2b086a3a5c61fdcafd9d0f48a9f8b1c4be0735cbf63459dfd", "source_kind": "code"}, "shape_signature": "shape_1a727ac1c76d3fc6", "motif_signature": "motif_exact_d016575f37f0", "motif_coarse_signature": "motif_coarse_6eaa540462ca", "features": {"controls": [], "effects": [], "state_reads": 3, "state_writes": 4, "state_read_targets": ["cache:CacheStore:self.root"], "state_write_targets": ["cache:CacheStore:self.commits", "cache:CacheStore:self.graphs", "cache:CacheStore:self.reviews", "cache:CacheStore:self.root"], "local_calls": 0, "boundary_calls": 2}}CacheStore.graph_pathCacheStore.graph_path{"id": "fn_310e3f01b1d1f03e", "type": "method", "label": "CacheStore.graph_path", "path": "cache.py", "module": "cache", "symbol": "CacheStore.graph_path", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_be46222a1f778bec28120c93", "fragment_source_hash": "45d1ba27d4f344091e8e3cbe7a674ec05745b3b85406f4c9694b7f7e7a53bdf2", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 104, "end_line": 105, "source_hash": "45d1ba27d4f344091e8e3cbe7a674ec05745b3b85406f4c9694b7f7e7a53bdf2", "source_kind": "code"}, "shape_signature": "shape_82c13bef455dd03f", "motif_signature": "motif_exact_3f6528288685", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["cache:CacheStore:self.graphs"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}CacheStore.commit_pathCacheStore.commit_path{"id": "fn_dfe1677a76faecb1", "type": "method", "label": "CacheStore.commit_path", "path": "cache.py", "module": "cache", "symbol": "CacheStore.commit_path", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_963e00955450f7c33d1833bd", "fragment_source_hash": "01707bbaa917200f08fe725cb76bd5cf71ed3f8a5e284ea79eafa4448e3461ed", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 107, "end_line": 108, "source_hash": "01707bbaa917200f08fe725cb76bd5cf71ed3f8a5e284ea79eafa4448e3461ed", "source_kind": "code"}, "shape_signature": "shape_9e4637bee7656f83", "motif_signature": "motif_exact_3f6528288685", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["cache:CacheStore:self.commits"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}CacheStore.load_graphCacheStore.load_graph{"id": "fn_1ee8b57fc5fa1d3a", "type": "method", "label": "CacheStore.load_graph", "path": "cache.py", "module": "cache", "symbol": "CacheStore.load_graph", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_1a17b86090072fec9c1abe03", "fragment_source_hash": "dd901af266725c9cefbf2af0a4daf1ed4192ce8c2857b5d02b7a701bcde0d659", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 110, "end_line": 118, "source_hash": "dd901af266725c9cefbf2af0a4daf1ed4192ce8c2857b5d02b7a701bcde0d659", "source_kind": "code"}, "shape_signature": "shape_a9375ffc845d85a2", "motif_signature": "motif_exact_98c5e3d3770e", "motif_coarse_signature": "motif_coarse_a8b5621e3c39", "features": {"controls": ["branch", "try", "with_scope"], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 3}}CacheStore.save_graphCacheStore.save_graph{"id": "fn_0148e07831e6c3d5", "type": "method", "label": "CacheStore.save_graph", "path": "cache.py", "module": "cache", "symbol": "CacheStore.save_graph", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a79dbe8087529dbdf2272e5f", "fragment_source_hash": "0b14d51f46972bb02a53c82fbcf4075f85b985aa19dbb9e22b7c6fa13301afee", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 120, "end_line": 124, "source_hash": "0b14d51f46972bb02a53c82fbcf4075f85b985aa19dbb9e22b7c6fa13301afee", "source_kind": "code"}, "shape_signature": "shape_4103e63994094142", "motif_signature": "motif_exact_65ebf51573cc", "motif_coarse_signature": "motif_coarse_7bef0e8aaa95", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 4}}CacheStore.load_commitCacheStore.load_commit{"id": "fn_c2f998b5a1dd1193", "type": "method", "label": "CacheStore.load_commit", "path": "cache.py", "module": "cache", "symbol": "CacheStore.load_commit", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_587d4346c5a64cd03b3314fd", "fragment_source_hash": "5e31fac2bbc2bfd7d3141b8989f75ed2468fc50c0d7b6824e87b448e539c71b6", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 126, "end_line": 133, "source_hash": "5e31fac2bbc2bfd7d3141b8989f75ed2468fc50c0d7b6824e87b448e539c71b6", "source_kind": "code"}, "shape_signature": "shape_ec5fab53442cfdc8", "motif_signature": "motif_exact_933e98cc9eca", "motif_coarse_signature": "motif_coarse_4b928baab246", "features": {"controls": ["branch", "try"], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 3}}CacheStore.save_commitCacheStore.save_commit{"id": "fn_1f72e982e3591949", "type": "method", "label": "CacheStore.save_commit", "path": "cache.py", "module": "cache", "symbol": "CacheStore.save_commit", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_7928a28e31eb57d02686c12f", "fragment_source_hash": "a9f34fbd3c72ccc07913a6295825d7e6bfb9f8f6ca5f11215ccc555ec8fd1752", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 135, "end_line": 136, "source_hash": "a9f34fbd3c72ccc07913a6295825d7e6bfb9f8f6ca5f11215ccc555ec8fd1752", "source_kind": "code"}, "shape_signature": "shape_7e0caf5319594b57", "motif_signature": "motif_exact_fee723968306", "motif_coarse_signature": "motif_coarse_f3d711144165", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 0}}CacheStore.register_reviewCacheStore.register_review{"id": "fn_8adc83319da8a23f", "type": "method", "label": "CacheStore.register_review", "path": "cache.py", "module": "cache", "symbol": "CacheStore.register_review", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a803a760d8762b97628ecb60", "fragment_source_hash": "c5da7913d2a038041dea9f9c8411ec780236e48917575e9ba964a169724bd358", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 138, "end_line": 154, "source_hash": "c5da7913d2a038041dea9f9c8411ec780236e48917575e9ba964a169724bd358", "source_kind": "code"}, "shape_signature": "shape_d01dd1f054fc8c45", "motif_signature": "motif_exact_493b7fcc98ce", "motif_coarse_signature": "motif_coarse_735cc4291378", "features": {"controls": ["branch", "try"], "effects": ["file_io"], "state_reads": 1, "state_writes": 0, "state_read_targets": ["cache:CacheStore:self.reviews"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 6}}_rebind_graph_root_rebind_graph_root{"id": "fn_89c8c49d5f225b57", "type": "function", "label": "_rebind_graph_root", "path": "cache.py", "module": "cache", "symbol": "_rebind_graph_root", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_82d67c7cb101db9dc4cf951a", "fragment_source_hash": "29706618f809d2d09475ba939eaa5da5a28a2ed6a2b11d8499ea931dc21165a2", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 157, "end_line": 160, "source_hash": "29706618f809d2d09475ba939eaa5da5a28a2ed6a2b11d8499ea931dc21165a2", "source_kind": "code"}, "shape_signature": "shape_b5d2b13fcf934757", "motif_signature": "motif_exact_b3c2e0b59537", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}analyze_with_cacheanalyze_with_cache{"id": "fn_ba89409d4119702b", "type": "function", "label": "analyze_with_cache", "path": "cache.py", "module": "cache", "symbol": "analyze_with_cache", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_1936e0c0c1f036d0e57904fd", "fragment_source_hash": "f7541f1c8c52667885d48b2996c7f169f442befdda01b3e8f9eb759e9304163b", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 163, "end_line": 289, "source_hash": "f7541f1c8c52667885d48b2996c7f169f442befdda01b3e8f9eb759e9304163b", "source_kind": "code"}, "shape_signature": "shape_529a8194d96916d1", "motif_signature": "motif_exact_7e2e8e48861d", "motif_coarse_signature": "motif_coarse_7a99543fed3f", "features": {"controls": ["branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 12, "boundary_calls": 37}}_strip_volatile_strip_volatile{"id": "fn_e0556594d5357a41", "type": "function", "label": "_strip_volatile", "path": "cache.py", "module": "cache", "symbol": "_strip_volatile", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e5ad9f65aaf40c59860e3876", "fragment_source_hash": "c251f4087396b407810e114b09d01918118f21ffeabc76f001f821b61f6db9db", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 292, "end_line": 302, "source_hash": "c251f4087396b407810e114b09d01918118f21ffeabc76f001f821b61f6db9db", "source_kind": "code"}, "shape_signature": "shape_c824ab750c17e4ce", "motif_signature": "motif_exact_4bbd64f7caf3", "motif_coarse_signature": "motif_coarse_cb6eeb2a6c00", "features": {"controls": ["branch", "branch", "try"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 6}}review_fingerprintreview_fingerprint{"id": "fn_15968c07f72052da", "type": "function", "label": "review_fingerprint", "path": "cache.py", "module": "cache", "symbol": "review_fingerprint", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_9e37eaeef274588a1d4a23c9", "fragment_source_hash": "f3b9e09e1e35a12b163ca3b35d7193001b0b2d8a1156111c61b28fa73bd29aef", "fragment_context_fingerprint": "ctx_dcac03a3e569eb735146e452", "evidence": {"path": "cache.py", "line": 305, "end_line": 318, "source_hash": "f3b9e09e1e35a12b163ca3b35d7193001b0b2d8a1156111c61b28fa73bd29aef", "source_kind": "code"}, "shape_signature": "shape_e2c2f76a38081d7a", "motif_signature": "motif_exact_e4520a6078ba", "motif_coarse_signature": "motif_coarse_ce08f8f7d524", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 4, "boundary_calls": 15}}cli.pycli.py{"id": "file_155c3b607ba082a5", "type": "file", "label": "cli.py", "path": "cli.py", "module": "cli", "status": "observed", "confidence": 1.0, "evidence": {"path": "cli.py", "line": 1, "end_line": 215, "source_hash": "fce9427a29a429f09e43d8893236e2652aad687fcd77ca4971140aff220b3df5", "source_kind": "code"}}_write_analysis_write_analysis{"id": "fn_322f6ca47ba4b491", "type": "function", "label": "_write_analysis", "path": "cli.py", "module": "cli", "symbol": "_write_analysis", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_9cabd62f99f03377214943cb", "fragment_source_hash": "8c764aede27b7be30f32d57492ae4284b564016870adb6bc2a6391b506308294", "fragment_context_fingerprint": "ctx_97a6deb630ce8db0ab8dfb45", "evidence": {"path": "cli.py", "line": 26, "end_line": 33, "source_hash": "8c764aede27b7be30f32d57492ae4284b564016870adb6bc2a6391b506308294", "source_kind": "code"}, "shape_signature": "shape_cdc57a51076e163c", "motif_signature": "motif_exact_47a9b8c7915c", "motif_coarse_signature": "motif_coarse_cc823c351683", "features": {"controls": [], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 6, "boundary_calls": 1}}_write_json_write_json{"id": "fn_be894de1c1bf84c1", "type": "function", "label": "_write_json", "path": "cli.py", "module": "cli", "symbol": "_write_json", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_f28f03cfe5518b6f3580f28a", "fragment_source_hash": "09dcb456a970434da755bfbb84210f1ca6b86e20b81930d8e67b465fd57e2c1d", "fragment_context_fingerprint": "ctx_97a6deb630ce8db0ab8dfb45", "evidence": {"path": "cli.py", "line": 36, "end_line": 38, "source_hash": "09dcb456a970434da755bfbb84210f1ca6b86e20b81930d8e67b465fd57e2c1d", "source_kind": "code"}, "shape_signature": "shape_36437ee0224caacc", "motif_signature": "motif_exact_5ebded4f0d2c", "motif_coarse_signature": "motif_coarse_2a35739c27f5", "features": {"controls": [], "effects": ["file_io", "file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 3}}_resolve_cache_dir_resolve_cache_dir{"id": "fn_bc38dfc327cc6ddc", "type": "function", "label": "_resolve_cache_dir", "path": "cli.py", "module": "cli", "symbol": "_resolve_cache_dir", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_0ddbe27946f67ee82d1cdbd0", "fragment_source_hash": "7bd9b2230bd023d384da7e90c7e8e4ea107b314b5b5122f64c139e94c53fb509", "fragment_context_fingerprint": "ctx_97a6deb630ce8db0ab8dfb45", "evidence": {"path": "cli.py", "line": 41, "end_line": 44, "source_hash": "7bd9b2230bd023d384da7e90c7e8e4ea107b314b5b5122f64c139e94c53fb509", "source_kind": "code"}, "shape_signature": "shape_5dcb32f79b32df06", "motif_signature": "motif_exact_900aa8012fb9", "motif_coarse_signature": "motif_coarse_69581341d26f", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 3}}mainmain{"id": "fn_7192999b79e04079", "type": "function", "label": "main", "path": "cli.py", "module": "cli", "symbol": "main", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a33459d31345578bf4543955", "fragment_source_hash": "371d391069324567544dd06b76df5acc4e9c05b3a629ef380267b2daa23d11a9", "fragment_context_fingerprint": "ctx_97a6deb630ce8db0ab8dfb45", "evidence": {"path": "cli.py", "line": 47, "end_line": 211, "source_hash": "371d391069324567544dd06b76df5acc4e9c05b3a629ef380267b2daa23d11a9", "source_kind": "code"}, "shape_signature": "shape_03eb84a57d236165", "motif_signature": "motif_exact_1d1ef9a3dbf1", "motif_coarse_signature": "motif_coarse_11be8eb87d45", "features": {"controls": ["branch", "branch", "branch", "try", "with_scope", "branch", "branch", "with_scope", "branch", "for_loop", "branch", "branch", "branch", "branch", "branch", "try", "for_loop", "branch"], "effects": ["file_io", "file_io", "file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 40, "boundary_calls": 95}}dataflow.pydataflow.py{"id": "file_9adebeb24f42dbf6", "type": "file", "label": "dataflow.py", "path": "dataflow.py", "module": "dataflow", "status": "observed", "confidence": 1.0, "evidence": {"path": "dataflow.py", "line": 1, "end_line": 873, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "source_kind": "code"}}stable_idstable_id{"id": "fn_1202b15b868caee5", "type": "function", "label": "stable_id", "path": "dataflow.py", "module": "dataflow", "symbol": "stable_id", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d2de13e6895c5ce1218e727d", "fragment_source_hash": "7e9a2d14491a5d266d28b09f501da89bcb14b4ff940df4439d2c1c7eee88c73e", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 11, "end_line": 13, "source_hash": "7e9a2d14491a5d266d28b09f501da89bcb14b4ff940df4439d2c1c7eee88c73e", "source_kind": "code"}, "shape_signature": "shape_cff3429fc68d953c", "motif_signature": "motif_exact_4452dbae8c96", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 5}}evidenceevidence{"id": "fn_7125a2e842842f63", "type": "function", "label": "evidence", "path": "dataflow.py", "module": "dataflow", "symbol": "evidence", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_5350a3c34963a6ac695e8a11", "fragment_source_hash": "d1501acc6651d53a701db44e1120fb0406a0bf47ffccfd2140125eb62df76c27", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 16, "end_line": 23, "source_hash": "d1501acc6651d53a701db44e1120fb0406a0bf47ffccfd2140125eb62df76c27", "source_kind": "code"}, "shape_signature": "shape_a9592faad49719ca", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}target_namestarget_names{"id": "fn_6feb442b4c09eaae", "type": "function", "label": "target_names", "path": "dataflow.py", "module": "dataflow", "symbol": "target_names", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_de2fbbd5e2f2d30ddf804ea9", "fragment_source_hash": "5d779c24536b2ad4ee71ccd69ae1c7359ee809c6a8ca64f5fcc36d991db213e4", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 26, "end_line": 36, "source_hash": "5d779c24536b2ad4ee71ccd69ae1c7359ee809c6a8ca64f5fcc36d991db213e4", "source_kind": "code"}, "shape_signature": "shape_ed3e0c73be542f49", "motif_signature": "motif_exact_7ab593e8b691", "motif_coarse_signature": "motif_coarse_c4a7b2976828", "features": {"controls": ["branch", "branch", "for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 4}}ScopeFactsScopeFacts{"id": "class_ddb8e124fc90582d", "type": "class", "label": "ScopeFacts", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts", "status": "observed", "confidence": 1.0, "evidence": {"path": "dataflow.py", "line": 39, "end_line": 117, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "source_kind": "code"}}ScopeFacts.__init__ScopeFacts.__init__{"id": "fn_3a0c486f0876f93e", "type": "method", "label": "ScopeFacts.__init__", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.__init__", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8bb51589c4ed4fe13f8aab02", "fragment_source_hash": "7bee5fdccdc0042bb1caed2e0272ba1ef09cabb865c29db9c3b8caf93c9016f8", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 42, "end_line": 45, "source_hash": "7bee5fdccdc0042bb1caed2e0272ba1ef09cabb865c29db9c3b8caf93c9016f8", "source_kind": "code"}, "shape_signature": "shape_ae2d2bdf9d7d7f04", "motif_signature": "motif_exact_8a239dce1494", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 3, "state_read_targets": [], "state_write_targets": ["dataflow:ScopeFacts:self.assigned", "dataflow:ScopeFacts:self.globals", "dataflow:ScopeFacts:self.nonlocals"], "local_calls": 0, "boundary_calls": 3}}ScopeFacts.visit_GlobalScopeFacts.visit_Global{"id": "fn_80ba5edbfd16174a", "type": "method", "label": "ScopeFacts.visit_Global", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_Global", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_25f2009e5c80d875a0e6e08d", "fragment_source_hash": "ec8898169dd5f88178acc5ec1c95c03b1c00363665fbd8489f1349c48b330978", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 47, "end_line": 48, "source_hash": "ec8898169dd5f88178acc5ec1c95c03b1c00363665fbd8489f1349c48b330978", "source_kind": "code"}, "shape_signature": "shape_59586808a466bfcf", "motif_signature": "motif_exact_25636711670c", "motif_coarse_signature": "motif_coarse_b2feb91af8fa", "features": {"controls": [], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:ScopeFacts:self.globals"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 1}}ScopeFacts.visit_NonlocalScopeFacts.visit_Nonlocal{"id": "fn_f5f4720de9474689", "type": "method", "label": "ScopeFacts.visit_Nonlocal", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_Nonlocal", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e2374ed5da7be4a87d650023", "fragment_source_hash": "785be8d1dac3780ccb8337bd3dad4246b97b8f7c6879298e44b270d8728dc610", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 50, "end_line": 51, "source_hash": "785be8d1dac3780ccb8337bd3dad4246b97b8f7c6879298e44b270d8728dc610", "source_kind": "code"}, "shape_signature": "shape_8b03e803a27c1a46", "motif_signature": "motif_exact_25636711670c", "motif_coarse_signature": "motif_coarse_b2feb91af8fa", "features": {"controls": [], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:ScopeFacts:self.nonlocals"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 1}}ScopeFacts._store_targetScopeFacts._store_target{"id": "fn_6f2f123a909f1dc3", "type": "method", "label": "ScopeFacts._store_target", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts._store_target", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_090cb2e0f722cb789ffec54b", "fragment_source_hash": "a634014015a1c9ed15eace601e2ab1bc2d669550f594d42b2287f61e1bab5030", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 53, "end_line": 54, "source_hash": "a634014015a1c9ed15eace601e2ab1bc2d669550f594d42b2287f61e1bab5030", "source_kind": "code"}, "shape_signature": "shape_b5f82f0c7218f649", "motif_signature": "motif_exact_4b4d9ab799c5", "motif_coarse_signature": "motif_coarse_7d036f941004", "features": {"controls": [], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:ScopeFacts:self.assigned"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}ScopeFacts.visit_AssignScopeFacts.visit_Assign{"id": "fn_1ca87be045790d93", "type": "method", "label": "ScopeFacts.visit_Assign", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_Assign", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_85d63d7112984e664b89171a", "fragment_source_hash": "dc1d4220bbc58f402b4797bb6b9049896f7103fa6774bdd2f8094451a642c5a9", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 56, "end_line": 59, "source_hash": "dc1d4220bbc58f402b4797bb6b9049896f7103fa6774bdd2f8094451a642c5a9", "source_kind": "code"}, "shape_signature": "shape_fe93f91a86d0cf5e", "motif_signature": "motif_exact_b6e8c7138fea", "motif_coarse_signature": "motif_coarse_4eb85c90d9cf", "features": {"controls": ["for_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}ScopeFacts.visit_AnnAssignScopeFacts.visit_AnnAssign{"id": "fn_ef1953e9038c2419", "type": "method", "label": "ScopeFacts.visit_AnnAssign", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_AnnAssign", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_ab55e1da887e1c2f7025c482", "fragment_source_hash": "1e566374a07ce96a6fd735942160cc03609c16d0824f6dda7731848dea2e94a5", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 61, "end_line": 64, "source_hash": "1e566374a07ce96a6fd735942160cc03609c16d0824f6dda7731848dea2e94a5", "source_kind": "code"}, "shape_signature": "shape_62b1269fd69cbdc5", "motif_signature": "motif_exact_77c89dd3069a", "motif_coarse_signature": "motif_coarse_af2f0ae26158", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}ScopeFacts.visit_AugAssignScopeFacts.visit_AugAssign{"id": "fn_56b0ec4a8ec964ce", "type": "method", "label": "ScopeFacts.visit_AugAssign", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_AugAssign", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_0f3926c1a9758153516a74c9", "fragment_source_hash": "d280faf0e14eb7d504cfea8eb73e42db4291141887df97895bc6fe32e5c6e3cf", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 66, "end_line": 68, "source_hash": "d280faf0e14eb7d504cfea8eb73e42db4291141887df97895bc6fe32e5c6e3cf", "source_kind": "code"}, "shape_signature": "shape_e017db4044439380", "motif_signature": "motif_exact_634a3a10bf84", "motif_coarse_signature": "motif_coarse_7d036f941004", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}ScopeFacts.visit_ForScopeFacts.visit_For{"id": "fn_465fb4f5e8811a50", "type": "method", "label": "ScopeFacts.visit_For", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_For", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_58f462a01ad679ee2570ac36", "fragment_source_hash": "8b869fdc436fc86565e298eb82eb2c777aa835d5c7a816996a70de7219014be9", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 70, "end_line": 74, "source_hash": "8b869fdc436fc86565e298eb82eb2c777aa835d5c7a816996a70de7219014be9", "source_kind": "code"}, "shape_signature": "shape_cafb70f25f0308c2", "motif_signature": "motif_exact_ba0f1db69c06", "motif_coarse_signature": "motif_coarse_b42846908a33", "features": {"controls": ["for_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 2}}ScopeFacts.visit_WithScopeFacts.visit_With{"id": "fn_c07bcef1ecf9f25c", "type": "method", "label": "ScopeFacts.visit_With", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_With", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_63275dbf514c787961a41e23", "fragment_source_hash": "123ffb94ba514fc1fbb317f1042cf4ac9387a02f4225786beedfa8dd1ade17a1", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 78, "end_line": 84, "source_hash": "123ffb94ba514fc1fbb317f1042cf4ac9387a02f4225786beedfa8dd1ade17a1", "source_kind": "code"}, "shape_signature": "shape_afa1f3b923c3a363", "motif_signature": "motif_exact_a07fd9000c88", "motif_coarse_signature": "motif_coarse_662d65d73597", "features": {"controls": ["for_loop", "branch", "for_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 2}}ScopeFacts.visit_ExceptHandlerScopeFacts.visit_ExceptHa…{"id": "fn_3d3346e4614c1541", "type": "method", "label": "ScopeFacts.visit_ExceptHandler", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_ExceptHandler", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a71f58ce06a35009356c927b", "fragment_source_hash": "97a20a5639940ef85f1b25ef779ef897cffbdd33e5c0d1312a0ac071b3e70584", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 88, "end_line": 92, "source_hash": "97a20a5639940ef85f1b25ef779ef897cffbdd33e5c0d1312a0ac071b3e70584", "source_kind": "code"}, "shape_signature": "shape_3e1c38599932ccf5", "motif_signature": "motif_exact_edc74cd508e1", "motif_coarse_signature": "motif_coarse_0d97da8f019a", "features": {"controls": ["branch", "for_loop"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:ScopeFacts:self.assigned"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}ScopeFacts.visit_NamedExprScopeFacts.visit_NamedExpr{"id": "fn_dc3e92420293a020", "type": "method", "label": "ScopeFacts.visit_NamedExpr", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_NamedExpr", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_b3ba933dd8745f6a3fe590f5", "fragment_source_hash": "dcf67a1d12ad2553cf885f70f4e608da5cd7c4473350a613777247956ada1916", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 94, "end_line": 96, "source_hash": "dcf67a1d12ad2553cf885f70f4e608da5cd7c4473350a613777247956ada1916", "source_kind": "code"}, "shape_signature": "shape_e727b10dc164ced4", "motif_signature": "motif_exact_634a3a10bf84", "motif_coarse_signature": "motif_coarse_7d036f941004", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}ScopeFacts.visit_FunctionDefScopeFacts.visit_FunctionDef{"id": "fn_7f8f5dce882dfcf5", "type": "method", "label": "ScopeFacts.visit_FunctionDef", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_FunctionDef", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d4ab23e81b7468da0b91d4be", "fragment_source_hash": "23e96b0ea242e42387915c6043406903e6304db7389c6911b9909f0c9efb587f", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 98, "end_line": 100, "source_hash": "23e96b0ea242e42387915c6043406903e6304db7389c6911b9909f0c9efb587f", "source_kind": "code"}, "shape_signature": "shape_d868f61da8ce29b7", "motif_signature": "motif_exact_25636711670c", "motif_coarse_signature": "motif_coarse_b2feb91af8fa", "features": {"controls": [], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:ScopeFacts:self.assigned"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 1}}ScopeFacts.visit_ClassDefScopeFacts.visit_ClassDef{"id": "fn_a88195059d919949", "type": "method", "label": "ScopeFacts.visit_ClassDef", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_ClassDef", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d62384c32881891bf60f2368", "fragment_source_hash": "33f2d7c4593ce6e3d7e08a27060c3b6e665c89b1ca99f1deeb5d34c463401e82", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 104, "end_line": 105, "source_hash": "33f2d7c4593ce6e3d7e08a27060c3b6e665c89b1ca99f1deeb5d34c463401e82", "source_kind": "code"}, "shape_signature": "shape_95a6d4b3faac44ed", "motif_signature": "motif_exact_25636711670c", "motif_coarse_signature": "motif_coarse_b2feb91af8fa", "features": {"controls": [], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:ScopeFacts:self.assigned"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 1}}ScopeFacts.visit_LambdaScopeFacts.visit_Lambda{"id": "fn_79795b255842d5b4", "type": "method", "label": "ScopeFacts.visit_Lambda", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_Lambda", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_af03d95fa4c9747db639fd59", "fragment_source_hash": "25dd7a11c1839b6ae89832695218c503a3fe84d31e2ecaccc6e54e7404473941", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 107, "end_line": 108, "source_hash": "25dd7a11c1839b6ae89832695218c503a3fe84d31e2ecaccc6e54e7404473941", "source_kind": "code"}, "shape_signature": "shape_41fbb6d6918941fa", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}ScopeFacts.visit_ListCompScopeFacts.visit_ListComp{"id": "fn_636c330fb3839d03", "type": "method", "label": "ScopeFacts.visit_ListComp", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_ListComp", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8b3d98dadd7c3d81cf73aeea", "fragment_source_hash": "67f4d3d63dbc9e013a4e1cca1e9bbf0546ea4360374d988a5f9e4377ebabd96b", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 110, "end_line": 111, "source_hash": "67f4d3d63dbc9e013a4e1cca1e9bbf0546ea4360374d988a5f9e4377ebabd96b", "source_kind": "code"}, "shape_signature": "shape_13f825ee901d4644", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}ScopeFacts.visit_DictCompScopeFacts.visit_DictComp{"id": "fn_6ea2e6425810d5fc", "type": "method", "label": "ScopeFacts.visit_DictComp", "path": "dataflow.py", "module": "dataflow", "symbol": "ScopeFacts.visit_DictComp", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_46b8ae37879f19847e5b4fd0", "fragment_source_hash": "c6c03864712afa9af3cb319a44f47194a26581759951bd7f8bdbcfecd8b18785", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 116, "end_line": 117, "source_hash": "c6c03864712afa9af3cb319a44f47194a26581759951bd7f8bdbcfecd8b18785", "source_kind": "code"}, "shape_signature": "shape_03dac6988e27de0c", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}LoadNameCollectorLoadNameCollector{"id": "class_298f5cf3c05e51cc", "type": "class", "label": "LoadNameCollector", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector", "status": "observed", "confidence": 1.0, "evidence": {"path": "dataflow.py", "line": 120, "end_line": 179, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "source_kind": "code"}}LoadNameCollector.__init__LoadNameCollector.__init__{"id": "fn_3a7f1359e0597ed7", "type": "method", "label": "LoadNameCollector.__init__", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.__init__", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_2e53b20139b9704fe86683eb", "fragment_source_hash": "0f92e6afefb3c89194f1e3cdb0f2c7c83f573b32b7c4c20fb906f012102d9e2c", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 123, "end_line": 125, "source_hash": "0f92e6afefb3c89194f1e3cdb0f2c7c83f573b32b7c4c20fb906f012102d9e2c", "source_kind": "code"}, "shape_signature": "shape_9845f4d07a58e31e", "motif_signature": "motif_exact_244181cf6881", "motif_coarse_signature": "motif_coarse_b2feb91af8fa", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 2, "state_read_targets": [], "state_write_targets": ["dataflow:LoadNameCollector:self.bound_stack", "dataflow:LoadNameCollector:self.names"], "local_calls": 0, "boundary_calls": 1}}LoadNameCollector.boundLoadNameCollector.bound{"id": "fn_7a37bcf7695bec9c", "type": "method", "label": "LoadNameCollector.bound", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.bound", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e90d6135080f8b9cde197e87", "fragment_source_hash": "dbb5c5591ce486cbabb4eceb16f8fdab825386e0e4c1cfa55bd015e0f7af2a8f", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 128, "end_line": 132, "source_hash": "dbb5c5591ce486cbabb4eceb16f8fdab825386e0e4c1cfa55bd015e0f7af2a8f", "source_kind": "code"}, "shape_signature": "shape_f3971a6828fe5941", "motif_signature": "motif_exact_dbb55e5ac2fd", "motif_coarse_signature": "motif_coarse_fb9276730198", "features": {"controls": ["for_loop"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:LoadNameCollector:self.bound_stack"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}LoadNameCollector.visit_NameLoadNameCollector.visit_Name{"id": "fn_1fb4692ebc168dd6", "type": "method", "label": "LoadNameCollector.visit_Name", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.visit_Name", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e4dcf63e324567287ea2e3fe", "fragment_source_hash": "f1705913ec912187b914c70e972da3622d23872fbf687d0f1f53fc4e6fba6158", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 134, "end_line": 136, "source_hash": "f1705913ec912187b914c70e972da3622d23872fbf687d0f1f53fc4e6fba6158", "source_kind": "code"}, "shape_signature": "shape_003319a99a8b98c5", "motif_signature": "motif_exact_b41ac84dd173", "motif_coarse_signature": "motif_coarse_69581341d26f", "features": {"controls": ["branch"], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["dataflow:LoadNameCollector:self.bound", "dataflow:LoadNameCollector:self.names"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 3}}LoadNameCollector.visit_LambdaLoadNameCollector.visit_L…{"id": "fn_2da2866abfeb46f5", "type": "method", "label": "LoadNameCollector.visit_Lambda", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.visit_Lambda", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_23b99ecf4d1fb8778a67521e", "fragment_source_hash": "2fb16f180b7e67c64f48b500e408134d6afff986b32de8c08b9a6cbdf5f1ec4c", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 138, "end_line": 148, "source_hash": "2fb16f180b7e67c64f48b500e408134d6afff986b32de8c08b9a6cbdf5f1ec4c", "source_kind": "code"}, "shape_signature": "shape_66d6ca1e34163f2c", "motif_signature": "motif_exact_29bb34c90655", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["for_loop", "branch", "branch"], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["dataflow:LoadNameCollector:self.bound_stack"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 7}}LoadNameCollector._visit_compLoadNameCollector._visit_…{"id": "fn_3db9fcd36bc1cf5f", "type": "method", "label": "LoadNameCollector._visit_comp", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector._visit_comp", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_6f24a9119b470a734259c4d0", "fragment_source_hash": "c206d48a86e4a7bdcf76d5a73a508c444987cdc562e51317c484d82537981508", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 150, "end_line": 159, "source_hash": "c206d48a86e4a7bdcf76d5a73a508c444987cdc562e51317c484d82537981508", "source_kind": "code"}, "shape_signature": "shape_4ac63753c846c145", "motif_signature": "motif_exact_0270ac7d71c7", "motif_coarse_signature": "motif_coarse_417e7b1831f7", "features": {"controls": ["for_loop", "for_loop", "for_loop"], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["dataflow:LoadNameCollector:self.bound_stack"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 7}}LoadNameCollector.visit_ListCompLoadNameCollector.visit_L…{"id": "fn_53453c57a0c45c5d", "type": "method", "label": "LoadNameCollector.visit_ListComp", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.visit_ListComp", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_27bac16444ae1061ccddb509", "fragment_source_hash": "0ed442e0ca07a1949e3dbd72d7dfd51849e2edafb6bde4b899822d2936362252", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 161, "end_line": 162, "source_hash": "0ed442e0ca07a1949e3dbd72d7dfd51849e2edafb6bde4b899822d2936362252", "source_kind": "code"}, "shape_signature": "shape_2657f5671387688e", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}LoadNameCollector.visit_SetCompLoadNameCollector.visit_S…{"id": "fn_005a39ca9476ab83", "type": "method", "label": "LoadNameCollector.visit_SetComp", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.visit_SetComp", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_20264998d7e0ffed0304b7da", "fragment_source_hash": "009c798965721f1d869613690d9adc4fda683ea327497661624ab3342caff9ab", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 164, "end_line": 165, "source_hash": "009c798965721f1d869613690d9adc4fda683ea327497661624ab3342caff9ab", "source_kind": "code"}, "shape_signature": "shape_b504f33ac0146d4a", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}LoadNameCollector.visit_GeneratorExpLoadNameCollector.visit_G…{"id": "fn_073ecb1bdd54c00d", "type": "method", "label": "LoadNameCollector.visit_GeneratorExp", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.visit_GeneratorExp", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d4a5aba0ba9fae1ac08735b3", "fragment_source_hash": "a996fa5957974c002bb5265a7a5148ed3e3158e2ab431d4f8d8ec0ee48376b4c", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 167, "end_line": 168, "source_hash": "a996fa5957974c002bb5265a7a5148ed3e3158e2ab431d4f8d8ec0ee48376b4c", "source_kind": "code"}, "shape_signature": "shape_ba17013f01da0b6b", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}LoadNameCollector.visit_DictCompLoadNameCollector.visit_D…{"id": "fn_d9f30d5bf26b0130", "type": "method", "label": "LoadNameCollector.visit_DictComp", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.visit_DictComp", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_0b9da9c2796f2bfda59f3a52", "fragment_source_hash": "2e5f0a056f1ab5bbb281c3fc742055afb318a8c307675cdf8d645777b898ac2b", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 170, "end_line": 171, "source_hash": "2e5f0a056f1ab5bbb281c3fc742055afb318a8c307675cdf8d645777b898ac2b", "source_kind": "code"}, "shape_signature": "shape_20bb7cb23c641edc", "motif_signature": "motif_exact_8066e141245f", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}LoadNameCollector.visit_FunctionDefLoadNameCollector.visit_F…{"id": "fn_8a647c78a2aa89c8", "type": "method", "label": "LoadNameCollector.visit_FunctionDef", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.visit_FunctionDef", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_aed445f3f3f75c0b46a2740a", "fragment_source_hash": "bcd1d68405424df0a3ef240629bb6b67ecfc30d6eb468fc704d8f07b5e724426", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 173, "end_line": 174, "source_hash": "bcd1d68405424df0a3ef240629bb6b67ecfc30d6eb468fc704d8f07b5e724426", "source_kind": "code"}, "shape_signature": "shape_9ac11c18bab5c122", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}LoadNameCollector.visit_ClassDefLoadNameCollector.visit_C…{"id": "fn_4958a7b0a1e2a8a3", "type": "method", "label": "LoadNameCollector.visit_ClassDef", "path": "dataflow.py", "module": "dataflow", "symbol": "LoadNameCollector.visit_ClassDef", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a47b1c0e15b5f7b12235419f", "fragment_source_hash": "56de7a411b4185d7c9daf4862e78982d75682fbabcd63f1c377843952c6c682a", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 178, "end_line": 179, "source_hash": "56de7a411b4185d7c9daf4862e78982d75682fbabcd63f1c377843952c6c682a", "source_kind": "code"}, "shape_signature": "shape_6c73171c7cd046fb", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}load_namesload_names{"id": "fn_95e4e2cb9c6785dc", "type": "function", "label": "load_names", "path": "dataflow.py", "module": "dataflow", "symbol": "load_names", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_604adeafeb511abc4a27bd36", "fragment_source_hash": "2adddadfc1b6ccdb5a62ae1f8fd6c69b4c1a7b2805560271a6d0f87aad2d5090", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 182, "end_line": 187, "source_hash": "2adddadfc1b6ccdb5a62ae1f8fd6c69b4c1a7b2805560271a6d0f87aad2d5090", "source_kind": "code"}, "shape_signature": "shape_0044caedec271f13", "motif_signature": "motif_exact_77c89dd3069a", "motif_coarse_signature": "motif_coarse_af2f0ae26158", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}attr_chainattr_chain{"id": "fn_8f1b8b8c49034020", "type": "function", "label": "attr_chain", "path": "dataflow.py", "module": "dataflow", "symbol": "attr_chain", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_061ed658cd87df10ce368f58", "fragment_source_hash": "2269f57aa8b99343eaba30216f14bf0f6a12592068555ef6e5b09e13379edd98", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 190, "end_line": 199, "source_hash": "2269f57aa8b99343eaba30216f14bf0f6a12592068555ef6e5b09e13379edd98", "source_kind": "code"}, "shape_signature": "shape_1e9ade4cbc2ebf35", "motif_signature": "motif_exact_83e8ae30f7af", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["while_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 6}}subscript_basesubscript_base{"id": "fn_42638fb8e4bb775e", "type": "function", "label": "subscript_base", "path": "dataflow.py", "module": "dataflow", "symbol": "subscript_base", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_2c604abb690b90030b5cfabd", "fragment_source_hash": "c0dd575d5321dba843754ffdef5e42bfd9a630ff2eaba151967cd6d745824b85", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 202, "end_line": 206, "source_hash": "c0dd575d5321dba843754ffdef5e42bfd9a630ff2eaba151967cd6d745824b85", "source_kind": "code"}, "shape_signature": "shape_00d3a8cdd5ca8d68", "motif_signature": "motif_exact_94291e63515d", "motif_coarse_signature": "motif_coarse_d7aeba4263cc", "features": {"controls": ["while_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 1}}StateAccessStateAccess{"id": "class_5958b8b664689fd5", "type": "class", "label": "StateAccess", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccess", "status": "observed", "confidence": 1.0, "evidence": {"path": "dataflow.py", "line": 210, "end_line": 216, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "source_kind": "code"}}StateAccessCollectorStateAccessCollector{"id": "class_f0eeb6639c61cc88", "type": "class", "label": "StateAccessCollector", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector", "status": "observed", "confidence": 1.0, "evidence": {"path": "dataflow.py", "line": 219, "end_line": 342, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "source_kind": "code"}}StateAccessCollector.__init__StateAccessCollector.__in…{"id": "fn_07cc7ff607a134e9", "type": "method", "label": "StateAccessCollector.__init__", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.__init__", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a8b612782447d140a67c8a2a", "fragment_source_hash": "20bc75fd2d297792c41cfa52b6283658ce1ea1a586f7747a8cf79f9919eda7a8", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 220, "end_line": 229, "source_hash": "20bc75fd2d297792c41cfa52b6283658ce1ea1a586f7747a8cf79f9919eda7a8", "source_kind": "code"}, "shape_signature": "shape_e4ad4aa1cbe5dd72", "motif_signature": "motif_exact_53a2ec21a2e5", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 9, "state_read_targets": [], "state_write_targets": ["dataflow:StateAccessCollector:self._seen", "dataflow:StateAccessCollector:self._skip_attr_nodes", "dataflow:StateAccessCollector:self.accesses", "dataflow:StateAccessCollector:self.class_name", "dataflow:StateAccessCollector:self.globals_decl", "dataflow:StateAccessCollector:self.local_names", "dataflow:StateAccessCollector:self.module", "dataflow:StateAccessCollector:self.module_globals", "dataflow:StateAccessCollector:self.params"], "local_calls": 0, "boundary_calls": 2}}StateAccessCollector.addStateAccessCollector.add{"id": "fn_e30d45e75eb59835", "type": "method", "label": "StateAccessCollector.add", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.add", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_9658208f49cce2021a2314f7", "fragment_source_hash": "3d724f80dd5b669acf00f83f78c750e2fcf783656b9c0f060e500ec7af007774", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 231, "end_line": 235, "source_hash": "3d724f80dd5b669acf00f83f78c750e2fcf783656b9c0f060e500ec7af007774", "source_kind": "code"}, "shape_signature": "shape_6485a050a93e4bd0", "motif_signature": "motif_exact_bfb6790a21dd", "motif_coarse_signature": "motif_coarse_c10ceceefb4d", "features": {"controls": ["branch"], "effects": [], "state_reads": 3, "state_writes": 0, "state_read_targets": ["dataflow:StateAccessCollector:self._seen", "dataflow:StateAccessCollector:self.accesses"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 2}}StateAccessCollector._field_regionStateAccessCollector._fie…{"id": "fn_0d3890affb530819", "type": "method", "label": "StateAccessCollector._field_region", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector._field_region", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d8f8893ab2dc5bed9a9e9c48", "fragment_source_hash": "1cd5b920dc379376f3feddb807cd1f5f1859f171cb626dfd51560e8a641c202a", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 237, "end_line": 248, "source_hash": "1cd5b920dc379376f3feddb807cd1f5f1859f171cb626dfd51560e8a641c202a", "source_kind": "code"}, "shape_signature": "shape_491c960d3e97227d", "motif_signature": "motif_exact_10b841aaaf59", "motif_coarse_signature": "motif_coarse_c10ceceefb4d", "features": {"controls": ["branch", "branch", "branch"], "effects": [], "state_reads": 4, "state_writes": 0, "state_read_targets": ["dataflow:StateAccessCollector:self.class_name", "dataflow:StateAccessCollector:self.module"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 2}}StateAccessCollector.visit_CallStateAccessCollector.visi…{"id": "fn_815a31c45ecd901c", "type": "method", "label": "StateAccessCollector.visit_Call", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.visit_Call", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_251fb6be6d26bad5f189e007", "fragment_source_hash": "757f8356bc04b43039415d71fb24c8967b17673e337f00a9a655522b26294717", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 250, "end_line": 266, "source_hash": "757f8356bc04b43039415d71fb24c8967b17673e337f00a9a655522b26294717", "source_kind": "code"}, "shape_signature": "shape_521699de9946e4a2", "motif_signature": "motif_exact_fd0d9580ed33", "motif_coarse_signature": "motif_coarse_1d063c7b37b2", "features": {"controls": ["branch", "branch", "branch", "branch", "for_loop", "for_loop", "branch"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:StateAccessCollector:self._skip_attr_nodes"], "state_write_targets": [], "local_calls": 3, "boundary_calls": 10}}StateAccessCollector.visit_AttributeStateAccessCollector.visi…{"id": "fn_d3884f2970da7128", "type": "method", "label": "StateAccessCollector.visit_Attribute", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.visit_Attribute", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_b45623d0d74ce62fe6c9494f", "fragment_source_hash": "cbddea5a3161706ed3e4f9c1d0639bdc222b104756d8d01f3f8aea742f2bb70a", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 268, "end_line": 275, "source_hash": "cbddea5a3161706ed3e4f9c1d0639bdc222b104756d8d01f3f8aea742f2bb70a", "source_kind": "code"}, "shape_signature": "shape_c3bd650cf1f045ff", "motif_signature": "motif_exact_b362f683de0e", "motif_coarse_signature": "motif_coarse_ef5db5e5ba38", "features": {"controls": ["branch", "branch"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:StateAccessCollector:self._skip_attr_nodes"], "state_write_targets": [], "local_calls": 2, "boundary_calls": 4}}StateAccessCollector.visit_SubscriptStateAccessCollector.visi…{"id": "fn_6b9fdb0f752070dd", "type": "method", "label": "StateAccessCollector.visit_Subscript", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.visit_Subscript", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_193b4100bb6e806d980ba371", "fragment_source_hash": "dcd052b8b762ee5a4ad7a7255b666e2f3ebcb95c1b65fd1339835e35fc97d279", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 277, "end_line": 290, "source_hash": "dcd052b8b762ee5a4ad7a7255b666e2f3ebcb95c1b65fd1339835e35fc97d279", "source_kind": "code"}, "shape_signature": "shape_2accb0eb5b51d45d", "motif_signature": "motif_exact_9006b68ca541", "motif_coarse_signature": "motif_coarse_7a99543fed3f", "features": {"controls": ["branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 4, "state_writes": 0, "state_read_targets": ["dataflow:StateAccessCollector:self.globals_decl", "dataflow:StateAccessCollector:self.module", "dataflow:StateAccessCollector:self.module_globals", "dataflow:StateAccessCollector:self.params"], "state_write_targets": [], "local_calls": 5, "boundary_calls": 7}}StateAccessCollector.visit_NameStateAccessCollector.visi…{"id": "fn_714af09e8be3b18c", "type": "method", "label": "StateAccessCollector.visit_Name", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.visit_Name", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_6e5098184e25222971467edc", "fragment_source_hash": "92812d4f1ee3c737e940766bb2b421e012091b9bc2eb3f7e943ed7f3e00e4bcd", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 292, "end_line": 299, "source_hash": "92812d4f1ee3c737e940766bb2b421e012091b9bc2eb3f7e943ed7f3e00e4bcd", "source_kind": "code"}, "shape_signature": "shape_6555ab12238d9750", "motif_signature": "motif_exact_95be3eb98c3b", "motif_coarse_signature": "motif_coarse_ef5db5e5ba38", "features": {"controls": ["branch", "branch"], "effects": [], "state_reads": 5, "state_writes": 0, "state_read_targets": ["dataflow:StateAccessCollector:self.globals_decl", "dataflow:StateAccessCollector:self.local_names", "dataflow:StateAccessCollector:self.module", "dataflow:StateAccessCollector:self.module_globals"], "state_write_targets": [], "local_calls": 2, "boundary_calls": 4}}StateAccessCollector.visit_AugAssignStateAccessCollector.visi…{"id": "fn_9fe12262fa9017a1", "type": "method", "label": "StateAccessCollector.visit_AugAssign", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.visit_AugAssign", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_1f7c101c54e295d467ec65c2", "fragment_source_hash": "a0122bddf27386492d60051d3757b4f3f88153a3751c71b5d7900d91b91a15c1", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 301, "end_line": 331, "source_hash": "a0122bddf27386492d60051d3757b4f3f88153a3751c71b5d7900d91b91a15c1", "source_kind": "code"}, "shape_signature": "shape_e048899fd5d3ac75", "motif_signature": "motif_exact_acd2d42843d9", "motif_coarse_signature": "motif_coarse_7a99543fed3f", "features": {"controls": ["branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 8, "state_writes": 0, "state_read_targets": ["dataflow:StateAccessCollector:self.globals_decl", "dataflow:StateAccessCollector:self.local_names", "dataflow:StateAccessCollector:self.module", "dataflow:StateAccessCollector:self.module_globals", "dataflow:StateAccessCollector:self.params"], "state_write_targets": [], "local_calls": 13, "boundary_calls": 7}}StateAccessCollector.visit_FunctionDefStateAccessCollector.visi…{"id": "fn_f3ccd5e05cdd3aed", "type": "method", "label": "StateAccessCollector.visit_FunctionDef", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.visit_FunctionDef", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_aed445f3f3f75c0b46a2740a", "fragment_source_hash": "bcd1d68405424df0a3ef240629bb6b67ecfc30d6eb468fc704d8f07b5e724426", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 333, "end_line": 334, "source_hash": "bcd1d68405424df0a3ef240629bb6b67ecfc30d6eb468fc704d8f07b5e724426", "source_kind": "code"}, "shape_signature": "shape_9ac11c18bab5c122", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}StateAccessCollector.visit_ClassDefStateAccessCollector.visi…{"id": "fn_52318d704593cb3a", "type": "method", "label": "StateAccessCollector.visit_ClassDef", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.visit_ClassDef", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a47b1c0e15b5f7b12235419f", "fragment_source_hash": "56de7a411b4185d7c9daf4862e78982d75682fbabcd63f1c377843952c6c682a", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 338, "end_line": 339, "source_hash": "56de7a411b4185d7c9daf4862e78982d75682fbabcd63f1c377843952c6c682a", "source_kind": "code"}, "shape_signature": "shape_6c73171c7cd046fb", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}StateAccessCollector.visit_LambdaStateAccessCollector.visi…{"id": "fn_183be87f4db72df0", "type": "method", "label": "StateAccessCollector.visit_Lambda", "path": "dataflow.py", "module": "dataflow", "symbol": "StateAccessCollector.visit_Lambda", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_af03d95fa4c9747db639fd59", "fragment_source_hash": "25dd7a11c1839b6ae89832695218c503a3fe84d31e2ecaccc6e54e7404473941", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 341, "end_line": 342, "source_hash": "25dd7a11c1839b6ae89832695218c503a3fe84d31e2ecaccc6e54e7404473941", "source_kind": "code"}, "shape_signature": "shape_41fbb6d6918941fa", "motif_signature": "motif_exact_83e42922287b", "motif_coarse_signature": "motif_coarse_fca123bd72d6", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 0}}exception_nameexception_name{"id": "fn_1827101738882512", "type": "function", "label": "exception_name", "path": "dataflow.py", "module": "dataflow", "symbol": "exception_name", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_266747adc84b4ab7a792f253", "fragment_source_hash": "5c80a34fdeeb3e25b91c31ac7ae310a3f2244c9fe8e335653801ddf74148cbe8", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 345, "end_line": 355, "source_hash": "5c80a34fdeeb3e25b91c31ac7ae310a3f2244c9fe8e335653801ddf74148cbe8", "source_kind": "code"}, "shape_signature": "shape_272083e2b0a8258b", "motif_signature": "motif_exact_88cb5c29a054", "motif_coarse_signature": "motif_coarse_f4a86b4f0a93", "features": {"controls": ["branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 5}}handler_nameshandler_names{"id": "fn_9dd4de65d893bff5", "type": "function", "label": "handler_names", "path": "dataflow.py", "module": "dataflow", "symbol": "handler_names", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_77e8b54dfab279a6c9fc0d3c", "fragment_source_hash": "96fe78edb41ad5fdd098b59fedf75e3bfcece746aa6e903f81629d9cec4d6a58", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 358, "end_line": 363, "source_hash": "96fe78edb41ad5fdd098b59fedf75e3bfcece746aa6e903f81629d9cec4d6a58", "source_kind": "code"}, "shape_signature": "shape_eda127b9fb2716be", "motif_signature": "motif_exact_97fad8451bbb", "motif_coarse_signature": "motif_coarse_f4c999cc82af", "features": {"controls": ["branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 1}}handler_matcheshandler_matches{"id": "fn_f1e15403f6be76d5", "type": "function", "label": "handler_matches", "path": "dataflow.py", "module": "dataflow", "symbol": "handler_matches", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_494b17918766d222d538be70", "fragment_source_hash": "5c48a5f520f7d1bd13f6610cc2ffcc70d92a83b1d1ab822444b9f8b7ca450e85", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 366, "end_line": 381, "source_hash": "5c48a5f520f7d1bd13f6610cc2ffcc70d92a83b1d1ab822444b9f8b7ca450e85", "source_kind": "code"}, "shape_signature": "shape_3cbc54ce04cc5d2b", "motif_signature": "motif_exact_2f450b14b2ce", "motif_coarse_signature": "motif_coarse_6b17282fe849", "features": {"controls": ["branch", "for_loop", "branch", "try", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 7}}block_definitely_terminatesblock_definitely_terminates{"id": "fn_0086f922e8929308", "type": "function", "label": "block_definitely_terminates", "path": "dataflow.py", "module": "dataflow", "symbol": "block_definitely_terminates", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_29db6a9a9cc151942b109f40", "fragment_source_hash": "f4f704e0e13a7ea6d3c964d6f01d194b43ccddb7d34aa89a852ef44e57ed4922", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 384, "end_line": 387, "source_hash": "f4f704e0e13a7ea6d3c964d6f01d194b43ccddb7d34aa89a852ef44e57ed4922", "source_kind": "code"}, "shape_signature": "shape_232d71146d131298", "motif_signature": "motif_exact_9de6e5e8191c", "motif_coarse_signature": "motif_coarse_cc8e5e83c736", "features": {"controls": ["branch"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["param:stmts[]"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}stmt_definitely_terminatesstmt_definitely_terminates{"id": "fn_f1b2782b61481141", "type": "function", "label": "stmt_definitely_terminates", "path": "dataflow.py", "module": "dataflow", "symbol": "stmt_definitely_terminates", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_c045b799aac477df47e900ba", "fragment_source_hash": "189ba747ec3d582deec510d001bf4fbc728accc90188441523d899c0d46cd42b", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 390, "end_line": 406, "source_hash": "189ba747ec3d582deec510d001bf4fbc728accc90188441523d899c0d46cd42b", "source_kind": "code"}, "shape_signature": "shape_b6993d836fd6eadd", "motif_signature": "motif_exact_998459ab8bc9", "motif_coarse_signature": "motif_coarse_7a99543fed3f", "features": {"controls": ["branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 7, "boundary_calls": 11}}FunctionDataflowBuilderFunctionDataflowBuilder{"id": "class_0c82f3d7601d6167", "type": "class", "label": "FunctionDataflowBuilder", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder", "status": "observed", "confidence": 1.0, "evidence": {"path": "dataflow.py", "line": 409, "end_line": 860, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "source_kind": "code"}}FunctionDataflowBuilder.__init__FunctionDataflowBuilder._…{"id": "fn_8fabaa061f5fe315", "type": "method", "label": "FunctionDataflowBuilder.__init__", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder.__init__", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_ae58c322ffd160fa22cef753", "fragment_source_hash": "d684dd96525ad4ac7aa216ce8897665f35d977136a67dc36ad5d7c569536d735", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 410, "end_line": 445, "source_hash": "d684dd96525ad4ac7aa216ce8897665f35d977136a67dc36ad5d7c569536d735", "source_kind": "code"}, "shape_signature": "shape_5900e781e15e40f5", "motif_signature": "motif_exact_878fb8564c16", "motif_coarse_signature": "motif_coarse_404687b09fc9", "features": {"controls": ["branch", "branch", "for_loop"], "effects": [], "state_reads": 5, "state_writes": 26, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.globals_decl", "dataflow:FunctionDataflowBuilder:self.nonlocals_decl", "dataflow:FunctionDataflowBuilder:self.params"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self._handler_nodes", "dataflow:FunctionDataflowBuilder:self._undefined_findings_seen", "dataflow:FunctionDataflowBuilder:self._undefined_node_by_name", "dataflow:FunctionDataflowBuilder:self.alias_edges", "dataflow:FunctionDataflowBuilder:self.class_name", "dataflow:FunctionDataflowBuilder:self.edges", "dataflow:FunctionDataflowBuilder:self.env", "dataflow:FunctionDataflowBuilder:self.explicit_raises", "dataflow:FunctionDataflowBuilder:self.findings", "dataflow:FunctionDataflowBuilder:self.fn", "dataflow:FunctionDataflowBuilder:self.globals_decl", "dataflow:FunctionDataflowBuilder:self.handlers", "dataflow:FunctionDataflowBuilder:self.local_names", "dataflow:FunctionDataflowBuilder:self.module", "dataflow:FunctionDataflowBuilder:self.module_globals", "dataflow:FunctionDataflowBuilder:self.nodes", "dataflow:FunctionDataflowBuilder:self.nonlocals_decl", "dataflow:FunctionDataflowBuilder:self.owner_id", "dataflow:FunctionDataflowBuilder:self.params", "dataflow:FunctionDataflowBuilder:self.phi_nodes", "dataflow:FunctionDataflowBuilder:self.qname", "dataflow:FunctionDataflowBuilder:self.rel", "dataflow:FunctionDataflowBuilder:self.source_hash", "dataflow:FunctionDataflowBuilder:self.state_accesses", "dataflow:FunctionDataflowBuilder:self.unresolved_local_uses", "dataflow:FunctionDataflowBuilder:self.version"], "local_calls": 3, "boundary_calls": 5}}FunctionDataflowBuilder._evFunctionDataflowBuilder._ev{"id": "fn_06bd965d49aa376d", "type": "method", "label": "FunctionDataflowBuilder._ev", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._ev", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a7283168cbedd3ed2c453156", "fragment_source_hash": "7095f694de7673929600ab5ffe5455fe001c033930a2d282f341bce36446352c", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 447, "end_line": 448, "source_hash": "7095f694de7673929600ab5ffe5455fe001c033930a2d282f341bce36446352c", "source_kind": "code"}, "shape_signature": "shape_9980e40a127941a5", "motif_signature": "motif_exact_0479b1613400", "motif_coarse_signature": "motif_coarse_c03889665559", "features": {"controls": [], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.rel", "dataflow:FunctionDataflowBuilder:self.source_hash"], "state_write_targets": [], "local_calls": 1, "boundary_calls": 0}}FunctionDataflowBuilder._add_edgeFunctionDataflowBuilder._…{"id": "fn_3f3d8569e22c215b", "type": "method", "label": "FunctionDataflowBuilder._add_edge", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._add_edge", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_c14e82e79bdae7e27944ce4b", "fragment_source_hash": "f11d506e0c3ca748a6cccfb8d4a230d4961e20cd413fa1389f444be3d6978622", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 450, "end_line": 452, "source_hash": "f11d506e0c3ca748a6cccfb8d4a230d4961e20cd413fa1389f444be3d6978622", "source_kind": "code"}, "shape_signature": "shape_9d97c1964e566d34", "motif_signature": "motif_exact_55934fd421c6", "motif_coarse_signature": "motif_coarse_7bef0e8aaa95", "features": {"controls": [], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.edges"], "state_write_targets": [], "local_calls": 2, "boundary_calls": 4}}FunctionDataflowBuilder._init_paramsFunctionDataflowBuilder._…{"id": "fn_c2bc3562fce1e500", "type": "method", "label": "FunctionDataflowBuilder._init_params", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._init_params", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_1c6719b1e575b9ab224f6d9f", "fragment_source_hash": "79e2ceba76a429ff20dc72a9d64d9bf599cb286eae725eca906d8d1088c13197", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 454, "end_line": 457, "source_hash": "79e2ceba76a429ff20dc72a9d64d9bf599cb286eae725eca906d8d1088c13197", "source_kind": "code"}, "shape_signature": "shape_ec5a4d314bc91226", "motif_signature": "motif_exact_7813d9ab5262", "motif_coarse_signature": "motif_coarse_b42846908a33", "features": {"controls": ["for_loop"], "effects": [], "state_reads": 3, "state_writes": 1, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.env", "dataflow:FunctionDataflowBuilder:self.fn", "dataflow:FunctionDataflowBuilder:self.params"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.env[]"], "local_calls": 1, "boundary_calls": 2}}FunctionDataflowBuilder._new_valueFunctionDataflowBuilder._…{"id": "fn_b47ff1af9e2acb08", "type": "method", "label": "FunctionDataflowBuilder._new_value", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._new_value", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8c6e9627270c5bc6f2c76ed3", "fragment_source_hash": "913da478d7b5b708c2db81e3416c5a047caef3c09a08c5d21f07b9c851a56340", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 459, "end_line": 482, "source_hash": "913da478d7b5b708c2db81e3416c5a047caef3c09a08c5d21f07b9c851a56340", "source_kind": "code"}, "shape_signature": "shape_a93441d2088d95e0", "motif_signature": "motif_exact_4448ab6c775d", "motif_coarse_signature": "motif_coarse_396c8fc29159", "features": {"controls": ["branch"], "effects": [], "state_reads": 11, "state_writes": 3, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.nodes", "dataflow:FunctionDataflowBuilder:self.owner_id", "dataflow:FunctionDataflowBuilder:self.qname", "dataflow:FunctionDataflowBuilder:self.rel", "dataflow:FunctionDataflowBuilder:self.version", "dataflow:FunctionDataflowBuilder:self.version[]"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.nodes[]", "dataflow:FunctionDataflowBuilder:self.version[]"], "local_calls": 3, "boundary_calls": 3}}FunctionDataflowBuilder._undefinedFunctionDataflowBuilder._…{"id": "fn_ce01a48876c8b58d", "type": "method", "label": "FunctionDataflowBuilder._undefined", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._undefined", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_88bb201582d9257409539736", "fragment_source_hash": "b18a7d59fe1a947dd8353bf6ede34cbf66819e4a404e55452814ee53ffb4e374", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 484, "end_line": 500, "source_hash": "b18a7d59fe1a947dd8353bf6ede34cbf66819e4a404e55452814ee53ffb4e374", "source_kind": "code"}, "shape_signature": "shape_61cf3557819c17eb", "motif_signature": "motif_exact_00b9db0d6b5f", "motif_coarse_signature": "motif_coarse_62eed90502fc", "features": {"controls": ["branch"], "effects": [], "state_reads": 9, "state_writes": 2, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self._undefined_node_by_name", "dataflow:FunctionDataflowBuilder:self._undefined_node_by_name[]", "dataflow:FunctionDataflowBuilder:self.nodes", "dataflow:FunctionDataflowBuilder:self.qname", "dataflow:FunctionDataflowBuilder:self.rel"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self._undefined_node_by_name[]", "dataflow:FunctionDataflowBuilder:self.nodes[]"], "local_calls": 2, "boundary_calls": 0}}FunctionDataflowBuilder._emit_undefined_findingFunctionDataflowBuilder._…{"id": "fn_aa725f55c70abc22", "type": "method", "label": "FunctionDataflowBuilder._emit_undefined_finding", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._emit_undefined_finding", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a6f935c6d0c47da70986507d", "fragment_source_hash": "52feabfe2f9c8ca7efe2381102063fbec08b12822d1be67bfca59075a03db2e4", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 502, "end_line": 510, "source_hash": "52feabfe2f9c8ca7efe2381102063fbec08b12822d1be67bfca59075a03db2e4", "source_kind": "code"}, "shape_signature": "shape_34e51dd8c8721777", "motif_signature": "motif_exact_040f9582411c", "motif_coarse_signature": "motif_coarse_69581341d26f", "features": {"controls": ["branch"], "effects": [], "state_reads": 5, "state_writes": 0, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self._undefined_findings_seen", "dataflow:FunctionDataflowBuilder:self.findings", "dataflow:FunctionDataflowBuilder:self.qname", "dataflow:FunctionDataflowBuilder:self.rel"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}FunctionDataflowBuilder._record_use_nameFunctionDataflowBuilder._…{"id": "fn_5647bc4c6fa53367", "type": "method", "label": "FunctionDataflowBuilder._record_use_name", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._record_use_name", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_ee6e03f38e29ba6beb1ae700", "fragment_source_hash": "6665929bfda7016fee1603bc8769db73ff94efe742c015c421eab19ca59ab53f", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 512, "end_line": 533, "source_hash": "6665929bfda7016fee1603bc8769db73ff94efe742c015c421eab19ca59ab53f", "source_kind": "code"}, "shape_signature": "shape_cc30c62847e9f5f9", "motif_signature": "motif_exact_b73dc389d8ef", "motif_coarse_signature": "motif_coarse_534adb5c327c", "features": {"controls": ["branch", "branch", "branch"], "effects": [], "state_reads": 7, "state_writes": 2, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.env", "dataflow:FunctionDataflowBuilder:self.globals_decl", "dataflow:FunctionDataflowBuilder:self.local_names", "dataflow:FunctionDataflowBuilder:self.nonlocals_decl", "dataflow:FunctionDataflowBuilder:self.unresolved_local_uses", "param:env[]"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.unresolved_local_uses"], "local_calls": 5, "boundary_calls": 2}}FunctionDataflowBuilder._record_expr_usesFunctionDataflowBuilder._…{"id": "fn_66005aded61a2b0f", "type": "method", "label": "FunctionDataflowBuilder._record_expr_uses", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._record_expr_uses", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_76cb5dd8910a567cc4f9f9ec", "fragment_source_hash": "cac359841b3de34b86b3032ba9fe6c4ea1812633963c87eb27d3cb8121c36eb9", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 535, "end_line": 542, "source_hash": "cac359841b3de34b86b3032ba9fe6c4ea1812633963c87eb27d3cb8121c36eb9", "source_kind": "code"}, "shape_signature": "shape_2709161048e93ca5", "motif_signature": "motif_exact_f8b01ed02c82", "motif_coarse_signature": "motif_coarse_c4a7b2976828", "features": {"controls": ["for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 2}}FunctionDataflowBuilder._collect_state_accessesFunctionDataflowBuilder._…{"id": "fn_f6d8ae23b5780544", "type": "method", "label": "FunctionDataflowBuilder._collect_state_accesses", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._collect_state_accesses", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_802bcffe73725abd90de3f9b", "fragment_source_hash": "4dcf0605bfdd9295ce7ba257526a5996bec1381580fb7692a0eb0ec33235329c", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 544, "end_line": 575, "source_hash": "4dcf0605bfdd9295ce7ba257526a5996bec1381580fb7692a0eb0ec33235329c", "source_kind": "code"}, "shape_signature": "shape_3e8b51fce05004b7", "motif_signature": "motif_exact_a0ec022e0990", "motif_coarse_signature": "motif_coarse_3197fba9a06a", "features": {"controls": ["for_loop", "for_loop", "branch"], "effects": [], "state_reads": 12, "state_writes": 1, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.class_name", "dataflow:FunctionDataflowBuilder:self.fn", "dataflow:FunctionDataflowBuilder:self.globals_decl", "dataflow:FunctionDataflowBuilder:self.local_names", "dataflow:FunctionDataflowBuilder:self.module", "dataflow:FunctionDataflowBuilder:self.module_globals", "dataflow:FunctionDataflowBuilder:self.nodes", "dataflow:FunctionDataflowBuilder:self.owner_id", "dataflow:FunctionDataflowBuilder:self.params", "dataflow:FunctionDataflowBuilder:self.state_accesses"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.state_accesses"], "local_calls": 5, "boundary_calls": 3}}FunctionDataflowBuilder._define_targetFunctionDataflowBuilder._…{"id": "fn_7219b50c7efbac11", "type": "method", "label": "FunctionDataflowBuilder._define_target", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._define_target", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_5e8d23ea6bc4b11e4ccce509", "fragment_source_hash": "b1f6fa70ebdbebc2ca873317495eee57013337823e293d46d13fd8d9bc7284b5", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 577, "end_line": 588, "source_hash": "b1f6fa70ebdbebc2ca873317495eee57013337823e293d46d13fd8d9bc7284b5", "source_kind": "code"}, "shape_signature": "shape_3a9116f892b6467a", "motif_signature": "motif_exact_842a350f04ad", "motif_coarse_signature": "motif_coarse_42095bdcc695", "features": {"controls": ["for_loop", "branch", "branch"], "effects": [], "state_reads": 4, "state_writes": 1, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.alias_edges", "dataflow:FunctionDataflowBuilder:self.globals_decl", "dataflow:FunctionDataflowBuilder:self.nonlocals_decl", "param:env[]"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.alias_edges"], "local_calls": 4, "boundary_calls": 2}}FunctionDataflowBuilder._merge_envsFunctionDataflowBuilder._…{"id": "fn_0ad1f7d99e0fd79e", "type": "method", "label": "FunctionDataflowBuilder._merge_envs", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._merge_envs", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_4e04c1241dc04002b3d8d4f6", "fragment_source_hash": "675645b34484f8826ba8da527220bd32cbd9a4893f791cd0325cdd684467b86b", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 590, "end_line": 608, "source_hash": "675645b34484f8826ba8da527220bd32cbd9a4893f791cd0325cdd684467b86b", "source_kind": "code"}, "shape_signature": "shape_9e29e869413dd5f0", "motif_signature": "motif_exact_d3ad1c6ded1f", "motif_coarse_signature": "motif_coarse_404687b09fc9", "features": {"controls": ["for_loop", "branch", "for_loop", "branch"], "effects": [], "state_reads": 1, "state_writes": 1, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.phi_nodes"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.phi_nodes"], "local_calls": 4, "boundary_calls": 16}}FunctionDataflowBuilder._make_sinkFunctionDataflowBuilder._…{"id": "fn_e89dcf2966b9b520", "type": "method", "label": "FunctionDataflowBuilder._make_sink", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._make_sink", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_c051073a8271673852cccf09", "fragment_source_hash": "fb08d71e0c3b3559f54d19d58f76f1f8bf9f3afb3ff15c176898377d1dd21b04", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 610, "end_line": 624, "source_hash": "fb08d71e0c3b3559f54d19d58f76f1f8bf9f3afb3ff15c176898377d1dd21b04", "source_kind": "code"}, "shape_signature": "shape_323a6fac575c074f", "motif_signature": "motif_exact_6d269ddc49ed", "motif_coarse_signature": "motif_coarse_38e8e098cb70", "features": {"controls": [], "effects": [], "state_reads": 6, "state_writes": 1, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.nodes", "dataflow:FunctionDataflowBuilder:self.owner_id", "dataflow:FunctionDataflowBuilder:self.qname", "dataflow:FunctionDataflowBuilder:self.rel"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.nodes[]"], "local_calls": 3, "boundary_calls": 1}}FunctionDataflowBuilder.process_blockFunctionDataflowBuilder.p…{"id": "fn_95c04eae34d419d7", "type": "method", "label": "FunctionDataflowBuilder.process_block", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder.process_block", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_61c4c295be6b554c13ee28d6", "fragment_source_hash": "5bfcc9775ca049c38671325eb53d5fc2a0748167f601151efeefe82ff7e85601", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 626, "end_line": 632, "source_hash": "5bfcc9775ca049c38671325eb53d5fc2a0748167f601151efeefe82ff7e85601", "source_kind": "code"}, "shape_signature": "shape_f128b79e009ddf07", "motif_signature": "motif_exact_4779f6e875ae", "motif_coarse_signature": "motif_coarse_124ee2cc7711", "features": {"controls": ["for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 1}}FunctionDataflowBuilder.process_stmtFunctionDataflowBuilder.p…{"id": "fn_f528606793e69761", "type": "method", "label": "FunctionDataflowBuilder.process_stmt", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder.process_stmt", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_f47883c46c3cb837ed7d48be", "fragment_source_hash": "57e6f12e82838a9ff9f3e4ac8e56a210af55e8cebfbce5e29e4be7dbc8dd0899", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 634, "end_line": 755, "source_hash": "57e6f12e82838a9ff9f3e4ac8e56a210af55e8cebfbce5e29e4be7dbc8dd0899", "source_kind": "code"}, "shape_signature": "shape_db97a72a8642ef8d", "motif_signature": "motif_exact_42e0d97e9725", "motif_coarse_signature": "motif_coarse_6498af11de89", "features": {"controls": ["branch", "for_loop", "branch", "branch", "branch", "for_loop", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "for_loop", "branch", "branch", "branch", "branch", "branch", "for_loop", "branch", "branch", "branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 19, "state_writes": 1, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.globals_decl", "dataflow:FunctionDataflowBuilder:self.local_names", "dataflow:FunctionDataflowBuilder:self.nodes", "dataflow:FunctionDataflowBuilder:self.nonlocals_decl", "dataflow:FunctionDataflowBuilder:self.owner_id", "dataflow:FunctionDataflowBuilder:self.qname", "dataflow:FunctionDataflowBuilder:self.rel"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.nodes[]"], "local_calls": 53, "boundary_calls": 65}}FunctionDataflowBuilder._build_exception_flowFunctionDataflowBuilder._…{"id": "fn_27a1e00ca46db8f9", "type": "method", "label": "FunctionDataflowBuilder._build_exception_flow", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder._build_exception_flow", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_737737e4234adc31299e298d", "fragment_source_hash": "f3afd7e0b79ed0fdea0ea6bee3af255d9ec3b1645d1b471070accd9b60903e98", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 757, "end_line": 835, "source_hash": "f3afd7e0b79ed0fdea0ea6bee3af255d9ec3b1645d1b471070accd9b60903e98", "source_kind": "code"}, "shape_signature": "shape_1d9e7d3a3be74439", "motif_signature": "motif_exact_010eeaeb39cc", "motif_coarse_signature": "motif_coarse_6498af11de89", "features": {"controls": ["for_loop", "for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "branch", "branch", "for_loop", "branch", "branch", "for_loop"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.fn"], "state_write_targets": [], "local_calls": 12, "boundary_calls": 24}}FunctionDataflowBuilder.buildFunctionDataflowBuilder.b…{"id": "fn_2a5d2bb133227efa", "type": "method", "label": "FunctionDataflowBuilder.build", "path": "dataflow.py", "module": "dataflow", "symbol": "FunctionDataflowBuilder.build", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_dc991ab18d9e00f9e179811a", "fragment_source_hash": "0cd83ae8d37df2ca3fc5e678697ca4f0c43917708391e597db208035ec16ae7e", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 837, "end_line": 860, "source_hash": "0cd83ae8d37df2ca3fc5e678697ca4f0c43917708391e597db208035ec16ae7e", "source_kind": "code"}, "shape_signature": "shape_8aae77d5e846c2ae", "motif_signature": "motif_exact_5e8165a7e236", "motif_coarse_signature": "motif_coarse_60b379b0f376", "features": {"controls": [], "effects": [], "state_reads": 15, "state_writes": 1, "state_read_targets": ["dataflow:FunctionDataflowBuilder:self.alias_edges", "dataflow:FunctionDataflowBuilder:self.edges", "dataflow:FunctionDataflowBuilder:self.env", "dataflow:FunctionDataflowBuilder:self.explicit_raises", "dataflow:FunctionDataflowBuilder:self.findings", "dataflow:FunctionDataflowBuilder:self.fn", "dataflow:FunctionDataflowBuilder:self.handlers", "dataflow:FunctionDataflowBuilder:self.nodes", "dataflow:FunctionDataflowBuilder:self.phi_nodes", "dataflow:FunctionDataflowBuilder:self.state_accesses", "dataflow:FunctionDataflowBuilder:self.unresolved_local_uses"], "state_write_targets": ["dataflow:FunctionDataflowBuilder:self.env"], "local_calls": 2, "boundary_calls": 11}}analyze_function_dataflowanalyze_function_dataflow{"id": "fn_301c02e72e10a6a4", "type": "function", "label": "analyze_function_dataflow", "path": "dataflow.py", "module": "dataflow", "symbol": "analyze_function_dataflow", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_ab6aeb5b576e8dd365e01d91", "fragment_source_hash": "949f21a7ad15083964f4c29d280d7ecd0b8588c6aef17bb7bd6fe1bd4a0b7cd8", "fragment_context_fingerprint": "ctx_9b2d2974c3dc32945ffb7a5e", "evidence": {"path": "dataflow.py", "line": 863, "end_line": 873, "source_hash": "949f21a7ad15083964f4c29d280d7ecd0b8588c6aef17bb7bd6fe1bd4a0b7cd8", "source_kind": "code"}, "shape_signature": "shape_721431609739b840", "motif_signature": "motif_exact_634a3a10bf84", "motif_coarse_signature": "motif_coarse_7d036f941004", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}diff_report.pydiff_report.py{"id": "file_897f3e78dac93476", "type": "file", "label": "diff_report.py", "path": "diff_report.py", "module": "diff_report", "status": "observed", "confidence": 1.0, "evidence": {"path": "diff_report.py", "line": 1, "end_line": 116, "source_hash": "706bdf4002b792329941102b00c03922d9f0825f4955aa5f60174c18fdbb25ee", "source_kind": "code"}}_esc_esc{"id": "fn_a1c8c86d69f64452", "type": "function", "label": "_esc", "path": "diff_report.py", "module": "diff_report", "symbol": "_esc", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_5c24456c8d94a234a1077218", "fragment_source_hash": "44139dc2fc5f14773f74a14e26c6848790a3902219b9e0f637ffdea23fe17075", "fragment_context_fingerprint": "ctx_6a09c73406a7fd03c1a49730", "evidence": {"path": "diff_report.py", "line": 9, "end_line": 10, "source_hash": "44139dc2fc5f14773f74a14e26c6848790a3902219b9e0f637ffdea23fe17075", "source_kind": "code"}, "shape_signature": "shape_ac1d945b22efb910", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}write_semantic_diff_jsonwrite_semantic_diff_json{"id": "fn_622fe0cb79a817f9", "type": "function", "label": "write_semantic_diff_json", "path": "diff_report.py", "module": "diff_report", "symbol": "write_semantic_diff_json", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_cca14ff9621c9a7c2010a422", "fragment_source_hash": "d761f9544a799be5ae67875e6f8fcc3528f83b44da31cd974d01e455ac99f643", "fragment_context_fingerprint": "ctx_6a09c73406a7fd03c1a49730", "evidence": {"path": "diff_report.py", "line": 13, "end_line": 14, "source_hash": "d761f9544a799be5ae67875e6f8fcc3528f83b44da31cd974d01e455ac99f643", "source_kind": "code"}, "shape_signature": "shape_ff98423c35c8ed2a", "motif_signature": "motif_exact_570e0f8ad5fd", "motif_coarse_signature": "motif_coarse_2a35739c27f5", "features": {"controls": [], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}write_semantic_diff_markdownwrite_semantic_diff_markdown{"id": "fn_9fc8cbdb4a103e37", "type": "function", "label": "write_semantic_diff_markdown", "path": "diff_report.py", "module": "diff_report", "symbol": "write_semantic_diff_markdown", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_c4690701eaec2554121fb218", "fragment_source_hash": "178348b4f60f385d7de94c291f164fc1ff0f157667942486547337314250c71c", "fragment_context_fingerprint": "ctx_6a09c73406a7fd03c1a49730", "evidence": {"path": "diff_report.py", "line": 17, "end_line": 66, "source_hash": "178348b4f60f385d7de94c291f164fc1ff0f157667942486547337314250c71c", "source_kind": "code"}, "shape_signature": "shape_791581a05b1dd0dd", "motif_signature": "motif_exact_74fe62dd2770", "motif_coarse_signature": "motif_coarse_badecf459a63", "features": {"controls": ["for_loop", "for_loop", "for_loop", "for_loop"], "effects": ["file_io"], "state_reads": 3, "state_writes": 0, "state_read_targets": ["param:diff[]"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 27}}write_semantic_diff_htmlwrite_semantic_diff_html{"id": "fn_35a1d12e576b0ecc", "type": "function", "label": "write_semantic_diff_html", "path": "diff_report.py", "module": "diff_report", "symbol": "write_semantic_diff_html", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d88943b7a98604d2effcef4f", "fragment_source_hash": "8bb636773da135a4574c0fa3b4e6543791e38bdb0943da932c0ddff33cbf6539", "fragment_context_fingerprint": "ctx_6a09c73406a7fd03c1a49730", "evidence": {"path": "diff_report.py", "line": 69, "end_line": 116, "source_hash": "8bb636773da135a4574c0fa3b4e6543791e38bdb0943da932c0ddff33cbf6539", "source_kind": "code"}, "shape_signature": "shape_7aa1c3bc3c817242", "motif_signature": "motif_exact_f6c6d4fd2898", "motif_coarse_signature": "motif_coarse_3a2eb66bf0ac", "features": {"controls": [], "effects": ["file_io"], "state_reads": 3, "state_writes": 0, "state_read_targets": ["param:diff[]"], "state_write_targets": [], "local_calls": 22, "boundary_calls": 37}}git_adapter.pygit_adapter.py{"id": "file_a5d8e732a41a415e", "type": "file", "label": "git_adapter.py", "path": "git_adapter.py", "module": "git_adapter", "status": "observed", "confidence": 1.0, "evidence": {"path": "git_adapter.py", "line": 1, "end_line": 139, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "source_kind": "code"}}GitAdapterErrorGitAdapterError{"id": "class_fbcb30944f2aa56d", "type": "class", "label": "GitAdapterError", "path": "git_adapter.py", "module": "git_adapter", "symbol": "GitAdapterError", "status": "observed", "confidence": 1.0, "evidence": {"path": "git_adapter.py", "line": 13, "end_line": 14, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "source_kind": "code"}}_git_git{"id": "fn_db02c6712677f720", "type": "function", "label": "_git", "path": "git_adapter.py", "module": "git_adapter", "symbol": "_git", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_f644cae07e7499a612d31595", "fragment_source_hash": "4495de93169fb2b8caf95422efeb512a65517898d637059b49bc75f3ff3452a0", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 16, "end_line": 24, "source_hash": "4495de93169fb2b8caf95422efeb512a65517898d637059b49bc75f3ff3452a0", "source_kind": "code"}, "shape_signature": "shape_ba8377f19df24c5a", "motif_signature": "motif_exact_949f4b2caa67", "motif_coarse_signature": "motif_coarse_db65de45a71c", "features": {"controls": ["try"], "effects": ["process"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 6}}ensure_git_repoensure_git_repo{"id": "fn_f1fb73a3eb13103a", "type": "function", "label": "ensure_git_repo", "path": "git_adapter.py", "module": "git_adapter", "symbol": "ensure_git_repo", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_48e317fb512b0d61bbba1c54", "fragment_source_hash": "6fb9fc6b14fb854fc2ea08bf2728e5f9f76d9f206a335056e17562fb1c51584b", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 26, "end_line": 30, "source_hash": "6fb9fc6b14fb854fc2ea08bf2728e5f9f76d9f206a335056e17562fb1c51584b", "source_kind": "code"}, "shape_signature": "shape_480ca0834aff550e", "motif_signature": "motif_exact_0f114ca2f2c9", "motif_coarse_signature": "motif_coarse_f4a86b4f0a93", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 6}}resolve_refresolve_ref{"id": "fn_0b0cea2f94f85eab", "type": "function", "label": "resolve_ref", "path": "git_adapter.py", "module": "git_adapter", "symbol": "resolve_ref", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_c769837438e8eadf54423f7c", "fragment_source_hash": "23447085343502cf347312a4fd1a4d3bf19bfbe3c29fb4539e87335c19f054cb", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 32, "end_line": 33, "source_hash": "23447085343502cf347312a4fd1a4d3bf19bfbe3c29fb4539e87335c19f054cb", "source_kind": "code"}, "shape_signature": "shape_02b1c20e97e3ebb0", "motif_signature": "motif_exact_634a3a10bf84", "motif_coarse_signature": "motif_coarse_7d036f941004", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}merge_basemerge_base{"id": "fn_8e22ab6e5bad10d7", "type": "function", "label": "merge_base", "path": "git_adapter.py", "module": "git_adapter", "symbol": "merge_base", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_673c191842191ace84f603c0", "fragment_source_hash": "fd81d4dcfc1940f890d2d37ff368dd1e09f1820df2131e8013bb8776b6da8bed", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 35, "end_line": 36, "source_hash": "fd81d4dcfc1940f890d2d37ff368dd1e09f1820df2131e8013bb8776b6da8bed", "source_kind": "code"}, "shape_signature": "shape_f7491f32e436f69b", "motif_signature": "motif_exact_634a3a10bf84", "motif_coarse_signature": "motif_coarse_7d036f941004", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 1}}commit_metadatacommit_metadata{"id": "fn_abc696ebe20ceea4", "type": "function", "label": "commit_metadata", "path": "git_adapter.py", "module": "git_adapter", "symbol": "commit_metadata", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_81bc012fd1b9f1d234087fa3", "fragment_source_hash": "c460b04036615fc057cecda13f0028dcffe3398bde8d426006345fb4f2b2f98d", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 38, "end_line": 48, "source_hash": "c460b04036615fc057cecda13f0028dcffe3398bde8d426006345fb4f2b2f98d", "source_kind": "code"}, "shape_signature": "shape_4270ba18c176af63", "motif_signature": "motif_exact_a7679d4a03b8", "motif_coarse_signature": "motif_coarse_fb89e85aac95", "features": {"controls": ["while_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 5}}_safe_member_path_safe_member_path{"id": "fn_beb258cec88602f7", "type": "function", "label": "_safe_member_path", "path": "git_adapter.py", "module": "git_adapter", "symbol": "_safe_member_path", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_3f6f2774dbc034478140632e", "fragment_source_hash": "8cc08cac9739e76a778947a6600a0eda77a23de2bae77223f3b52661e3790853", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 50, "end_line": 58, "source_hash": "8cc08cac9739e76a778947a6600a0eda77a23de2bae77223f3b52661e3790853", "source_kind": "code"}, "shape_signature": "shape_d71f48ec93d7e478", "motif_signature": "motif_exact_31df874b016f", "motif_coarse_signature": "motif_coarse_f4a86b4f0a93", "features": {"controls": ["branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 6}}archive_refarchive_ref{"id": "fn_4396e80c265df542", "type": "function", "label": "archive_ref", "path": "git_adapter.py", "module": "git_adapter", "symbol": "archive_ref", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8cd01c685b3141f5ed710276", "fragment_source_hash": "9e79333907f9c4458dd54e630c4cd56c8abc7051f34b0bf55d2b2b14713ab85b", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 60, "end_line": 80, "source_hash": "9e79333907f9c4458dd54e630c4cd56c8abc7051f34b0bf55d2b2b14713ab85b", "source_kind": "code"}, "shape_signature": "shape_62d7bacae82619f1", "motif_signature": "motif_exact_d4cac72b3a46", "motif_coarse_signature": "motif_coarse_0f0b203b840f", "features": {"controls": ["with_scope", "for_loop", "branch", "branch", "branch", "branch"], "effects": ["file_io", "file_io", "file_io", "file_io", "file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 3, "boundary_calls": 14}}changed_fileschanged_files{"id": "fn_21ab48c81cd9ca67", "type": "function", "label": "changed_files", "path": "git_adapter.py", "module": "git_adapter", "symbol": "changed_files", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_bb8ac53a426be74df41ed285", "fragment_source_hash": "f8621d726e1747f6d320bdaa5821fc97af523571a8ca537fd9144aa0eaff815d", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 82, "end_line": 94, "source_hash": "f8621d726e1747f6d320bdaa5821fc97af523571a8ca537fd9144aa0eaff815d", "source_kind": "code"}, "shape_signature": "shape_494a43d63e57a44d", "motif_signature": "motif_exact_ea43dc8f4655", "motif_coarse_signature": "motif_coarse_21f990ba2ff9", "features": {"controls": ["for_loop", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 8}}compare_metadatacompare_metadata{"id": "fn_250af6ad8007e2c5", "type": "function", "label": "compare_metadata", "path": "git_adapter.py", "module": "git_adapter", "symbol": "compare_metadata", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_7a65570a3973204aa7cf3be7", "fragment_source_hash": "f036ff486aef82cc27ebdd8babb7536a9a5360e7f477dffebe8d5bcd8adc914a", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 96, "end_line": 109, "source_hash": "f036ff486aef82cc27ebdd8babb7536a9a5360e7f477dffebe8d5bcd8adc914a", "source_kind": "code"}, "shape_signature": "shape_e7c5677dd2936276", "motif_signature": "motif_exact_ba2a2e3e7ca5", "motif_coarse_signature": "motif_coarse_15206a427b0f", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 8, "boundary_calls": 1}}materialize_comparematerialize_compare{"id": "fn_4af807b462b4553d", "type": "function", "label": "materialize_compare", "path": "git_adapter.py", "module": "git_adapter", "symbol": "materialize_compare", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_ab2cc377e25c84597110f66c", "fragment_source_hash": "6f54810e69d6bffccc70fbce3d1f567914f985f9d379e817efa33d3422b67bad", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 111, "end_line": 119, "source_hash": "6f54810e69d6bffccc70fbce3d1f567914f985f9d379e817efa33d3422b67bad", "source_kind": "code"}, "shape_signature": "shape_700d02284af6bfae", "motif_signature": "motif_exact_1280caa1a898", "motif_coarse_signature": "motif_coarse_7bef0e8aaa95", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 3, "boundary_calls": 2}}parse_github_eventparse_github_event{"id": "fn_76d2ff0dfa0b3b3e", "type": "function", "label": "parse_github_event", "path": "git_adapter.py", "module": "git_adapter", "symbol": "parse_github_event", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_eaa4e4ce3d73b1ccc8aac7be", "fragment_source_hash": "ba763e3d756a041304b0fbc50693f2c92015062f745b23bf91ad0d39fe4ca0b9", "fragment_context_fingerprint": "ctx_0545e85ee3cac7067e0569cf", "evidence": {"path": "git_adapter.py", "line": 121, "end_line": 139, "source_hash": "ba763e3d756a041304b0fbc50693f2c92015062f745b23bf91ad0d39fe4ca0b9", "source_kind": "code"}, "shape_signature": "shape_2fc1f2fdaa48da0c", "motif_signature": "motif_exact_4bf629bb93f0", "motif_coarse_signature": "motif_coarse_d1e704e49a2c", "features": {"controls": ["branch", "branch", "branch"], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 28}}impact.pyimpact.py{"id": "file_8d20e98d4d78a6ab", "type": "file", "label": "impact.py", "path": "impact.py", "module": "impact", "status": "observed", "confidence": 1.0, "evidence": {"path": "impact.py", "line": 1, "end_line": 379, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "source_kind": "code"}}_node_label_node_label{"id": "fn_0360fbc76e96e6e4", "type": "function", "label": "_node_label", "path": "impact.py", "module": "impact", "symbol": "_node_label", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_bfdb56b5628069772a2dab2a", "fragment_source_hash": "9a437a7b943febee9bcc6105c3e012c1b32dc03df092acf40d064baefa5abd3c", "fragment_context_fingerprint": "ctx_6f4513c7b490152f6525a042", "evidence": {"path": "impact.py", "line": 14, "end_line": 17, "source_hash": "9a437a7b943febee9bcc6105c3e012c1b32dc03df092acf40d064baefa5abd3c", "source_kind": "code"}, "shape_signature": "shape_d90526b213211b0d", "motif_signature": "motif_exact_f76fac0b6c29", "motif_coarse_signature": "motif_coarse_69581341d26f", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 4}}_edge_status_edge_status{"id": "fn_b0d6b183e224a7de", "type": "function", "label": "_edge_status", "path": "impact.py", "module": "impact", "symbol": "_edge_status", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_420b4095e3283d734249263c", "fragment_source_hash": "66021f671c7e0c4101dbdcf2ac33e6005d1e057c1fe10e613c577b04399a7bc3", "fragment_context_fingerprint": "ctx_6f4513c7b490152f6525a042", "evidence": {"path": "impact.py", "line": 20, "end_line": 23, "source_hash": "66021f671c7e0c4101dbdcf2ac33e6005d1e057c1fe10e613c577b04399a7bc3", "source_kind": "code"}, "shape_signature": "shape_017a8486af5c2c13", "motif_signature": "motif_exact_900aa8012fb9", "motif_coarse_signature": "motif_coarse_69581341d26f", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 3}}_is_test_path_is_test_path{"id": "fn_9c4bc2c4646583d7", "type": "function", "label": "_is_test_path", "path": "impact.py", "module": "impact", "symbol": "_is_test_path", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_4a6b6a7aeaab1952afa3e8b8", "fragment_source_hash": "d85ba078c4885c77fc6122b24a9081e145ccca2e51641f53ac9ba08e197dc026", "fragment_context_fingerprint": "ctx_6f4513c7b490152f6525a042", "evidence": {"path": "impact.py", "line": 26, "end_line": 31, "source_hash": "d85ba078c4885c77fc6122b24a9081e145ccca2e51641f53ac9ba08e197dc026", "source_kind": "code"}, "shape_signature": "shape_116da6b92241302a", "motif_signature": "motif_exact_c1057ad27722", "motif_coarse_signature": "motif_coarse_b4a27ad8a6cb", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 5}}build_impact_indexbuild_impact_index{"id": "fn_5cfc1653cc53536f", "type": "function", "label": "build_impact_index", "path": "impact.py", "module": "impact", "symbol": "build_impact_index", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8158783ad333d7c8c7920acc", "fragment_source_hash": "8fe604f41283733c57f58d003d757e4dd645905d48492b6cb91a4d2f14274239", "fragment_context_fingerprint": "ctx_6f4513c7b490152f6525a042", "evidence": {"path": "impact.py", "line": 34, "end_line": 180, "source_hash": "8fe604f41283733c57f58d003d757e4dd645905d48492b6cb91a4d2f14274239", "source_kind": "code"}, "shape_signature": "shape_3e6b63d9e539fab1", "motif_signature": "motif_exact_684011e51e89", "motif_coarse_signature": "motif_coarse_1d063c7b37b2", "features": {"controls": ["for_loop", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "for_loop", "branch", "branch", "branch", "while_loop", "branch", "branch", "branch", "for_loop", "branch", "for_loop", "for_loop", "for_loop", "branch"], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["param:graph[]"], "state_write_targets": [], "local_calls": 3, "boundary_calls": 135}}resolve_impact_targetresolve_impact_target{"id": "fn_e0759a7323eefe79", "type": "function", "label": "resolve_impact_target", "path": "impact.py", "module": "impact", "symbol": "resolve_impact_target", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_64c2d23193d57bd49845c8ff", "fragment_source_hash": "d15215016b9b4cedadc5aeef03a351c25fdf5143fcb01849400e6307b0d513c8", "fragment_context_fingerprint": "ctx_6f4513c7b490152f6525a042", "evidence": {"path": "impact.py", "line": 183, "end_line": 199, "source_hash": "d15215016b9b4cedadc5aeef03a351c25fdf5143fcb01849400e6307b0d513c8", "source_kind": "code"}, "shape_signature": "shape_7e4def05641630ae", "motif_signature": "motif_exact_cf6788076b69", "motif_coarse_signature": "motif_coarse_b4a27ad8a6cb", "features": {"controls": ["branch", "branch", "branch", "branch"], "effects": [], "state_reads": 3, "state_writes": 0, "state_read_targets": ["param:index[]"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 12}}_bfs_paths_bfs_paths{"id": "fn_d17468dda9d443c0", "type": "function", "label": "_bfs_paths", "path": "impact.py", "module": "impact", "symbol": "_bfs_paths", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_68ce6846d4afcf344483d343", "fragment_source_hash": "536e184c6c25bfcb1900d1b242dc683f004b64bdc8b6febdf23f4d8f160d8365", "fragment_context_fingerprint": "ctx_6f4513c7b490152f6525a042", "evidence": {"path": "impact.py", "line": 202, "end_line": 217, "source_hash": "536e184c6c25bfcb1900d1b242dc683f004b64bdc8b6febdf23f4d8f160d8365", "source_kind": "code"}, "shape_signature": "shape_6dca0dcf338f72c7", "motif_signature": "motif_exact_6fd4d0d580be", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["for_loop", "while_loop", "branch", "for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 5}}analyze_impactanalyze_impact{"id": "fn_5c712935323030b5", "type": "function", "label": "analyze_impact", "path": "impact.py", "module": "impact", "symbol": "analyze_impact", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d6a72b85294ce2fdfce5398a", "fragment_source_hash": "777faca47dd6b6686caf67d80315ca55abe33658c2fa9ab49007c9983d84042c", "fragment_context_fingerprint": "ctx_6f4513c7b490152f6525a042", "evidence": {"path": "impact.py", "line": 220, "end_line": 361, "source_hash": "777faca47dd6b6686caf67d80315ca55abe33658c2fa9ab49007c9983d84042c", "source_kind": "code"}, "shape_signature": "shape_376fb9bd9ab5f0cf", "motif_signature": "motif_exact_383c76c0ac37", "motif_coarse_signature": "motif_coarse_6498af11de89", "features": {"controls": ["branch", "for_loop", "for_loop", "branch", "while_loop", "for_loop", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch", "branch", "for_loop"], "effects": [], "state_reads": 3, "state_writes": 0, "state_read_targets": ["param:graph[]", "param:index[]"], "state_write_targets": [], "local_calls": 11, "boundary_calls": 135}}top_impact_targetstop_impact_targets{"id": "fn_36722b4b2e2a3672", "type": "function", "label": "top_impact_targets", "path": "impact.py", "module": "impact", "symbol": "top_impact_targets", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_0ee0d39094b7005c544e55e3", "fragment_source_hash": "74d36639bdf22257fe5b4f91545aaa6d627a30bfec693aef9afd330847049417", "fragment_context_fingerprint": "ctx_6f4513c7b490152f6525a042", "evidence": {"path": "impact.py", "line": 364, "end_line": 379, "source_hash": "74d36639bdf22257fe5b4f91545aaa6d627a30bfec693aef9afd330847049417", "source_kind": "code"}, "shape_signature": "shape_f0f6c8fe46fe7fe7", "motif_signature": "motif_exact_d501691bca22", "motif_coarse_signature": "motif_coarse_73ce7991ba2b", "features": {"controls": ["for_loop", "try"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["param:index[]"], "state_write_targets": [], "local_calls": 2, "boundary_calls": 4}}incremental.pyincremental.py{"id": "file_7b76bf1c8875a5ce", "type": "file", "label": "incremental.py", "path": "incremental.py", "module": "incremental", "status": "observed", "confidence": 1.0, "evidence": {"path": "incremental.py", "line": 1, "end_line": 291, "source_hash": "c5d319aaebd5b8337c02327aac0f786eea78dd908ef7e245002dfe521a9bb642", "source_kind": "code"}}_changed_python_paths_changed_python_paths{"id": "fn_cc30cf74b45233d9", "type": "function", "label": "_changed_python_paths", "path": "incremental.py", "module": "incremental", "symbol": "_changed_python_paths", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_2d5cfb04929687dc0ce7d4cb", "fragment_source_hash": "05bb37079e690f3b01eabb18c6bffc5692e8c6e3cb9810d9ccb23e73238296ee", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 14, "end_line": 21, "source_hash": "05bb37079e690f3b01eabb18c6bffc5692e8c6e3cb9810d9ccb23e73238296ee", "source_kind": "code"}, "shape_signature": "shape_02db15e9f78b1abc", "motif_signature": "motif_exact_3698d402d8c9", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["for_loop", "for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 7}}_base_symbol_surface_base_symbol_surface{"id": "fn_13abd712df185b70", "type": "function", "label": "_base_symbol_surface", "path": "incremental.py", "module": "incremental", "symbol": "_base_symbol_surface", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d0f67371df71957490a457c3", "fragment_source_hash": "2b6386a308302725f02478ba4aced548ae8049a972c9d06cda1215762674a48a", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 24, "end_line": 29, "source_hash": "2b6386a308302725f02478ba4aced548ae8049a972c9d06cda1215762674a48a", "source_kind": "code"}, "shape_signature": "shape_21be5f6adecb314a", "motif_signature": "motif_exact_f64eecf8b72a", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 9}}_target_symbol_surface_target_symbol_surface{"id": "fn_87004fa42d7acea8", "type": "function", "label": "_target_symbol_surface", "path": "incremental.py", "module": "incremental", "symbol": "_target_symbol_surface", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_1bfc89a96ecb364e2f73ed48", "fragment_source_hash": "ca5371c3a2ee1128800384d0903768aab710fa22c0beea8701acece5162dcfcb", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 32, "end_line": 50, "source_hash": "ca5371c3a2ee1128800384d0903768aab710fa22c0beea8701acece5162dcfcb", "source_kind": "code"}, "shape_signature": "shape_234e9842533334cd", "motif_signature": "motif_exact_8bd5c336be59", "motif_coarse_signature": "motif_coarse_7dd22a6786df", "features": {"controls": ["branch", "try", "for_loop", "branch", "branch", "for_loop", "branch"], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 12}}assess_partial_recomputeassess_partial_recompute{"id": "fn_1b161fc36af48bf1", "type": "function", "label": "assess_partial_recompute", "path": "incremental.py", "module": "incremental", "symbol": "assess_partial_recompute", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8644d9510c522ec74b6130a8", "fragment_source_hash": "522082590a6d2bd951cd69b8b4525f9e35337b3e464364f1fb5cd67180663de6", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 53, "end_line": 133, "source_hash": "522082590a6d2bd951cd69b8b4525f9e35337b3e464364f1fb5cd67180663de6", "source_kind": "code"}, "shape_signature": "shape_1bbcdc67c7afce9d", "motif_signature": "motif_exact_b365010dfb7b", "motif_coarse_signature": "motif_coarse_1d063c7b37b2", "features": {"controls": ["branch", "for_loop", "for_loop", "branch", "for_loop", "branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 3, "boundary_calls": 30}}_stable_list_stable_list{"id": "fn_9ef4fe5ece95c707", "type": "function", "label": "_stable_list", "path": "incremental.py", "module": "incremental", "symbol": "_stable_list", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_8aec03362cc9c35b245e0b53", "fragment_source_hash": "3cae7f2525efc2e653d1a27ea215450a401d2073169c21fcb6d3e8acb386387f", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 136, "end_line": 137, "source_hash": "3cae7f2525efc2e653d1a27ea215450a401d2073169c21fcb6d3e8acb386387f", "source_kind": "code"}, "shape_signature": "shape_e07516eda98ce377", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}canonical_graph_payloadcanonical_graph_payload{"id": "fn_506142e989fb9c8f", "type": "function", "label": "canonical_graph_payload", "path": "incremental.py", "module": "incremental", "symbol": "canonical_graph_payload", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_f0bc5bc1ae010d106f7f6486", "fragment_source_hash": "57ac9e406533204a649bd82fa350411577fe38b82f56c1cc65a28fd8df3d12e3", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 140, "end_line": 160, "source_hash": "57ac9e406533204a649bd82fa350411577fe38b82f56c1cc65a28fd8df3d12e3", "source_kind": "code"}, "shape_signature": "shape_5194b82842d17b6a", "motif_signature": "motif_exact_ae75c31bd797", "motif_coarse_signature": "motif_coarse_6c80d7f9e304", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 6, "boundary_calls": 20}}canonical_graph_hashcanonical_graph_hash{"id": "fn_2d84f85a42009fc0", "type": "function", "label": "canonical_graph_hash", "path": "incremental.py", "module": "incremental", "symbol": "canonical_graph_hash", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_5f667afc4065d5420c3a5ed8", "fragment_source_hash": "445d59807b8cf1e14534654f38f84338ab55f63d5b4730b6d96781d1fa2c6cd3", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 163, "end_line": 165, "source_hash": "445d59807b8cf1e14534654f38f84338ab55f63d5b4730b6d96781d1fa2c6cd3", "source_kind": "code"}, "shape_signature": "shape_c536721008a9b4a9", "motif_signature": "motif_exact_2aceb943e615", "motif_coarse_signature": "motif_coarse_125fe4728a6b", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 4}}graph_equivalence_reportgraph_equivalence_report{"id": "fn_c5749cc392736908", "type": "function", "label": "graph_equivalence_report", "path": "incremental.py", "module": "incremental", "symbol": "graph_equivalence_report", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_1d35dc64ac48c9b49672dd2c", "fragment_source_hash": "4e1a6864307c47e37732429af29289206c0aa9724652650b31993e1757f46774", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 168, "end_line": 180, "source_hash": "4e1a6864307c47e37732429af29289206c0aa9724652650b31993e1757f46774", "source_kind": "code"}, "shape_signature": "shape_ceb2dec159a23e11", "motif_signature": "motif_exact_e48bea817958", "motif_coarse_signature": "motif_coarse_d16616ca7f4c", "features": {"controls": ["for_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 4, "boundary_calls": 4}}build_invalidation_planbuild_invalidation_plan{"id": "fn_e8744693075d256f", "type": "function", "label": "build_invalidation_plan", "path": "incremental.py", "module": "incremental", "symbol": "build_invalidation_plan", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_3f286453c49c720ef970f0cb", "fragment_source_hash": "3caef0f44d4c7be6a1f269400e020b58b87e1cf59989f40e1aa2052c7b015570", "fragment_context_fingerprint": "ctx_4dffea96ea50a5f1085e3a7e", "evidence": {"path": "incremental.py", "line": 183, "end_line": 291, "source_hash": "3caef0f44d4c7be6a1f269400e020b58b87e1cf59989f40e1aa2052c7b015570", "source_kind": "code"}, "shape_signature": "shape_3992aa7488f35d06", "motif_signature": "motif_exact_85b67f719c60", "motif_coarse_signature": "motif_coarse_21f990ba2ff9", "features": {"controls": ["for_loop", "for_loop", "branch", "for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "branch", "branch", "while_loop", "branch", "for_loop", "branch", "while_loop", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch", "for_loop", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 74}}pr_review.pypr_review.py{"id": "file_b4a3b708457d6e11", "type": "file", "label": "pr_review.py", "path": "pr_review.py", "module": "pr_review", "status": "observed", "confidence": 1.0, "evidence": {"path": "pr_review.py", "line": 1, "end_line": 194, "source_hash": "b9a4a702230a2c964ce7d5908a6ea0b64090d37ca52aea339d3b0f4ca24359c9", "source_kind": "code"}}_rank_rank{"id": "fn_182692c29b784859", "type": "function", "label": "_rank", "path": "pr_review.py", "module": "pr_review", "symbol": "_rank", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_93e47adb74e9540cea019ada", "fragment_source_hash": "24d74dffa08004da4d43e1edde7ca4c51f4298fbb85a09853d9b73cd565a5776", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 13, "end_line": 14, "source_hash": "24d74dffa08004da4d43e1edde7ca4c51f4298fbb85a09853d9b73cd565a5776", "source_kind": "code"}, "shape_signature": "shape_d1a99768c9da1481", "motif_signature": "motif_exact_44528bd13829", "motif_coarse_signature": "motif_coarse_b2feb91af8fa", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 1}}_esc_esc{"id": "fn_0a8985e42b00ecf0", "type": "function", "label": "_esc", "path": "pr_review.py", "module": "pr_review", "symbol": "_esc", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_0fc53d02ae0d3a8fec68aa20", "fragment_source_hash": "df2c0e5178e2a34bed0593445d42830f18cddb54f70fda43a328df50700d0e94", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 17, "end_line": 18, "source_hash": "df2c0e5178e2a34bed0593445d42830f18cddb54f70fda43a328df50700d0e94", "source_kind": "code"}, "shape_signature": "shape_2db6efce494f639a", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}_find_target_find_target{"id": "fn_9b92f98843fb84eb", "type": "function", "label": "_find_target", "path": "pr_review.py", "module": "pr_review", "symbol": "_find_target", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_f3c99ec5c15f95ba782b4b11", "fragment_source_hash": "c51e08abfc2e6deb69cedbed5cf525c447bfc32aaf07e142ec3bd2daf0418715", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 21, "end_line": 25, "source_hash": "c51e08abfc2e6deb69cedbed5cf525c447bfc32aaf07e142ec3bd2daf0418715", "source_kind": "code"}, "shape_signature": "shape_8a3e240cc28310e0", "motif_signature": "motif_exact_c1057ad27722", "motif_coarse_signature": "motif_coarse_b4a27ad8a6cb", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 5}}_changed_function_seeds_changed_function_seeds{"id": "fn_5f21d37115bab3ba", "type": "function", "label": "_changed_function_seeds", "path": "pr_review.py", "module": "pr_review", "symbol": "_changed_function_seeds", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_2190f9bb5c5278c312bd11c7", "fragment_source_hash": "8ab2a535a36b36c8f4cfbd0e4f63defafcfe51b569ea6df765e319469d9648f3", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 28, "end_line": 48, "source_hash": "8ab2a535a36b36c8f4cfbd0e4f63defafcfe51b569ea6df765e319469d9648f3", "source_kind": "code"}, "shape_signature": "shape_84a7d1773708fcc9", "motif_signature": "motif_exact_791287c90963", "motif_coarse_signature": "motif_coarse_1d063c7b37b2", "features": {"controls": ["for_loop", "branch", "for_loop", "branch", "for_loop", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 3, "boundary_calls": 19}}_aggregate_impact_aggregate_impact{"id": "fn_a3c9bba8789e8058", "type": "function", "label": "_aggregate_impact", "path": "pr_review.py", "module": "pr_review", "symbol": "_aggregate_impact", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d9de4686554cdbc6c33189d0", "fragment_source_hash": "3227bf9319a70ba92bc83925e34afe7145e9a89990797c0f590fae90fe23676c", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 51, "end_line": 81, "source_hash": "3227bf9319a70ba92bc83925e34afe7145e9a89990797c0f590fae90fe23676c", "source_kind": "code"}, "shape_signature": "shape_224159ac2ffa4176", "motif_signature": "motif_exact_19e81659875a", "motif_coarse_signature": "motif_coarse_38b282130043", "features": {"controls": ["for_loop", "try", "for_loop", "for_loop", "for_loop", "for_loop"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["param:seed_ids[]"], "state_write_targets": [], "local_calls": 2, "boundary_calls": 46}}build_pr_reviewbuild_pr_review{"id": "fn_6fb40c42f54a6a9e", "type": "function", "label": "build_pr_review", "path": "pr_review.py", "module": "pr_review", "symbol": "build_pr_review", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_9f007843ba6b3ab1c1a192e3", "fragment_source_hash": "807278779d50a832b0843ee3d6ff7393191955982de0bb9b157e7f3ea776a4cf", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 84, "end_line": 110, "source_hash": "807278779d50a832b0843ee3d6ff7393191955982de0bb9b157e7f3ea776a4cf", "source_kind": "code"}, "shape_signature": "shape_1527fc460caa5702", "motif_signature": "motif_exact_fce6f9ac9e6c", "motif_coarse_signature": "motif_coarse_f4a86b4f0a93", "features": {"controls": ["branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 4, "boundary_calls": 27}}review_markdownreview_markdown{"id": "fn_fc35dabfd380757b", "type": "function", "label": "review_markdown", "path": "pr_review.py", "module": "pr_review", "symbol": "review_markdown", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_f27cbe9461dac5f9926c4721", "fragment_source_hash": "abedd2eeab8462f9fc0d194b08537a0b1d384c19efe07436e8cb010aba03def3", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 113, "end_line": 150, "source_hash": "abedd2eeab8462f9fc0d194b08537a0b1d384c19efe07436e8cb010aba03def3", "source_kind": "code"}, "shape_signature": "shape_bd4e8959312f8201", "motif_signature": "motif_exact_759262a10d15", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["branch", "branch", "branch", "branch", "branch", "for_loop", "for_loop", "branch", "branch"], "effects": [], "state_reads": 3, "state_writes": 0, "state_read_targets": ["param:review[]"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 63}}annotation_commandsannotation_commands{"id": "fn_f82d927221a3dfd7", "type": "function", "label": "annotation_commands", "path": "pr_review.py", "module": "pr_review", "symbol": "annotation_commands", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d64a981c22e1057922c873c3", "fragment_source_hash": "0988c829474cd3823dfb7ec87054bb200d69d226dbb7a22a643e9adab7475b9c", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 153, "end_line": 161, "source_hash": "0988c829474cd3823dfb7ec87054bb200d69d226dbb7a22a643e9adab7475b9c", "source_kind": "code"}, "shape_signature": "shape_89939d137eab36c5", "motif_signature": "motif_exact_f568e4579ee4", "motif_coarse_signature": "motif_coarse_5f2df1974da9", "features": {"controls": ["for_loop"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 13}}write_pr_review_outputswrite_pr_review_outputs{"id": "fn_09ceb93e9994576f", "type": "function", "label": "write_pr_review_outputs", "path": "pr_review.py", "module": "pr_review", "symbol": "write_pr_review_outputs", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_147a388d4635e264176c7736", "fragment_source_hash": "1dbb0ce0b4ea9445575e6829361acf6292dc220c9b186fd5fb4e5b143ad32cdb", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 164, "end_line": 170, "source_hash": "1dbb0ce0b4ea9445575e6829361acf6292dc220c9b186fd5fb4e5b143ad32cdb", "source_kind": "code"}, "shape_signature": "shape_02e5a512e7f08b77", "motif_signature": "motif_exact_32c5c358acff", "motif_coarse_signature": "motif_coarse_89f822006874", "features": {"controls": [], "effects": ["file_io", "file_io", "file_io", "file_io", "file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 7}}write_pr_review_htmlwrite_pr_review_html{"id": "fn_ba7d1e873834b22c", "type": "function", "label": "write_pr_review_html", "path": "pr_review.py", "module": "pr_review", "symbol": "write_pr_review_html", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a082ea78830ab3f2ec40235d", "fragment_source_hash": "acac64b1554661879ae1f7a8a82bf3cc1cdfb417f1686c3ddcd3d246968d9c9f", "fragment_context_fingerprint": "ctx_01a4505d97c6481df3a85336", "evidence": {"path": "pr_review.py", "line": 173, "end_line": 194, "source_hash": "acac64b1554661879ae1f7a8a82bf3cc1cdfb417f1686c3ddcd3d246968d9c9f", "source_kind": "code"}, "shape_signature": "shape_3d8901ec2727af4a", "motif_signature": "motif_exact_db1cfe77f8e8", "motif_coarse_signature": "motif_coarse_3a2eb66bf0ac", "features": {"controls": [], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 36, "boundary_calls": 74}}product_ui.pyproduct_ui.py{"id": "file_e178c37766908944", "type": "file", "label": "product_ui.py", "path": "product_ui.py", "module": "product_ui", "status": "observed", "confidence": 1.0, "evidence": {"path": "product_ui.py", "line": 1, "end_line": 214, "source_hash": "419c7f1401a5528f1462e11a8afa1fa900d3a25c09be14e458420d94ea23485e", "source_kind": "code"}}_esc_esc{"id": "fn_42126232ec75803d", "type": "function", "label": "_esc", "path": "product_ui.py", "module": "product_ui", "symbol": "_esc", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_9a6e2313d207fb39920f7889", "fragment_source_hash": "2f652c737319a49bb1caa3b5807a53eb07c4cc44a57e36b42ae3e178d4f9169e", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 14, "end_line": 15, "source_hash": "2f652c737319a49bb1caa3b5807a53eb07c4cc44a57e36b42ae3e178d4f9169e", "source_kind": "code"}, "shape_signature": "shape_9c2e7fb37a4edec6", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}_sev_rank_sev_rank{"id": "fn_a25a0eea268fed17", "type": "function", "label": "_sev_rank", "path": "product_ui.py", "module": "product_ui", "symbol": "_sev_rank", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_2d72b8e0a90a1ee5035f0805", "fragment_source_hash": "bc7a02d0f6cb90687b011a2d9036e772c2a98fedc85c1a2d39f8de9ac92655d2", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 18, "end_line": 19, "source_hash": "bc7a02d0f6cb90687b011a2d9036e772c2a98fedc85c1a2d39f8de9ac92655d2", "source_kind": "code"}, "shape_signature": "shape_d1a99768c9da1481", "motif_signature": "motif_exact_44528bd13829", "motif_coarse_signature": "motif_coarse_b2feb91af8fa", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 1}}_project_status_project_status{"id": "fn_cfb124718836894b", "type": "function", "label": "_project_status", "path": "product_ui.py", "module": "product_ui", "symbol": "_project_status", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_40e3de1b26765c1cd4f6b074", "fragment_source_hash": "579b1731c8f0fa8f44b5a952a5453fb2b6c98e4fd3b7161684c250aa22daa1d6", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 22, "end_line": 30, "source_hash": "579b1731c8f0fa8f44b5a952a5453fb2b6c98e4fd3b7161684c250aa22daa1d6", "source_kind": "code"}, "shape_signature": "shape_97d456404d390abb", "motif_signature": "motif_exact_fa62b8f67b8f", "motif_coarse_signature": "motif_coarse_b4a27ad8a6cb", "features": {"controls": ["branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 6}}build_project_summarybuild_project_summary{"id": "fn_8052910cf07630cf", "type": "function", "label": "build_project_summary", "path": "product_ui.py", "module": "product_ui", "symbol": "build_project_summary", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_2a3bd3681814b7217233a15d", "fragment_source_hash": "973b806805ac809e36396e40fd2a316902cc8efdc8d11bf6a78ac08a9b76d8e1", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 33, "end_line": 64, "source_hash": "973b806805ac809e36396e40fd2a316902cc8efdc8d11bf6a78ac08a9b76d8e1", "source_kind": "code"}, "shape_signature": "shape_867ec0f43e82f8c1", "motif_signature": "motif_exact_8003b09ecd2c", "motif_coarse_signature": "motif_coarse_ce08f8f7d524", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 4, "boundary_calls": 38}}write_project_summary_jsonwrite_project_summary_json{"id": "fn_9fa21a30b49ef8e9", "type": "function", "label": "write_project_summary_json", "path": "product_ui.py", "module": "product_ui", "symbol": "write_project_summary_json", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_3c268328473021e67913fe6a", "fragment_source_hash": "2e817896715d9395d69c32b310f7ee37cc6c62532d1b59e38155475c7bf3a47d", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 67, "end_line": 68, "source_hash": "2e817896715d9395d69c32b310f7ee37cc6c62532d1b59e38155475c7bf3a47d", "source_kind": "code"}, "shape_signature": "shape_cfcbfb1e73014969", "motif_signature": "motif_exact_79fe8d1097f2", "motif_coarse_signature": "motif_coarse_9f0831ec4b22", "features": {"controls": [], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 2}}_finding_rows_finding_rows{"id": "fn_d918e55926771ab8", "type": "function", "label": "_finding_rows", "path": "product_ui.py", "module": "product_ui", "symbol": "_finding_rows", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_e1800296f5771b9cbef55987", "fragment_source_hash": "8796ba3e09f84ba2f2bdb90c45bf9d309432aa3ceb8db079c44f093537ae99a4", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 71, "end_line": 81, "source_hash": "8796ba3e09f84ba2f2bdb90c45bf9d309432aa3ceb8db079c44f093537ae99a4", "source_kind": "code"}, "shape_signature": "shape_57f2ab797e82d0b5", "motif_signature": "motif_exact_b9ff8771abf2", "motif_coarse_signature": "motif_coarse_7a99543fed3f", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 10, "boundary_calls": 11}}write_project_htmlwrite_project_html{"id": "fn_961985a3773b3278", "type": "function", "label": "write_project_html", "path": "product_ui.py", "module": "product_ui", "symbol": "write_project_html", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_64c0e61ff1d1cacfdea35edc", "fragment_source_hash": "13ab086b79c89dc4596f8b09da2960146c3f43eb87d7ff91c4de90e12e7b084f", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 84, "end_line": 150, "source_hash": "13ab086b79c89dc4596f8b09da2960146c3f43eb87d7ff91c4de90e12e7b084f", "source_kind": "code"}, "shape_signature": "shape_d1f0b6780261bf80", "motif_signature": "motif_exact_0c5ef22eb67e", "motif_coarse_signature": "motif_coarse_10d26391059d", "features": {"controls": ["for_loop"], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 25, "boundary_calls": 50}}build_review_summarybuild_review_summary{"id": "fn_36f85692ef76a785", "type": "function", "label": "build_review_summary", "path": "product_ui.py", "module": "product_ui", "symbol": "build_review_summary", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_a1d6a463092323db1fab8006", "fragment_source_hash": "f23a1727f5d71bc09883e7e6ecbce1ab3ede1f4ec6979f729160b9c90a9c4086", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 153, "end_line": 175, "source_hash": "f23a1727f5d71bc09883e7e6ecbce1ab3ede1f4ec6979f729160b9c90a9c4086", "source_kind": "code"}, "shape_signature": "shape_df79e7dc87521fe8", "motif_signature": "motif_exact_c5ad97750538", "motif_coarse_signature": "motif_coarse_ce08f8f7d524", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 3, "boundary_calls": 25}}write_review_summary_jsonwrite_review_summary_json{"id": "fn_aec91b75c15a2875", "type": "function", "label": "write_review_summary_json", "path": "product_ui.py", "module": "product_ui", "symbol": "write_review_summary_json", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_9d2d794959974802f263ef1a", "fragment_source_hash": "400d785c74a482535df041927a86da650c28054d71a29a0f5daa67a947c06289", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 178, "end_line": 179, "source_hash": "400d785c74a482535df041927a86da650c28054d71a29a0f5daa67a947c06289", "source_kind": "code"}, "shape_signature": "shape_f485c8c2e2d73fa8", "motif_signature": "motif_exact_79fe8d1097f2", "motif_coarse_signature": "motif_coarse_9f0831ec4b22", "features": {"controls": [], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 2}}write_review_htmlwrite_review_html{"id": "fn_62db039b1c3ef908", "type": "function", "label": "write_review_html", "path": "product_ui.py", "module": "product_ui", "symbol": "write_review_html", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_72d1a795add66c9d6180c4e2", "fragment_source_hash": "f28161193adcb158d4b4288c4ddfa348e7e59fa57653fc7df84dc723d9a60aae", "fragment_context_fingerprint": "ctx_0f1e0d5edfbe2164002a900a", "evidence": {"path": "product_ui.py", "line": 182, "end_line": 214, "source_hash": "f28161193adcb158d4b4288c4ddfa348e7e59fa57653fc7df84dc723d9a60aae", "source_kind": "code"}, "shape_signature": "shape_35e5383c4c181228", "motif_signature": "motif_exact_c97325fddfff", "motif_coarse_signature": "motif_coarse_3a2eb66bf0ac", "features": {"controls": [], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 19, "boundary_calls": 30}}report.pyreport.py{"id": "file_6c3a8c8711a03dc2", "type": "file", "label": "report.py", "path": "report.py", "module": "report", "status": "observed", "confidence": 1.0, "evidence": {"path": "report.py", "line": 1, "end_line": 203, "source_hash": "7bd6d522e41bb159bfed7844ea1237dea2398a099279b7c563006fee185d4cfe", "source_kind": "code"}}_esc_esc{"id": "fn_9e9aa1e31a433ce0", "type": "function", "label": "_esc", "path": "report.py", "module": "report", "symbol": "_esc", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_524bb0e94ef1022f5f6deebb", "fragment_source_hash": "02c9cef1836d1869c4a785d4bf54c212e2b159bdb74f94a62ac5cbcee8e8c41d", "fragment_context_fingerprint": "ctx_956f74a5b8c5b91ec0554d18", "evidence": {"path": "report.py", "line": 14, "end_line": 15, "source_hash": "02c9cef1836d1869c4a785d4bf54c212e2b159bdb74f94a62ac5cbcee8e8c41d", "source_kind": "code"}, "shape_signature": "shape_9c2e7fb37a4edec6", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}_severity_rank_severity_rank{"id": "fn_65eccd4478144b16", "type": "function", "label": "_severity_rank", "path": "report.py", "module": "report", "symbol": "_severity_rank", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_4f855ba42f9772214445b1a8", "fragment_source_hash": "93898a9e77a85ae662e99a9260ea4f04463747866cae7e9c3765fef01a649557", "fragment_context_fingerprint": "ctx_956f74a5b8c5b91ec0554d18", "evidence": {"path": "report.py", "line": 18, "end_line": 19, "source_hash": "93898a9e77a85ae662e99a9260ea4f04463747866cae7e9c3765fef01a649557", "source_kind": "code"}, "shape_signature": "shape_9e7064b569f549be", "motif_signature": "motif_exact_44528bd13829", "motif_coarse_signature": "motif_coarse_b2feb91af8fa", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 1}}write_json_outputswrite_json_outputs{"id": "fn_e7e7e8f46867d048", "type": "function", "label": "write_json_outputs", "path": "report.py", "module": "report", "symbol": "write_json_outputs", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_84adcd430cdcc478f6969da7", "fragment_source_hash": "41b8bd88daa13dbad1f0dc0195d575bd179c343af812d21000acbecdc829e6c1", "fragment_context_fingerprint": "ctx_956f74a5b8c5b91ec0554d18", "evidence": {"path": "report.py", "line": 22, "end_line": 50, "source_hash": "41b8bd88daa13dbad1f0dc0195d575bd179c343af812d21000acbecdc829e6c1", "source_kind": "code"}, "shape_signature": "shape_7bfb88b68126629f", "motif_signature": "motif_exact_c9169936bb33", "motif_coarse_signature": "motif_coarse_89f822006874", "features": {"controls": [], "effects": ["file_io", "file_io", "file_io", "file_io", "file_io", "file_io", "file_io", "file_io", "file_io", "file_io", "file_io"], "state_reads": 12, "state_writes": 0, "state_read_targets": ["param:graph[]"], "state_write_targets": [], "local_calls": 2, "boundary_calls": 22}}write_graphmlwrite_graphml{"id": "fn_859baa31c0faefa5", "type": "function", "label": "write_graphml", "path": "report.py", "module": "report", "symbol": "write_graphml", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_899a1d39374f46e14095c67e", "fragment_source_hash": "89d2e55b3f88911439102b8587a257f39e2a9840aeefbf956567d594533ae86e", "fragment_context_fingerprint": "ctx_956f74a5b8c5b91ec0554d18", "evidence": {"path": "report.py", "line": 53, "end_line": 69, "source_hash": "89d2e55b3f88911439102b8587a257f39e2a9840aeefbf956567d594533ae86e", "source_kind": "code"}, "shape_signature": "shape_1ff0b374a05b8da4", "motif_signature": "motif_exact_1ddbd37b7a2a", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["for_loop", "for_loop", "branch", "for_loop", "for_loop", "branch"], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["param:graph[]"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 18}}_overview_graph_overview_graph{"id": "fn_4dbfe7a233bf4511", "type": "function", "label": "_overview_graph", "path": "report.py", "module": "report", "symbol": "_overview_graph", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_caa3b23438de8287313c5500", "fragment_source_hash": "1449a136a147a4aad4002ab3e5d9099ab3ff27e3e16cb9b6522e7b0266019ff6", "fragment_context_fingerprint": "ctx_956f74a5b8c5b91ec0554d18", "evidence": {"path": "report.py", "line": 72, "end_line": 90, "source_hash": "1449a136a147a4aad4002ab3e5d9099ab3ff27e3e16cb9b6522e7b0266019ff6", "source_kind": "code"}, "shape_signature": "shape_d54ae3a749c72161", "motif_signature": "motif_exact_733a8dcd3131", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["for_loop", "for_loop", "branch", "branch"], "effects": [], "state_reads": 2, "state_writes": 0, "state_read_targets": ["param:graph[]"], "state_write_targets": [], "local_calls": 0, "boundary_calls": 16}}_svg_graph_svg_graph{"id": "fn_895ef77469367bb9", "type": "function", "label": "_svg_graph", "path": "report.py", "module": "report", "symbol": "_svg_graph", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_14f81851111b458216cffffa", "fragment_source_hash": "23e6af281442acc05d263ee14cd1f7054e11678264a4b984a614a8d1b562b194", "fragment_context_fingerprint": "ctx_956f74a5b8c5b91ec0554d18", "evidence": {"path": "report.py", "line": 93, "end_line": 118, "source_hash": "23e6af281442acc05d263ee14cd1f7054e11678264a4b984a614a8d1b562b194", "source_kind": "code"}, "shape_signature": "shape_ceca36aeb44c6143", "motif_signature": "motif_exact_1d77b191bf6f", "motif_coarse_signature": "motif_coarse_6498af11de89", "features": {"controls": ["branch", "for_loop", "for_loop"], "effects": [], "state_reads": 1, "state_writes": 0, "state_read_targets": ["param:graph[]"], "state_write_targets": [], "local_calls": 6, "boundary_calls": 24}}write_htmlwrite_html{"id": "fn_5d3eea2d2415a0c0", "type": "function", "label": "write_html", "path": "report.py", "module": "report", "symbol": "write_html", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_f4e40fd3a99093ec13e0cd5a", "fragment_source_hash": "6758b29417a7dfac806e31acec5cf8a9a0e3e68abf79a11338ba4e10ef23239a", "fragment_context_fingerprint": "ctx_956f74a5b8c5b91ec0554d18", "evidence": {"path": "report.py", "line": 121, "end_line": 180, "source_hash": "6758b29417a7dfac806e31acec5cf8a9a0e3e68abf79a11338ba4e10ef23239a", "source_kind": "code"}, "shape_signature": "shape_95024efafab7acac", "motif_signature": "motif_exact_f83043590daa", "motif_coarse_signature": "motif_coarse_10d26391059d", "features": {"controls": ["for_loop"], "effects": ["file_io"], "state_reads": 12, "state_writes": 0, "state_read_targets": ["param:graph[]"], "state_write_targets": [], "local_calls": 58, "boundary_calls": 91}}write_markdown_reportwrite_markdown_report{"id": "fn_1dd6ea3c5423177f", "type": "function", "label": "write_markdown_report", "path": "report.py", "module": "report", "symbol": "write_markdown_report", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_7f92a2130079cbc0c8fefbbd", "fragment_source_hash": "1d12cb1c13da110225aab80ab9b51bc731dba39a53a370637af975a473e5ef65", "fragment_context_fingerprint": "ctx_956f74a5b8c5b91ec0554d18", "evidence": {"path": "report.py", "line": 183, "end_line": 203, "source_hash": "1d12cb1c13da110225aab80ab9b51bc731dba39a53a370637af975a473e5ef65", "source_kind": "code"}, "shape_signature": "shape_9bf0741fd3b327a3", "motif_signature": "motif_exact_b2bb7ee732a4", "motif_coarse_signature": "motif_coarse_e91e601119a1", "features": {"controls": ["for_loop", "for_loop", "for_loop"], "effects": ["file_io"], "state_reads": 3, "state_writes": 0, "state_read_targets": ["param:graph[]"], "state_write_targets": [], "local_calls": 3, "boundary_calls": 36}}semantic_diff.pysemantic_diff.py{"id": "file_7e26d374bb3b82d0", "type": "file", "label": "semantic_diff.py", "path": "semantic_diff.py", "module": "semantic_diff", "status": "observed", "confidence": 1.0, "evidence": {"path": "semantic_diff.py", "line": 1, "end_line": 371, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "source_kind": "code"}}_node_key_node_key{"id": "fn_10b6d6ac48b6691d", "type": "function", "label": "_node_key", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_node_key", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_bb702a18b7c42054d25658fb", "fragment_source_hash": "f30aea9da95816d7a289db5a9fc1cc34ad036e07184e0b5ae8ff40f8cecc53cf", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 14, "end_line": 25, "source_hash": "f30aea9da95816d7a289db5a9fc1cc34ad036e07184e0b5ae8ff40f8cecc53cf", "source_kind": "code"}, "shape_signature": "shape_7cff3627484adbb9", "motif_signature": "motif_exact_1baace546e93", "motif_coarse_signature": "motif_coarse_b4a27ad8a6cb", "features": {"controls": ["branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 14}}_node_public_node_public{"id": "fn_0fe16aeadeca61d7", "type": "function", "label": "_node_public", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_node_public", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_5e4a50793e10996c3285994c", "fragment_source_hash": "bb17b3a4cc6ebff6a114cbff2563a279b1ed9fbe4708b5335e7802e34a49977c", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 28, "end_line": 33, "source_hash": "bb17b3a4cc6ebff6a114cbff2563a279b1ed9fbe4708b5335e7802e34a49977c", "source_kind": "code"}, "shape_signature": "shape_ca74ef56b0b8f0ec", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}_evidence_evidence{"id": "fn_a8c08bef5917b780", "type": "function", "label": "_evidence", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_evidence", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_3b9eec84800dd5bad3318d98", "fragment_source_hash": "439f54672948165954f6f5b73aba07821c0c163fb017a6e4d1d4ccc11af225c3", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 36, "end_line": 41, "source_hash": "439f54672948165954f6f5b73aba07821c0c163fb017a6e4d1d4ccc11af225c3", "source_kind": "code"}, "shape_signature": "shape_4a983a359dbcc3a9", "motif_signature": "motif_exact_900aa8012fb9", "motif_coarse_signature": "motif_coarse_69581341d26f", "features": {"controls": ["branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 3}}_relation_key_relation_key{"id": "fn_2ea64accad7a49c6", "type": "function", "label": "_relation_key", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_relation_key", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_43c8f4df4d1142fe84da4bb1", "fragment_source_hash": "8130d1a06cda823d83be247c979cbf97e8baba60223d2f8d4b5dda00781d0895", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 44, "end_line": 52, "source_hash": "8130d1a06cda823d83be247c979cbf97e8baba60223d2f8d4b5dda00781d0895", "source_kind": "code"}, "shape_signature": "shape_d4b3342125896b50", "motif_signature": "motif_exact_b2a4e472232a", "motif_coarse_signature": "motif_coarse_ce08f8f7d524", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 10}}_relation_public_relation_public{"id": "fn_fdec6bda452ae569", "type": "function", "label": "_relation_public", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_relation_public", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d4d81bb44fa2e957f01ad119", "fragment_source_hash": "554364e56b883a081c3c84727d4e0f46f8946d8522979b7a4bca548fe63052b1", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 55, "end_line": 67, "source_hash": "554364e56b883a081c3c84727d4e0f46f8946d8522979b7a4bca548fe63052b1", "source_kind": "code"}, "shape_signature": "shape_81d02bcf00b86c38", "motif_signature": "motif_exact_cdf89c3ae51d", "motif_coarse_signature": "motif_coarse_ce08f8f7d524", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 3, "boundary_calls": 13}}_motif_key_motif_key{"id": "fn_71a55eda96bf2459", "type": "function", "label": "_motif_key", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_motif_key", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_d8f79a7b36855c4c115438c4", "fragment_source_hash": "fcdedbaae2927768713da7164d56a965f9b93562446e4e989809097f7cba3551", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 70, "end_line": 71, "source_hash": "fcdedbaae2927768713da7164d56a965f9b93562446e4e989809097f7cba3551", "source_kind": "code"}, "shape_signature": "shape_4a0b9f0c349a61e5", "motif_signature": "motif_exact_14276d5ee579", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 6}}_finding_key_finding_key{"id": "fn_b0dcec742180b2f4", "type": "function", "label": "_finding_key", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_finding_key", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_316843ad9c8c09c83fa963f1", "fragment_source_hash": "df239aaa9aa408e2eb65020b4a68fe3fa5cc480140223bd55fbf3958ebda1444", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 74, "end_line": 83, "source_hash": "df239aaa9aa408e2eb65020b4a68fe3fa5cc480140223bd55fbf3958ebda1444", "source_kind": "code"}, "shape_signature": "shape_e50b3217acbbbbcc", "motif_signature": "motif_exact_36f22c45eaad", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 15}}_file_map_file_map{"id": "fn_7cc83aa726d540c6", "type": "function", "label": "_file_map", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_file_map", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_3f5a6e849b94830637778d40", "fragment_source_hash": "62a28fb528ab7684cb950da84e45286aceab0f7ac5f7e6ca065e8eb96e777ec7", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 86, "end_line": 87, "source_hash": "62a28fb528ab7684cb950da84e45286aceab0f7ac5f7e6ca065e8eb96e777ec7", "source_kind": "code"}, "shape_signature": "shape_523e762f19299f56", "motif_signature": "motif_exact_493e8810c279", "motif_coarse_signature": "motif_coarse_e3a6d82c57d0", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 2}}_entity_map_entity_map{"id": "fn_de742a64f621fa99", "type": "function", "label": "_entity_map", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_entity_map", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_421361b0fb28f8a78a545198", "fragment_source_hash": "baeb122be05c31a0a964da22c726733cacb0128f1c8a848db1e0cbfc4e4b58b1", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 90, "end_line": 91, "source_hash": "baeb122be05c31a0a964da22c726733cacb0128f1c8a848db1e0cbfc4e4b58b1", "source_kind": "code"}, "shape_signature": "shape_129a670b0cd4a247", "motif_signature": "motif_exact_d96d6867ecd2", "motif_coarse_signature": "motif_coarse_125fe4728a6b", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 2}}_relation_map_relation_map{"id": "fn_20c0fc0a9aa8e7f1", "type": "function", "label": "_relation_map", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_relation_map", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_7a508a269e5a6ecc72a8a05f", "fragment_source_hash": "309f57a7cadfc7670c0fd8effb26eb2e07af444ee4ac77c47bc3c8e65d536b7f", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 94, "end_line": 103, "source_hash": "309f57a7cadfc7670c0fd8effb26eb2e07af444ee4ac77c47bc3c8e65d536b7f", "source_kind": "code"}, "shape_signature": "shape_927aa635edf56be6", "motif_signature": "motif_exact_53361cad1962", "motif_coarse_signature": "motif_coarse_662d65d73597", "features": {"controls": ["for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 4}}_exception_signatures_exception_signatures{"id": "fn_b2824a86e0ed6a67", "type": "function", "label": "_exception_signatures", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_exception_signatures", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_f7b8cd439eae5c4061335ba8", "fragment_source_hash": "1118cfa05c60b250d6d6acd9eb9a58432fef482582e59d0389921954e081de8c", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 106, "end_line": 136, "source_hash": "1118cfa05c60b250d6d6acd9eb9a58432fef482582e59d0389921954e081de8c", "source_kind": "code"}, "shape_signature": "shape_d340ad9bdb856c6b", "motif_signature": "motif_exact_2353d159b724", "motif_coarse_signature": "motif_coarse_6498af11de89", "features": {"controls": ["for_loop", "branch", "for_loop", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 9, "boundary_calls": 48}}_impact_breadth_impact_breadth{"id": "fn_d8e7d17ff0f00550", "type": "function", "label": "_impact_breadth", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_impact_breadth", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_396772659deaa3de30b79e8d", "fragment_source_hash": "88defb41e438ebb6448c7c116500abbe75901be088a9f507f1d12682e0b8c0e6", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 139, "end_line": 140, "source_hash": "88defb41e438ebb6448c7c116500abbe75901be088a9f507f1d12682e0b8c0e6", "source_kind": "code"}, "shape_signature": "shape_ecdbbc37a1258ea3", "motif_signature": "motif_exact_5a84b5644fc0", "motif_coarse_signature": "motif_coarse_ff49519e01f1", "features": {"controls": [], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 0, "boundary_calls": 12}}_impact_changes_impact_changes{"id": "fn_a54f3f444d673c0a", "type": "function", "label": "_impact_changes", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_impact_changes", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_045db0e90bff01c73cd59580", "fragment_source_hash": "582c34c6886a39a549585849cc22bf825f7a8cae93ebc642392806beebcaa7e6", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 143, "end_line": 179, "source_hash": "582c34c6886a39a549585849cc22bf825f7a8cae93ebc642392806beebcaa7e6", "source_kind": "code"}, "shape_signature": "shape_da395a956c7dbd73", "motif_signature": "motif_exact_51decb4eebb7", "motif_coarse_signature": "motif_coarse_23ceaa9c63ae", "features": {"controls": ["for_loop", "try", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 6, "boundary_calls": 30}}_rename_candidates_rename_candidates{"id": "fn_919d1ec4c6b0bb78", "type": "function", "label": "_rename_candidates", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "_rename_candidates", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_efe7a11d41fabce6b25ba1c8", "fragment_source_hash": "fd8f17fb15c2b71d22c80d44b239280274473609d962994ae3e2cae8194e04d3", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 182, "end_line": 205, "source_hash": "fd8f17fb15c2b71d22c80d44b239280274473609d962994ae3e2cae8194e04d3", "source_kind": "code"}, "shape_signature": "shape_9e3d49da42904763", "motif_signature": "motif_exact_4123af03975f", "motif_coarse_signature": "motif_coarse_1d063c7b37b2", "features": {"controls": ["for_loop", "branch", "for_loop", "branch", "for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 2, "boundary_calls": 16}}compare_graphscompare_graphs{"id": "fn_ab4e8bb23d3c3aa7", "type": "function", "label": "compare_graphs", "path": "semantic_diff.py", "module": "semantic_diff", "symbol": "compare_graphs", "async": false, "status": "observed", "confidence": 1.0, "fragment_fingerprint": "frag_6505e03f8d87b18d9c19ab58", "fragment_source_hash": "466dc072300a5dc1c56605397ebae4ef105702e101a50e3165c267441878b572", "fragment_context_fingerprint": "ctx_8a43beb736f84d74f518c804", "evidence": {"path": "semantic_diff.py", "line": 208, "end_line": 371, "source_hash": "466dc072300a5dc1c56605397ebae4ef105702e101a50e3165c267441878b572", "source_kind": "code"}, "shape_signature": "shape_5c7d58dbc235524e", "motif_signature": "motif_exact_1c8c3ea8873f", "motif_coarse_signature": "motif_coarse_6498af11de89", "features": {"controls": ["for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "branch", "for_loop", "for_loop", "branch", "for_loop", "branch", "branch", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 18, "boundary_calls": 209}}

Node evidence

Click a node.

SSA-like data flow

Local data footprint feeds Impact Engine but is not transitive across function boundaries.

RelationSourceTargetEvidenceStatus
flows_tocallee#0low#1analyzer.py:32observed
flows_tolow#1tail#1analyzer.py:33observed
guardstail#1branchanalyzer.py:34observed
guardslow#1branchanalyzer.py:36observed
guardstail#1branchanalyzer.py:36observed
guardslow#1branchanalyzer.py:38observed
guardstail#1branchanalyzer.py:38observed
guardslow#1branchanalyzer.py:40observed
guardstail#1branchanalyzer.py:40observed
guardslow#1branchanalyzer.py:42observed
guardslow#1branchanalyzer.py:44observed
guardstail#1branchanalyzer.py:44observed
flows_toparts#0raw#1analyzer.py:60observed
returns_valueprefix#0return@61analyzer.py:61observed
returns_valueraw#1return@61analyzer.py:61observed
returns_valuetext#0return@65analyzer.py:65observed
flows_topath#0rel#1analyzer.py:69observed
flows_toroot#0rel#1analyzer.py:69observed
flows_torel#1parts#1analyzer.py:70observed
guardsparts#1branchanalyzer.py:71observed
flows_toparts#1parts#2analyzer.py:72observed
phi_inputparts#2parts#3analyzer.py:71strongly_inferred
phi_inputparts#1parts#3analyzer.py:71strongly_inferred
returns_valueparts#3return@73analyzer.py:73observed
guardsn#0branchanalyzer.py:77observed
returns_valuen#0return@78analyzer.py:78observed
guardsn#0branchanalyzer.py:79observed
flows_ton#0base#1analyzer.py:80observed
returns_valuebase#1return@81analyzer.py:81observed
returns_valuen#0return@81analyzer.py:81observed
guardsn#0branchanalyzer.py:82observed
returns_valuen#0return@83analyzer.py:83observed
guardsn#0branchanalyzer.py:84observed
returns_valuen#0return@85analyzer.py:85observed
returns_valuen#0return@86analyzer.py:86observed
guardslevel#0branchanalyzer.py:91observed
returns_valuemodule#0return@92analyzer.py:92observed
flows_tocurrent_module#0pkg#1analyzer.py:94observed
flows_tolevel#0remove#1analyzer.py:95observed
guardsremove#1branchanalyzer.py:96observed
flows_toremove#1pkg#2analyzer.py:97observed
flows_topkg#1pkg#2analyzer.py:97observed
phi_inputpkg#1pkg#3analyzer.py:96strongly_inferred
phi_inputpkg#2pkg#3analyzer.py:96strongly_inferred
guardsmodule#0branchanalyzer.py:98observed
flows_topkg#3expr@99analyzer.py:99observed
flows_tomodule#0expr@99analyzer.py:99observed
returns_valuepkg#3return@100analyzer.py:100observed
guardsroot#0for_loopanalyzer.py:105observed
flows_toroot#0p#1analyzer.py:105observed
guardsp#1branchanalyzer.py:106observed
guardsroot#0branchanalyzer.py:106observed
flows_top#1size#1analyzer.py:109observed
guardssize#1branchanalyzer.py:112observed
guardsmax_bytes#0branchanalyzer.py:112observed
flows_top#1expr@113analyzer.py:113observed
flows_tosize#1expr@113analyzer.py:113observed
flows_tocount#1count#2analyzer.py:115observed
guardscount#2branchanalyzer.py:116observed
guardsmax_files#0branchanalyzer.py:116observed
flows_top#1expr@117analyzer.py:117observed
flows_top#1expr@119analyzer.py:119observed
phi_inputcount#1count#3analyzer.py:105strongly_inferred
phi_inputcount#2count#3analyzer.py:105strongly_inferred
phi_inputp#1p#2analyzer.py:105strongly_inferred
phi_inputp:undefinedp#2analyzer.py:105unresolved
phi_inputsize#1size#2analyzer.py:105strongly_inferred
phi_inputsize:undefinedsize#2analyzer.py:105unresolved
flows_toself#0expr@134analyzer.py:134observed
flows_tokind#0expr@134analyzer.py:134observed
flows_ton#0expr@134analyzer.py:134observed
flows_toself#0expr@135analyzer.py:135observed
flows_ton#0expr@135analyzer.py:135observed
flows_toself#0expr@137analyzer.py:137observed
flows_ton#0expr@137analyzer.py:137observed
flows_toself#0expr@138analyzer.py:138observed
flows_ton#0expr@138analyzer.py:138observed
flows_toself#0expr@139analyzer.py:139observed
flows_ton#0expr@139analyzer.py:139observed
flows_toself#0expr@140analyzer.py:140observed
flows_ton#0expr@140analyzer.py:140observed
flows_toself#0expr@141analyzer.py:141observed
flows_ton#0expr@141analyzer.py:141observed
flows_toself#0expr@142analyzer.py:142observed
flows_ton#0expr@142analyzer.py:142observed
flows_toself#0expr@143analyzer.py:143observed
flows_ton#0expr@143analyzer.py:143observed
flows_toself#0expr@146analyzer.py:146observed
flows_ton#0expr@146analyzer.py:146observed
guardsn#0for_loopanalyzer.py:147observed
flows_ton#0h#1analyzer.py:147observed
guardsh#1branchanalyzer.py:148observed
flows_toself#0expr@149analyzer.py:149observed
flows_toh#1expr@149analyzer.py:149observed
guardsh#1branchanalyzer.py:151observed
flows_toself#0expr@152analyzer.py:152observed
flows_toh#1expr@152analyzer.py:152observed
phi_inputh#1h#2analyzer.py:147strongly_inferred
phi_inputh:undefinedh#2analyzer.py:147unresolved
flows_toself#0expr@154analyzer.py:154observed
flows_ton#0expr@154analyzer.py:154observed
flows_ton#0callee#1analyzer.py:157observed
flows_toself#0expr@158analyzer.py:158observed
flows_tocallee#1expr@158analyzer.py:158observed
flows_ton#0expr@158analyzer.py:158observed
flows_tocallee#1effect_type#1analyzer.py:159observed
guardseffect_type#1branchanalyzer.py:160observed
flows_toself#0expr@161analyzer.py:161observed
flows_toeffect_type#1expr@161analyzer.py:161observed
flows_tocallee#1expr@161analyzer.py:161observed
flows_ton#0expr@161analyzer.py:161observed
flows_toself#0expr@162analyzer.py:162observed
flows_ton#0expr@162analyzer.py:162observed
flows_ton#0text#1analyzer.py:165observed
guardsn#0branchanalyzer.py:166observed
flows_toself#0expr@167analyzer.py:167observed
flows_totext#1expr@167analyzer.py:167observed
flows_ton#0expr@167analyzer.py:167observed
flows_toself#0expr@168analyzer.py:168observed
flows_ton#0expr@168analyzer.py:168observed
guardsn#0for_loopanalyzer.py:171observed
flows_ton#0target#1analyzer.py:171observed
guardstarget#1branchanalyzer.py:172observed
flows_toself#0expr@173analyzer.py:173observed
flows_totarget#1expr@173analyzer.py:173observed
flows_ton#0expr@173analyzer.py:173observed
phi_inputtarget#1target#2analyzer.py:171strongly_inferred
phi_inputtarget:undefinedtarget#2analyzer.py:171unresolved
flows_toself#0expr@174analyzer.py:174observed
flows_ton#0expr@174analyzer.py:174observed
guardsn#0branchanalyzer.py:177observed
flows_toself#0expr@178analyzer.py:178observed
flows_ton#0expr@178analyzer.py:178observed
flows_toself#0expr@179analyzer.py:179observed
flows_ton#0expr@179analyzer.py:179observed
guardsn#0branchanalyzer.py:182observed
flows_toself#0expr@183analyzer.py:183observed
flows_ton#0expr@183analyzer.py:183observed
flows_toself#0expr@184analyzer.py:184observed
flows_ton#0expr@184analyzer.py:184observed
guardsstatements#0for_loopanalyzer.py:190observed
flows_tostatements#0st#1analyzer.py:190observed
aliases_at_definitionstatements#0st#1analyzer.py:190observed
guardsterminated#1branchanalyzer.py:191observed
flows_toissues#1expr@192analyzer.py:192observed
flows_tofile_rel#0expr@192analyzer.py:193observed
flows_toowner#0expr@192analyzer.py:194observed
flows_tost#1expr@192analyzer.py:194observed
phi_inputterminated#2terminated#3analyzer.py:191strongly_inferred
phi_inputterminated#1terminated#3analyzer.py:191strongly_inferred
guardsst#1branchanalyzer.py:198observed
phi_inputterminated#4terminated#5analyzer.py:198strongly_inferred
phi_inputterminated#3terminated#5analyzer.py:198strongly_inferred
flows_tost#1child#1analyzer.py:201observed
flows_tochild_name#1child#1analyzer.py:201observed
guardschild#1branchanalyzer.py:202observed
flows_toissues#1expr@203analyzer.py:203observed
flows_tochild#1expr@203analyzer.py:203observed
flows_tofile_rel#0expr@203analyzer.py:203observed
flows_toowner#0expr@203analyzer.py:203observed
phi_inputchild#1child#2analyzer.py:200strongly_inferred
phi_inputchild:undefinedchild#2analyzer.py:200unresolved
phi_inputchild_name#1child_name#2analyzer.py:200strongly_inferred
phi_inputchild_name:undefinedchild_name#2analyzer.py:200unresolved
guardsst#1branchanalyzer.py:204observed
guardsst#1for_loopanalyzer.py:205observed
flows_tost#1h#1analyzer.py:205observed
flows_toissues#1expr@206analyzer.py:206observed
flows_toh#1expr@206analyzer.py:206observed
flows_tofile_rel#0expr@206analyzer.py:206observed
flows_toowner#0expr@206analyzer.py:206observed
phi_inputh#1h#2analyzer.py:205strongly_inferred
phi_inputh:undefinedh#2analyzer.py:205unresolved
phi_inputh#2h#3analyzer.py:204strongly_inferred
phi_inputh:undefinedh#3analyzer.py:204unresolved
phi_inputchild#2child#3analyzer.py:190strongly_inferred
phi_inputchild:undefinedchild#3analyzer.py:190unresolved
phi_inputchild_name#2child_name#3analyzer.py:190strongly_inferred
phi_inputchild_name:undefinedchild_name#3analyzer.py:190unresolved
phi_inputh#3h#4analyzer.py:190strongly_inferred
phi_inputh:undefinedh#4analyzer.py:190unresolved
phi_inputst#1st#2analyzer.py:190strongly_inferred
phi_inputst:undefinedst#2analyzer.py:190unresolved
phi_inputterminated#5terminated#6analyzer.py:190strongly_inferred
phi_inputterminated#1terminated#6analyzer.py:190strongly_inferred
returns_valueissues#1return@207analyzer.py:207observed
flows_tofn#0clone#1analyzer.py:213observed
returns_valuefn#0return@215analyzer.py:215observed
flows_toclone#1all_args#1analyzer.py:217observed
guardsall_args#1for_loopanalyzer.py:218observed
flows_toall_args#1arg#1analyzer.py:218observed
aliases_at_definitionall_args#1arg#1analyzer.py:218observed
phi_inputarg#1arg#2analyzer.py:218strongly_inferred
phi_inputarg:undefinedarg#2analyzer.py:218unresolved
guardsclone#1branchanalyzer.py:220observed
guardsclone#1branchanalyzer.py:222observed
flows_toRename#1clone#2analyzer.py:229observed
flows_toclone#1clone#2analyzer.py:229observed
flows_toclone#2expr@230analyzer.py:230observed
returns_valueclone#2return@231analyzer.py:231observed
flows_tofn#0raw#1analyzer.py:235observed
returns_valueraw#1return@236analyzer.py:236observed
flows_tofn#0raw#1analyzer.py:246observed
returns_valueraw#1return@247analyzer.py:247observed
flows_totext_or_lines#0lines#1analyzer.py:252observed
flows_tofn#0start#1analyzer.py:253observed
flows_tostart#1end#1analyzer.py:254observed
flows_tofn#0end#1analyzer.py:254observed
flows_tolines#1raw#1analyzer.py:255observed
flows_tostart#1raw#1analyzer.py:255observed
flows_toend#1raw#1analyzer.py:255observed
returns_valueraw#1return@256analyzer.py:256observed
flows_toimport_map#0payload#1analyzer.py:261observed
flows_tomodule_globals#0payload#1analyzer.py:262observed
flows_topayload#1raw#1analyzer.py:264observed
returns_valueraw#1return@265analyzer.py:265observed
guardsvalue#0branchanalyzer.py:274observed
returns_valuevalue#0return@275analyzer.py:275observed
flows_tovalue#0out#1analyzer.py:276observed
flows_toout#1ev#1analyzer.py:277observed
guardsev#1branchanalyzer.py:278observed
flows_toev#1ev2#1analyzer.py:279observed
guardsev2#1branchanalyzer.py:280observed
phi_inputev2#1ev2#2analyzer.py:278strongly_inferred
phi_inputev2:undefinedev2#2analyzer.py:278unresolved
guardskey#1branchanalyzer.py:285observed
guardsout#1branchanalyzer.py:285observed
phi_inputkey#1key#2analyzer.py:284strongly_inferred
phi_inputkey:undefinedkey#2analyzer.py:284unresolved
returns_valueout#1return@287analyzer.py:287observed
flows_tobase_graph#0base_nodes#1analyzer.py:292observed
flows_tobase_nodes#1owner_by_key#1analyzer.py:295observed
flows_toowner_by_key#1index#1analyzer.py:300observed
guardsbase_nodes#1for_loopanalyzer.py:303observed
flows_tobase_nodes#1nid#1analyzer.py:303observed
flows_tobase_nodes#1n#1analyzer.py:303observed
guardsn#1branchanalyzer.py:304observed
flows_ton#1path#1analyzer.py:306observed
flows_ton#1symbol#1analyzer.py:306observed
guardspath#1branchanalyzer.py:307observed
guardssymbol#1branchanalyzer.py:307observed
flows_toowner_by_key#1oid#1analyzer.py:308observed
flows_topath#1oid#1analyzer.py:308observed
flows_tosymbol#1oid#1analyzer.py:308observed
guardsoid#1branchanalyzer.py:309observed
flows_toindex#1expr@310analyzer.py:310observed
flows_tooid#1expr@310analyzer.py:310observed
flows_ton#1expr@310analyzer.py:310observed
phi_inputoid#1oid#2analyzer.py:307strongly_inferred
phi_inputoid:undefinedoid#2analyzer.py:307unresolved
phi_inputn#1n#2analyzer.py:303strongly_inferred
phi_inputn:undefinedn#2analyzer.py:303unresolved
phi_inputnid#1nid#2analyzer.py:303strongly_inferred
phi_inputnid:undefinednid#2analyzer.py:303unresolved
phi_inputoid#2oid#3analyzer.py:303strongly_inferred
phi_inputoid:undefinedoid#3analyzer.py:303unresolved
phi_inputpath#1path#2analyzer.py:303strongly_inferred
phi_inputpath:undefinedpath#2analyzer.py:303unresolved
phi_inputsymbol#1symbol#2analyzer.py:303strongly_inferred
phi_inputsymbol:undefinedsymbol#2analyzer.py:303unresolved
flows_toindex#1owner_ids#1analyzer.py:313observed
guardsbase_graph#0for_loopanalyzer.py:314observed
flows_tobase_graph#0edge#1analyzer.py:314observed
flows_toedge#1ev#1analyzer.py:315observed
guardsev#1branchanalyzer.py:316observed
flows_toedge#1src#1analyzer.py:318observed
flows_toedge#1dst#1analyzer.py:318observed
flows_tosrc#1oid#4analyzer.py:319observed
flows_toowner_ids#1oid#4analyzer.py:319observed
flows_tonode_owner#1oid#4analyzer.py:319observed
flows_todst#1oid#4analyzer.py:319observed
guardsoid#4branchanalyzer.py:320observed
guardsdst#1branchanalyzer.py:323observed
guardsoid#4branchanalyzer.py:323observed
guardssrc#1branchanalyzer.py:323observed
guardsowner_ids#1branchanalyzer.py:323observed
guardsnode_owner#1branchanalyzer.py:323observed
flows_toindex#1expr@325analyzer.py:325observed
flows_tooid#4expr@325analyzer.py:325observed
flows_toedge#1expr@325analyzer.py:325observed
guardssrc#1for_loopanalyzer.py:326observed
guardsdst#1for_loopanalyzer.py:326observed
flows_tosrc#1nid#3analyzer.py:326observed
flows_todst#1nid#3analyzer.py:326observed
guardsnid#3branchanalyzer.py:327observed
guardsowner_ids#1branchanalyzer.py:327observed
guardsnode_owner#1branchanalyzer.py:327observed
flows_tobase_nodes#1bn#1analyzer.py:328observed
flows_tonid#3bn#1analyzer.py:328observed
guardsbn#1branchanalyzer.py:329observed
flows_toindex#1expr@330analyzer.py:330observed
flows_tooid#4expr@330analyzer.py:330observed
flows_tonid#3expr@330analyzer.py:330observed
phi_inputbn#1bn#2analyzer.py:327strongly_inferred
phi_inputbn:undefinedbn#2analyzer.py:327unresolved
phi_inputbn#2bn#3analyzer.py:326strongly_inferred
phi_inputbn:undefinedbn#3analyzer.py:326unresolved
phi_inputnid#2nid#4analyzer.py:326strongly_inferred
phi_inputnid#3nid#4analyzer.py:326strongly_inferred
phi_inputbn#3bn#4analyzer.py:314strongly_inferred
phi_inputbn:undefinedbn#4analyzer.py:314unresolved
phi_inputdst#1dst#2analyzer.py:314strongly_inferred
phi_inputdst:undefineddst#2analyzer.py:314unresolved
phi_inputedge#1edge#2analyzer.py:314strongly_inferred
phi_inputedge:undefinededge#2analyzer.py:314unresolved
phi_inputev#1ev#2analyzer.py:314strongly_inferred
phi_inputev:undefinedev#2analyzer.py:314unresolved
phi_inputnid#2nid#5analyzer.py:314strongly_inferred
phi_inputnid#4nid#5analyzer.py:314strongly_inferred
phi_inputoid#4oid#5analyzer.py:314strongly_inferred
phi_inputoid#3oid#5analyzer.py:314strongly_inferred
phi_inputsrc#1src#2analyzer.py:314strongly_inferred
phi_inputsrc:undefinedsrc#2analyzer.py:314unresolved
guardsbase_graph#0for_loopanalyzer.py:332observed
flows_tobase_graph#0finding#1analyzer.py:332observed
guardsfinding#1branchanalyzer.py:333observed
flows_tofinding#1path#3analyzer.py:335observed
flows_tofinding#1symbol#3analyzer.py:335observed
guardspath#3branchanalyzer.py:336observed
guardssymbol#3branchanalyzer.py:336observed
flows_toowner_by_key#1oid#6analyzer.py:337observed
flows_topath#3oid#6analyzer.py:337observed
flows_tosymbol#3oid#6analyzer.py:337observed
guardsoid#6branchanalyzer.py:338observed
flows_toindex#1expr@339analyzer.py:339observed
flows_tooid#6expr@339analyzer.py:339observed
flows_tofinding#1expr@339analyzer.py:339observed
phi_inputoid#5oid#7analyzer.py:336strongly_inferred
phi_inputoid#6oid#7analyzer.py:336strongly_inferred
phi_inputfinding#1finding#2analyzer.py:332strongly_inferred
phi_inputfinding:undefinedfinding#2analyzer.py:332unresolved
phi_inputoid#5oid#8analyzer.py:332strongly_inferred
phi_inputoid#7oid#8analyzer.py:332strongly_inferred
phi_inputpath#2path#4analyzer.py:332strongly_inferred
phi_inputpath#3path#4analyzer.py:332strongly_inferred
phi_inputsymbol#3symbol#4analyzer.py:332strongly_inferred
phi_inputsymbol#2symbol#4analyzer.py:332strongly_inferred
guardsbase_graph#0for_loopanalyzer.py:340observed
flows_tobase_graph#0motif#1analyzer.py:340observed
flows_tomotif#1oid#9analyzer.py:341observed
guardsoid#9branchanalyzer.py:342observed
guardsindex#1branchanalyzer.py:342observed
flows_toindex#1expr@343analyzer.py:343observed
flows_tooid#9expr@343analyzer.py:343observed
flows_tomotif#1expr@343analyzer.py:343observed
phi_inputmotif#1motif#2analyzer.py:340strongly_inferred
phi_inputmotif:undefinedmotif#2analyzer.py:340unresolved
phi_inputoid#9oid#10analyzer.py:340strongly_inferred
phi_inputoid#8oid#10analyzer.py:340strongly_inferred
guardsindex#1for_loopanalyzer.py:344observed
flows_toindex#1oid#11analyzer.py:344observed
flows_toindex#1bucket#1analyzer.py:344observed
phi_inputbucket#1bucket#2analyzer.py:344strongly_inferred
phi_inputbucket:undefinedbucket#2analyzer.py:344unresolved
phi_inputoid#10oid#12analyzer.py:344strongly_inferred
phi_inputoid#11oid#12analyzer.py:344strongly_inferred
returns_valueindex#1return@346analyzer.py:346observed
flows_tofragment_index#0bucket#1analyzer.py:354observed
flows_toowner_id#0bucket#1analyzer.py:354observed
guardsbucket#1for_loopanalyzer.py:362observed
flows_tobucket#1node#1analyzer.py:362observed
flows_tocopied_nodes#1copied_nodes#2analyzer.py:364observed
phi_inputcopied_nodes#1copied_nodes#3analyzer.py:362strongly_inferred
phi_inputcopied_nodes#2copied_nodes#3analyzer.py:362strongly_inferred
phi_inputnode#1node#2analyzer.py:362strongly_inferred
phi_inputnode:undefinednode#2analyzer.py:362unresolved
guardsbucket#1for_loopanalyzer.py:365observed
flows_tobucket#1node#3analyzer.py:365observed
flows_tonode#3nid#1analyzer.py:366observed
guardsnid#1branchanalyzer.py:367observed
guardsnodes#0branchanalyzer.py:367observed
flows_tocopied_nodes#3copied_nodes#4analyzer.py:369observed
phi_inputcopied_nodes#4copied_nodes#5analyzer.py:367strongly_inferred
phi_inputcopied_nodes#3copied_nodes#5analyzer.py:367strongly_inferred
phi_inputcopied_nodes#5copied_nodes#6analyzer.py:365strongly_inferred
phi_inputcopied_nodes#3copied_nodes#6analyzer.py:365strongly_inferred
phi_inputnid#1nid#2analyzer.py:365strongly_inferred
phi_inputnid:undefinednid#2analyzer.py:365unresolved
phi_inputnode#3node#4analyzer.py:365strongly_inferred
phi_inputnode#2node#4analyzer.py:365strongly_inferred
flows_tobucket#1copied_edges#1analyzer.py:370observed
flows_toreuse_fact#1copied_edges#1analyzer.py:370observed
flows_toedges#0expr@371analyzer.py:371observed
flows_tocopied_edges#1expr@371analyzer.py:371observed
flows_tobucket#1copied_findings#1analyzer.py:372observed
flows_toreuse_fact#1copied_findings#1analyzer.py:372observed
flows_tofindings#0expr@373analyzer.py:373observed
flows_tocopied_findings#1expr@373analyzer.py:373observed
flows_tobucket#1copied_motifs#1analyzer.py:374observed
flows_toreuse_fact#1copied_motifs#1analyzer.py:374observed
flows_tomotifs#0expr@375analyzer.py:375observed
flows_tocopied_motifs#1expr@375analyzer.py:375observed
returns_valuecopied_nodes#6return@376analyzer.py:377observed
returns_valuecopied_edges#1return@376analyzer.py:378observed
returns_valuecopied_findings#1return@376analyzer.py:379observed
returns_valuecopied_motifs#1return@376analyzer.py:380observed
flows_tofeature#0payload#1analyzer.py:387observed
flows_tofeature#0payload#1analyzer.py:388observed
flows_tofeature#0payload#1analyzer.py:389observed
flows_tofeature#0payload#1analyzer.py:390observed
flows_tofeature#0payload#1analyzer.py:391observed
flows_tofeature#0payload#1analyzer.py:392observed
flows_topayload#1raw#1analyzer.py:394observed
returns_valueraw#1return@395analyzer.py:395observed
flows_tofeature#0ctr#1analyzer.py:400observed
flows_toctr#1payload#1analyzer.py:402observed
flows_toctr#1payload#1analyzer.py:403observed
flows_toctr#1payload#1analyzer.py:404observed
flows_toctr#1payload#1analyzer.py:405observed
flows_tobucket#1payload#1analyzer.py:406observed
flows_tofeature#0payload#1analyzer.py:406observed
flows_tobucket#1payload#1analyzer.py:407observed
flows_tofeature#0payload#1analyzer.py:407observed
flows_tofeature#0payload#1analyzer.py:408observed
flows_tofeature#0payload#1analyzer.py:409observed
flows_topayload#1raw#1analyzer.py:411observed
returns_valueraw#1return@412analyzer.py:412observed
flows_tofeature#0controls#1analyzer.py:416observed
flows_tofeature#0effects#1analyzer.py:417observed
guardscontrols#1branchanalyzer.py:421observed
flows_toadd#1expr@422analyzer.py:422observed
flows_tofeature#0shared_state#1analyzer.py:423observed
guardsshared_state#1branchanalyzer.py:424observed
flows_toadd#1expr@425analyzer.py:425observed
guardscontrols#1branchanalyzer.py:426observed
flows_toadd#1expr@427analyzer.py:427observed
guardsfeature#0branchanalyzer.py:428observed
flows_toadd#1expr@429analyzer.py:429observed
guardsfeature#0branchanalyzer.py:430observed
flows_toadd#1expr@431analyzer.py:431observed
guardseffects#1branchanalyzer.py:432observed
guardsfeature#0branchanalyzer.py:432observed
flows_toadd#1expr@433analyzer.py:433observed
guardseffects#1branchanalyzer.py:434observed
guardscontrols#1branchanalyzer.py:434observed
flows_toadd#1expr@435analyzer.py:435observed
returns_valuemotifs#1return@436analyzer.py:436observed
flows_toedge#0ev#1analyzer.py:451observed
guardsev#1branchanalyzer.py:452observed
returns_valueev#1return@453analyzer.py:453observed
guardsbase_graph#0for_loopanalyzer.py:465observed
flows_tobase_graph#0node#1analyzer.py:465observed
flows_tonode#1path#1analyzer.py:466observed
guardspath#1branchanalyzer.py:467observed
guardsdirty_paths#0branchanalyzer.py:467observed
phi_inputnode#1node#2analyzer.py:465strongly_inferred
phi_inputnode:undefinednode#2analyzer.py:465unresolved
phi_inputpath#1path#2analyzer.py:465strongly_inferred
phi_inputpath:undefinedpath#2analyzer.py:465unresolved
flows_tobase_graph#0edges#1analyzer.py:471observed
flows_todirty_paths#0edges#1analyzer.py:472observed
flows_tobase_graph#0findings#1analyzer.py:475observed
flows_todirty_paths#0findings#1analyzer.py:477observed
flows_tobase_graph#0motifs#1analyzer.py:479observed
flows_todirty_paths#0motifs#1analyzer.py:479observed
returns_valuenodes#1return@480analyzer.py:480observed
returns_valueedges#1return@480analyzer.py:480observed
returns_valuefindings#1return@480analyzer.py:480observed
returns_valuemotifs#1return@480analyzer.py:480observed
flows_toedges#0referenced#1analyzer.py:484observed
guardsnodes#0for_loopanalyzer.py:488observed
flows_tonodes#0nid#1analyzer.py:488observed
flows_tonodes#0node#1analyzer.py:488observed
guardsnode#1branchanalyzer.py:489observed
guardsremovable#1branchanalyzer.py:489observed
guardsnid#1branchanalyzer.py:489observed
guardsreferenced#1branchanalyzer.py:489observed
flows_tonodes#0expr@490analyzer.py:490observed
flows_tonid#1expr@490analyzer.py:490observed
phi_inputnid#1nid#2analyzer.py:488strongly_inferred
phi_inputnid:undefinednid#2analyzer.py:488unresolved
phi_inputnode#1node#2analyzer.py:488strongly_inferred
phi_inputnode:undefinednode#2analyzer.py:488unresolved
flows_toroot#0root#1analyzer.py:496observed
flows_todirty_paths#0dirty_set#1analyzer.py:497observed
flows_toreuse_graph#0reuse_mode#1analyzer.py:498observed
flows_todirty_set#1reuse_mode#1analyzer.py:498observed
guardsreuse_mode#1branchanalyzer.py:499observed
flows_toreuse_graph#0nodes#1analyzer.py:500observed
flows_todirty_set#1nodes#1analyzer.py:500observed
flows_toreuse_graph#0edges#1analyzer.py:500observed
flows_todirty_set#1edges#1analyzer.py:500observed
flows_toreuse_graph#0findings#1analyzer.py:500observed
flows_todirty_set#1findings#1analyzer.py:500observed
flows_toreuse_graph#0motifs#1analyzer.py:500observed
flows_todirty_set#1motifs#1analyzer.py:500observed
phi_inputedges#1edges#3analyzer.py:499strongly_inferred
phi_inputedges#2edges#3analyzer.py:499strongly_inferred
phi_inputfindings#1findings#3analyzer.py:499strongly_inferred
phi_inputfindings#2findings#3analyzer.py:499strongly_inferred
phi_inputmotifs#1motifs#3analyzer.py:499strongly_inferred
phi_inputmotifs#2motifs#3analyzer.py:499strongly_inferred
phi_inputnodes#1nodes#3analyzer.py:499strongly_inferred
phi_inputnodes#2nodes#3analyzer.py:499strongly_inferred
flows_toreuse_mode#1warnings#1analyzer.py:510observed
flows_toreuse_graph#0warnings#1analyzer.py:508observed
flows_todirty_set#1warnings#1analyzer.py:509observed
flows_toreuse_graph#0base_nodes_by_id#1analyzer.py:511observed
flows_toreuse_mode#1fragment_reuse_index#1analyzer.py:512observed
flows_toreuse_fragments#0fragment_reuse_index#1analyzer.py:512observed
flows_toreuse_graph#0fragment_reuse_index#1analyzer.py:512observed
flows_toreuse_mode#1fragment_cache#1analyzer.py:515observed
flows_toreuse_fragments#0fragment_cache#1analyzer.py:515observed
flows_toreuse_mode#1base_source_files#1analyzer.py:532observed
flows_toreuse_graph#0base_source_files#1analyzer.py:532observed
guardsreuse_mode#1branchanalyzer.py:535observed
guardsnodes#3for_loopanalyzer.py:536observed
flows_tonodes#3nid#1analyzer.py:536observed
flows_tonodes#3n#1analyzer.py:536observed
guardsn#1branchanalyzer.py:537observed
flows_tosimple_defs#1expr@539analyzer.py:539observed
flows_ton#1expr@539analyzer.py:539observed
flows_tonid#1expr@539analyzer.py:539observed
phi_inputn#1n#2analyzer.py:536strongly_inferred
phi_inputn:undefinedn#2analyzer.py:536unresolved
phi_inputnid#1nid#2analyzer.py:536strongly_inferred
phi_inputnid:undefinednid#2analyzer.py:536unresolved
phi_inputn#2n#3analyzer.py:535strongly_inferred
phi_inputn:undefinedn#3analyzer.py:535unresolved
phi_inputnid#2nid#3analyzer.py:535strongly_inferred
phi_inputnid:undefinednid#3analyzer.py:535unresolved
guardsroot#1for_loopanalyzer.py:541observed
guardsmax_files#0for_loopanalyzer.py:541observed
guardsmax_bytes#0for_loopanalyzer.py:541observed
flows_toroot#1path#1analyzer.py:541observed
flows_tomax_files#0path#1analyzer.py:541observed
flows_tomax_bytes#0path#1analyzer.py:541observed
flows_toroot#1skip_reason#1analyzer.py:541observed
flows_tomax_files#0skip_reason#1analyzer.py:541observed
flows_tomax_bytes#0skip_reason#1analyzer.py:541observed
flows_topath#1rel#1analyzer.py:542observed
flows_toroot#1rel#1analyzer.py:542observed
guardsskip_reason#1branchanalyzer.py:543observed
guardsreuse_mode#1branchanalyzer.py:544observed
guardsrel#1branchanalyzer.py:544observed
guardsdirty_set#1branchanalyzer.py:544observed
flows_towarnings#1expr@545analyzer.py:545observed
flows_torel#1expr@545analyzer.py:545observed
flows_toskip_reason#1expr@545analyzer.py:545observed
flows_topath#1text#1analyzer.py:548observed
guardsreuse_mode#1branchanalyzer.py:550observed
guardsrel#1branchanalyzer.py:550observed
guardsdirty_set#1branchanalyzer.py:550observed
flows_towarnings#1expr@551analyzer.py:551observed
flows_torel#1expr@551analyzer.py:551observed
flows_totext#1h#1analyzer.py:553observed
flows_tosource_integrity#1expr@554analyzer.py:554observed
flows_torel#1expr@554analyzer.py:554observed
flows_toh#1expr@554analyzer.py:554observed
flows_totext#1expr@554analyzer.py:554observed
flows_toroot#1mod#1analyzer.py:555observed
flows_topath#1mod#1analyzer.py:555observed
guardsmod#1branchanalyzer.py:556observed
flows_topath#1mod#2analyzer.py:557observed
phi_inputmod#1mod#3analyzer.py:556strongly_inferred
phi_inputmod#2mod#3analyzer.py:556strongly_inferred
guardsreuse_mode#1branchanalyzer.py:562observed
guardsrel#1branchanalyzer.py:562observed
guardsdirty_set#1branchanalyzer.py:562observed
guardsrel#1branchanalyzer.py:563observed
guardsbase_source_files#1branchanalyzer.py:563observed
guardsnodes#3for_loopanalyzer.py:565observed
flows_tonodes#3n#4analyzer.py:565observed
guardsn#4branchanalyzer.py:566observed
guardsrel#1branchanalyzer.py:566observed
flows_ton#4ev#1analyzer.py:567observed
flows_toshapes#1expr@568analyzer.py:568observed
flows_ton#4expr@568analyzer.py:568observed
flows_torel#1expr@568analyzer.py:568observed
flows_toev#1expr@568analyzer.py:568observed
phi_inputev#1ev#2analyzer.py:566strongly_inferred
phi_inputev:undefinedev#2analyzer.py:566unresolved
phi_inputev#2ev#3analyzer.py:565strongly_inferred
phi_inputev:undefinedev#3analyzer.py:565unresolved
phi_inputn#4n#5analyzer.py:565strongly_inferred
phi_inputn#3n#5analyzer.py:565strongly_inferred
phi_inputev#3ev#4analyzer.py:563strongly_inferred
phi_inputev:undefinedev#4analyzer.py:563unresolved
phi_inputn#5n#6analyzer.py:563strongly_inferred
phi_inputn#3n#6analyzer.py:563strongly_inferred
flows_totext#1tree#1analyzer.py:572observed
flows_torel#1tree#1analyzer.py:572observed
flows_tofindings#3expr@574analyzer.py:574observed
flows_torel#1expr@574analyzer.py:574observed
flows_toe#1expr@574analyzer.py:575observed
guardstree#1for_loopanalyzer.py:578observed
flows_totree#1top#1analyzer.py:578observed
guardstop#1branchanalyzer.py:579observed
flows_totop#1targets#1analyzer.py:580observed
guardstargets#1for_loopanalyzer.py:581observed
flows_totargets#1target#1analyzer.py:581observed
aliases_at_definitiontargets#1target#1analyzer.py:581observed
guardstarget#1branchanalyzer.py:582observed
flows_tomodule_globals#1expr@583analyzer.py:583observed
flows_totarget#1expr@583analyzer.py:583observed
guardstarget#1branchanalyzer.py:584observed
guardstarget#1for_loopanalyzer.py:585observed
flows_totarget#1elt#1analyzer.py:585observed
guardselt#1branchanalyzer.py:586observed
flows_tomodule_globals#1expr@587analyzer.py:587observed
flows_toelt#1expr@587analyzer.py:587observed
phi_inputelt#1elt#2analyzer.py:585strongly_inferred
phi_inputelt:undefinedelt#2analyzer.py:585unresolved
phi_inputelt#2elt#3analyzer.py:584strongly_inferred
phi_inputelt:undefinedelt#3analyzer.py:584unresolved
phi_inputelt#3elt#4analyzer.py:582strongly_inferred
phi_inputelt:undefinedelt#4analyzer.py:582unresolved
phi_inputelt#4elt#5analyzer.py:581strongly_inferred
phi_inputelt:undefinedelt#5analyzer.py:581unresolved
phi_inputtarget#1target#2analyzer.py:581strongly_inferred
phi_inputtarget:undefinedtarget#2analyzer.py:581unresolved
phi_inputelt#5elt#6analyzer.py:579strongly_inferred
phi_inputelt:undefinedelt#6analyzer.py:579unresolved
phi_inputtarget#2target#3analyzer.py:579strongly_inferred
phi_inputtarget:undefinedtarget#3analyzer.py:579unresolved
phi_inputtargets#1targets#2analyzer.py:579strongly_inferred
phi_inputtargets:undefinedtargets#2analyzer.py:579unresolved
phi_inputelt#6elt#7analyzer.py:578strongly_inferred
phi_inputelt:undefinedelt#7analyzer.py:578unresolved
phi_inputtarget#3target#4analyzer.py:578strongly_inferred
phi_inputtarget:undefinedtarget#4analyzer.py:578unresolved
phi_inputtargets#2targets#3analyzer.py:578strongly_inferred
phi_inputtargets:undefinedtargets#3analyzer.py:578unresolved
phi_inputtop#1top#2analyzer.py:578strongly_inferred
phi_inputtop:undefinedtop#2analyzer.py:578unresolved
flows_torel#1fid#1analyzer.py:589observed
guardstree#1for_loopanalyzer.py:595observed
flows_totree#1n#7analyzer.py:595observed
guardsn#7branchanalyzer.py:596observed
guardsn#7for_loopanalyzer.py:597observed
flows_ton#7alias#1analyzer.py:597observed
phi_inputalias#1alias#2analyzer.py:597strongly_inferred
phi_inputalias:undefinedalias#2analyzer.py:597unresolved
guardsn#7branchanalyzer.py:599observed
flows_tomod#3target_mod#1analyzer.py:600observed
flows_ton#7target_mod#1analyzer.py:600observed
guardsn#7for_loopanalyzer.py:601observed
flows_ton#7alias#3analyzer.py:601observed
phi_inputalias#3alias#4analyzer.py:601strongly_inferred
phi_inputalias:undefinedalias#4analyzer.py:601unresolved
phi_inputalias#4alias#5analyzer.py:599strongly_inferred
phi_inputalias:undefinedalias#5analyzer.py:599unresolved
phi_inputtarget_mod#1target_mod#2analyzer.py:599strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#2analyzer.py:599unresolved
phi_inputalias#5alias#6analyzer.py:596strongly_inferred
phi_inputalias#2alias#6analyzer.py:596strongly_inferred
phi_inputtarget_mod#2target_mod#3analyzer.py:596strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#3analyzer.py:596unresolved
phi_inputalias#6alias#7analyzer.py:595strongly_inferred
phi_inputalias:undefinedalias#7analyzer.py:595unresolved
phi_inputn#7n#8analyzer.py:595strongly_inferred
phi_inputn#3n#8analyzer.py:595strongly_inferred
phi_inputtarget_mod#3target_mod#4analyzer.py:595strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#4analyzer.py:595unresolved
guardstree#1for_loopanalyzer.py:606observed
flows_totree#1n#9analyzer.py:606observed
guardsn#9branchanalyzer.py:607observed
flows_torel#1sid#1analyzer.py:608observed
flows_ton#9sid#1analyzer.py:608observed
flows_tofiles#1fhash#1analyzer.py:609observed
flows_torel#1fhash#1analyzer.py:609observed
flows_ton#9fhash#1analyzer.py:609observed
flows_tosid#1_fresh#1analyzer.py:610observed
flows_ton#9_fresh#1analyzer.py:610observed
flows_torel#1_fresh#1analyzer.py:610observed
flows_tomod#3_fresh#1analyzer.py:610observed
flows_ton#9_fresh#1analyzer.py:611observed
flows_ton#9_fresh#1analyzer.py:612observed
flows_tofhash#1_fresh#1analyzer.py:613observed
flows_tofiles#1_fresh#1analyzer.py:614observed
flows_torel#1_fresh#1analyzer.py:614observed
flows_torel#1_fresh#1analyzer.py:615observed
flows_ton#9_fresh#1analyzer.py:615observed
flows_tofhash#1_fresh#1analyzer.py:615observed
guardsreuse_mode#1branchanalyzer.py:616observed
guardsrel#1branchanalyzer.py:616observed
guardsdirty_set#1branchanalyzer.py:616observed
guardssid#1branchanalyzer.py:616observed
guardsnodes#3branchanalyzer.py:616observed
flows_tonodes#3expr@617analyzer.py:617observed
flows_tosid#1expr@617analyzer.py:617observed
flows_to_fresh#1expr@617analyzer.py:617observed
flows_tosimple_defs#1expr@620analyzer.py:620observed
flows_ton#9expr@620analyzer.py:620observed
flows_tosid#1expr@620analyzer.py:620observed
flows_toedges#3expr@621analyzer.py:621observed
flows_tofid#1expr@621analyzer.py:621observed
flows_tosid#1expr@621analyzer.py:621observed
flows_torel#1expr@621analyzer.py:623observed
flows_ton#9expr@621analyzer.py:623observed
flows_toh#1expr@621analyzer.py:623observed
flows_ton#9shape_sig#1analyzer.py:624observed
flows_toshapes#1expr@626analyzer.py:626observed
flows_toshape_sig#1expr@626analyzer.py:626observed
flows_torel#1expr@626analyzer.py:626observed
flows_ton#9expr@626analyzer.py:626observed
flows_tofunctions#1expr@627analyzer.py:627observed
flows_tosid#1expr@627analyzer.py:627observed
flows_ton#9expr@627analyzer.py:627observed
flows_torel#1expr@627analyzer.py:627observed
flows_tomod#3expr@627analyzer.py:627observed
flows_tofhash#1expr@627analyzer.py:627observed
guardsn#9branchanalyzer.py:628observed
flows_torel#1cid#1analyzer.py:629observed
flows_ton#9cid#1analyzer.py:629observed
flows_tosimple_defs#1expr@633analyzer.py:633observed
flows_ton#9expr@633analyzer.py:633observed
flows_tocid#1expr@633analyzer.py:633observed
flows_toedges#3expr@634analyzer.py:634observed
flows_tofid#1expr@634analyzer.py:634observed
flows_tocid#1expr@634analyzer.py:634observed
flows_torel#1expr@634analyzer.py:636observed
flows_ton#9expr@634analyzer.py:636observed
flows_toh#1expr@634analyzer.py:636observed
guardsn#9for_loopanalyzer.py:637observed
flows_ton#9item#1analyzer.py:637observed
guardsitem#1branchanalyzer.py:638observed
flows_ton#9qname#1analyzer.py:639observed
flows_toitem#1qname#1analyzer.py:639observed
flows_torel#1mid#1analyzer.py:640observed
flows_toqname#1mid#1analyzer.py:640observed
flows_tofiles#1fhash#2analyzer.py:641observed
flows_torel#1fhash#2analyzer.py:641observed
flows_toitem#1fhash#2analyzer.py:641observed
flows_tomid#1_fresh#2analyzer.py:642observed
flows_toqname#1_fresh#2analyzer.py:642observed
flows_torel#1_fresh#2analyzer.py:642observed
flows_tomod#3_fresh#2analyzer.py:642observed
flows_toqname#1_fresh#2analyzer.py:643observed
flows_toitem#1_fresh#2analyzer.py:643observed
flows_toitem#1_fresh#2analyzer.py:644observed
flows_tofhash#2_fresh#2analyzer.py:645observed
flows_tofiles#1_fresh#2analyzer.py:646observed
flows_torel#1_fresh#2analyzer.py:646observed
flows_torel#1_fresh#2analyzer.py:647observed
flows_toitem#1_fresh#2analyzer.py:647observed
flows_tofhash#2_fresh#2analyzer.py:647observed
guardsreuse_mode#1branchanalyzer.py:648observed
guardsrel#1branchanalyzer.py:648observed
guardsdirty_set#1branchanalyzer.py:648observed
guardsmid#1branchanalyzer.py:648observed
guardsnodes#3branchanalyzer.py:648observed
flows_tonodes#3expr@649analyzer.py:649observed
flows_tomid#1expr@649analyzer.py:649observed
flows_to_fresh#2expr@649analyzer.py:649observed
flows_tosimple_defs#1expr@652analyzer.py:652observed
flows_toitem#1expr@652analyzer.py:652observed
flows_tomid#1expr@652analyzer.py:652observed
flows_toedges#3expr@653analyzer.py:653observed
flows_tocid#1expr@653analyzer.py:653observed
flows_tomid#1expr@653analyzer.py:653observed
flows_torel#1expr@653analyzer.py:655observed
flows_toitem#1expr@653analyzer.py:655observed
flows_toh#1expr@653analyzer.py:655observed
flows_toitem#1shape_sig#2analyzer.py:656observed
flows_toshapes#1expr@658analyzer.py:658observed
flows_toshape_sig#2expr@658analyzer.py:658observed
flows_torel#1expr@658analyzer.py:658observed
flows_toqname#1expr@658analyzer.py:658observed
flows_toitem#1expr@658analyzer.py:658observed
flows_tofunctions#1expr@659analyzer.py:659observed
flows_tomid#1expr@659analyzer.py:659observed
flows_toitem#1expr@659analyzer.py:659observed
flows_toqname#1expr@659analyzer.py:659observed
flows_ton#9expr@659analyzer.py:659observed
flows_torel#1expr@659analyzer.py:659observed
flows_tomod#3expr@659analyzer.py:659observed
flows_tofhash#2expr@659analyzer.py:659observed
phi_input_fresh#2_fresh#3analyzer.py:638strongly_inferred
phi_input_fresh:undefined_fresh#3analyzer.py:638unresolved
phi_inputfhash#2fhash#3analyzer.py:638strongly_inferred
phi_inputfhash:undefinedfhash#3analyzer.py:638unresolved
phi_inputmid#1mid#2analyzer.py:638strongly_inferred
phi_inputmid:undefinedmid#2analyzer.py:638unresolved
phi_inputqname#1qname#2analyzer.py:638strongly_inferred
phi_inputqname:undefinedqname#2analyzer.py:638unresolved
phi_inputshape_sig#2shape_sig#3analyzer.py:638strongly_inferred
phi_inputshape_sig:undefinedshape_sig#3analyzer.py:638unresolved
phi_input_fresh#3_fresh#4analyzer.py:637strongly_inferred
phi_input_fresh:undefined_fresh#4analyzer.py:637unresolved
phi_inputfhash#3fhash#4analyzer.py:637strongly_inferred
phi_inputfhash:undefinedfhash#4analyzer.py:637unresolved
phi_inputitem#1item#2analyzer.py:637strongly_inferred
phi_inputitem:undefineditem#2analyzer.py:637unresolved
phi_inputmid#2mid#3analyzer.py:637strongly_inferred
phi_inputmid:undefinedmid#3analyzer.py:637unresolved
phi_inputqname#2qname#3analyzer.py:637strongly_inferred
phi_inputqname:undefinedqname#3analyzer.py:637unresolved
phi_inputshape_sig#3shape_sig#4analyzer.py:637strongly_inferred
phi_inputshape_sig:undefinedshape_sig#4analyzer.py:637unresolved
phi_input_fresh#4_fresh#5analyzer.py:628strongly_inferred
phi_input_fresh:undefined_fresh#5analyzer.py:628unresolved
phi_inputcid#1cid#2analyzer.py:628strongly_inferred
phi_inputcid:undefinedcid#2analyzer.py:628unresolved
phi_inputfhash#4fhash#5analyzer.py:628strongly_inferred
phi_inputfhash:undefinedfhash#5analyzer.py:628unresolved
phi_inputitem#2item#3analyzer.py:628strongly_inferred
phi_inputitem:undefineditem#3analyzer.py:628unresolved
phi_inputmid#3mid#4analyzer.py:628strongly_inferred
phi_inputmid:undefinedmid#4analyzer.py:628unresolved
phi_inputqname#3qname#4analyzer.py:628strongly_inferred
phi_inputqname:undefinedqname#4analyzer.py:628unresolved
phi_inputshape_sig#4shape_sig#5analyzer.py:628strongly_inferred
phi_inputshape_sig:undefinedshape_sig#5analyzer.py:628unresolved
phi_input_fresh#5_fresh#6analyzer.py:607strongly_inferred
phi_input_fresh#1_fresh#6analyzer.py:607strongly_inferred
phi_inputcid#2cid#3analyzer.py:607strongly_inferred
phi_inputcid:undefinedcid#3analyzer.py:607unresolved
phi_inputfhash#5fhash#6analyzer.py:607strongly_inferred
phi_inputfhash#1fhash#6analyzer.py:607strongly_inferred
phi_inputitem#3item#4analyzer.py:607strongly_inferred
phi_inputitem:undefineditem#4analyzer.py:607unresolved
phi_inputmid#4mid#5analyzer.py:607strongly_inferred
phi_inputmid:undefinedmid#5analyzer.py:607unresolved
phi_inputqname#4qname#5analyzer.py:607strongly_inferred
phi_inputqname:undefinedqname#5analyzer.py:607unresolved
phi_inputshape_sig#5shape_sig#6analyzer.py:607strongly_inferred
phi_inputshape_sig#1shape_sig#6analyzer.py:607strongly_inferred
phi_inputsid#1sid#2analyzer.py:607strongly_inferred
phi_inputsid:undefinedsid#2analyzer.py:607unresolved
phi_input_fresh#6_fresh#7analyzer.py:606strongly_inferred
phi_input_fresh:undefined_fresh#7analyzer.py:606unresolved
phi_inputcid#3cid#4analyzer.py:606strongly_inferred
phi_inputcid:undefinedcid#4analyzer.py:606unresolved
phi_inputfhash#6fhash#7analyzer.py:606strongly_inferred
phi_inputfhash:undefinedfhash#7analyzer.py:606unresolved
phi_inputitem#4item#5analyzer.py:606strongly_inferred
phi_inputitem:undefineditem#5analyzer.py:606unresolved
phi_inputmid#5mid#6analyzer.py:606strongly_inferred
phi_inputmid:undefinedmid#6analyzer.py:606unresolved
phi_inputn#8n#10analyzer.py:606strongly_inferred
phi_inputn#9n#10analyzer.py:606strongly_inferred
phi_inputqname#5qname#6analyzer.py:606strongly_inferred
phi_inputqname:undefinedqname#6analyzer.py:606unresolved
phi_inputshape_sig#6shape_sig#7analyzer.py:606strongly_inferred
phi_inputshape_sig:undefinedshape_sig#7analyzer.py:606unresolved
phi_inputsid#2sid#3analyzer.py:606strongly_inferred
phi_inputsid:undefinedsid#3analyzer.py:606unresolved
phi_input_fresh#7_fresh#8analyzer.py:541strongly_inferred
phi_input_fresh:undefined_fresh#8analyzer.py:541unresolved
phi_inputalias#7alias#8analyzer.py:541strongly_inferred
phi_inputalias:undefinedalias#8analyzer.py:541unresolved
phi_inputcid#4cid#5analyzer.py:541strongly_inferred
phi_inputcid:undefinedcid#5analyzer.py:541unresolved
phi_inputelt#7elt#8analyzer.py:541strongly_inferred
phi_inputelt:undefinedelt#8analyzer.py:541unresolved
phi_inputfhash#7fhash#8analyzer.py:541strongly_inferred
phi_inputfhash:undefinedfhash#8analyzer.py:541unresolved
phi_inputfid#1fid#2analyzer.py:541strongly_inferred
phi_inputfid:undefinedfid#2analyzer.py:541unresolved
phi_inputh#1h#2analyzer.py:541strongly_inferred
phi_inputh:undefinedh#2analyzer.py:541unresolved
phi_inputimport_map#1import_map#2analyzer.py:541strongly_inferred
phi_inputimport_map:undefinedimport_map#2analyzer.py:541unresolved
phi_inputitem#5item#6analyzer.py:541strongly_inferred
phi_inputitem:undefineditem#6analyzer.py:541unresolved
phi_inputmid#6mid#7analyzer.py:541strongly_inferred
phi_inputmid:undefinedmid#7analyzer.py:541unresolved
phi_inputmod#3mod#4analyzer.py:541strongly_inferred
phi_inputmod:undefinedmod#4analyzer.py:541unresolved
phi_inputmodule_globals#1module_globals#2analyzer.py:541strongly_inferred
phi_inputmodule_globals:undefinedmodule_globals#2analyzer.py:541unresolved
phi_inputn#10n#11analyzer.py:541strongly_inferred
phi_inputn#3n#11analyzer.py:541strongly_inferred
phi_inputpath#1path#2analyzer.py:541strongly_inferred
phi_inputpath:undefinedpath#2analyzer.py:541unresolved
phi_inputqname#6qname#7analyzer.py:541strongly_inferred
phi_inputqname:undefinedqname#7analyzer.py:541unresolved
phi_inputrel#1rel#2analyzer.py:541strongly_inferred
phi_inputrel:undefinedrel#2analyzer.py:541unresolved
phi_inputshape_sig#7shape_sig#8analyzer.py:541strongly_inferred
phi_inputshape_sig:undefinedshape_sig#8analyzer.py:541unresolved
phi_inputsid#3sid#4analyzer.py:541strongly_inferred
phi_inputsid:undefinedsid#4analyzer.py:541unresolved
phi_inputskip_reason#1skip_reason#2analyzer.py:541strongly_inferred
phi_inputskip_reason:undefinedskip_reason#2analyzer.py:541unresolved
phi_inputtarget#4target#5analyzer.py:541strongly_inferred
phi_inputtarget:undefinedtarget#5analyzer.py:541unresolved
phi_inputtarget_mod#4target_mod#5analyzer.py:541strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#5analyzer.py:541unresolved
phi_inputtargets#3targets#4analyzer.py:541strongly_inferred
phi_inputtargets:undefinedtargets#4analyzer.py:541unresolved
phi_inputtext#1text#2analyzer.py:541strongly_inferred
phi_inputtext:undefinedtext#2analyzer.py:541unresolved
phi_inputtop#2top#3analyzer.py:541strongly_inferred
phi_inputtop:undefinedtop#3analyzer.py:541unresolved
phi_inputtree#1tree#2analyzer.py:541strongly_inferred
phi_inputtree:undefinedtree#2analyzer.py:541unresolved
guardsfiles#1for_loopanalyzer.py:662observed
flows_tofiles#1rel#3analyzer.py:662observed
flows_tofiles#1meta#1analyzer.py:662observed
guardsreuse_mode#1branchanalyzer.py:663observed
guardsrel#3branchanalyzer.py:663observed
guardsdirty_set#1branchanalyzer.py:663observed
flows_tometa#1mod#5analyzer.py:665observed
flows_torel#3fid#3analyzer.py:665observed
flows_tometa#1h#3analyzer.py:665observed
guardsmeta#1for_loopanalyzer.py:666observed
flows_tometa#1n#12analyzer.py:666observed
guardsn#12branchanalyzer.py:667observed
flows_ton#12targets#5analyzer.py:668observed
guardsn#12branchanalyzer.py:669observed
flows_tomod#5targets#6analyzer.py:670observed
flows_ton#12targets#6analyzer.py:670observed
phi_inputtargets#6targets#7analyzer.py:667strongly_inferred
phi_inputtargets#5targets#7analyzer.py:667strongly_inferred
guardstargets#7for_loopanalyzer.py:673observed
flows_totargets#7target_mod#6analyzer.py:673observed
aliases_at_definitiontargets#7target_mod#6analyzer.py:673observed
flows_totargets#7line#1analyzer.py:673observed
aliases_at_definitiontargets#7line#1analyzer.py:673observed
guardstarget_mod#6branchanalyzer.py:674observed
guardsmodule_to_file#1branchanalyzer.py:674observed
flows_tomodule_to_file#1tid#1analyzer.py:675observed
flows_totarget_mod#6tid#1analyzer.py:675observed
flows_totarget_mod#6tid#2analyzer.py:677observed
flows_tonodes#3expr@678analyzer.py:678observed
flows_totid#2expr@678analyzer.py:678observed
flows_totarget_mod#6expr@678analyzer.py:678observed
phi_inputresolution#1resolution#3analyzer.py:674strongly_inferred
phi_inputresolution#2resolution#3analyzer.py:674strongly_inferred
phi_inputtid#1tid#3analyzer.py:674strongly_inferred
phi_inputtid#2tid#3analyzer.py:674strongly_inferred
flows_toedges#3expr@681analyzer.py:681observed
flows_tofid#3expr@681analyzer.py:681observed
flows_totid#3expr@681analyzer.py:681observed
flows_toline#1expr@681analyzer.py:681observed
flows_toresolution#3expr@681analyzer.py:682observed
flows_toresolution#3expr@681analyzer.py:683observed
flows_torel#3expr@681analyzer.py:684observed
flows_toline#1expr@681analyzer.py:684observed
flows_toh#3expr@681analyzer.py:684observed
phi_inputline#1line#2analyzer.py:673strongly_inferred
phi_inputline:undefinedline#2analyzer.py:673unresolved
phi_inputresolution#3resolution#4analyzer.py:673strongly_inferred
phi_inputresolution:undefinedresolution#4analyzer.py:673unresolved
phi_inputtarget_mod#6target_mod#7analyzer.py:673strongly_inferred
phi_inputtarget_mod#5target_mod#7analyzer.py:673strongly_inferred
phi_inputtid#3tid#4analyzer.py:673strongly_inferred
phi_inputtid:undefinedtid#4analyzer.py:673unresolved
phi_inputline#2line#3analyzer.py:666strongly_inferred
phi_inputline:undefinedline#3analyzer.py:666unresolved
phi_inputn#12n#13analyzer.py:666strongly_inferred
phi_inputn#11n#13analyzer.py:666strongly_inferred
phi_inputresolution#4resolution#5analyzer.py:666strongly_inferred
phi_inputresolution:undefinedresolution#5analyzer.py:666unresolved
phi_inputtarget_mod#5target_mod#8analyzer.py:666strongly_inferred
phi_inputtarget_mod#7target_mod#8analyzer.py:666strongly_inferred
phi_inputtargets#7targets#8analyzer.py:666strongly_inferred
phi_inputtargets#4targets#8analyzer.py:666strongly_inferred
phi_inputtid#4tid#5analyzer.py:666strongly_inferred
phi_inputtid:undefinedtid#5analyzer.py:666unresolved
phi_inputfid#2fid#4analyzer.py:662strongly_inferred
phi_inputfid#3fid#4analyzer.py:662strongly_inferred
phi_inputh#3h#4analyzer.py:662strongly_inferred
phi_inputh#2h#4analyzer.py:662strongly_inferred
phi_inputline#3line#4analyzer.py:662strongly_inferred
phi_inputline:undefinedline#4analyzer.py:662unresolved
phi_inputmeta#1meta#2analyzer.py:662strongly_inferred
phi_inputmeta:undefinedmeta#2analyzer.py:662unresolved
phi_inputmod#5mod#6analyzer.py:662strongly_inferred
phi_inputmod#4mod#6analyzer.py:662strongly_inferred
phi_inputn#11n#14analyzer.py:662strongly_inferred
phi_inputn#13n#14analyzer.py:662strongly_inferred
phi_inputrel#3rel#4analyzer.py:662strongly_inferred
phi_inputrel#2rel#4analyzer.py:662strongly_inferred
phi_inputresolution#5resolution#6analyzer.py:662strongly_inferred
phi_inputresolution:undefinedresolution#6analyzer.py:662unresolved
phi_inputtarget_mod#8target_mod#9analyzer.py:662strongly_inferred
phi_inputtarget_mod#5target_mod#9analyzer.py:662strongly_inferred
phi_inputtargets#8targets#9analyzer.py:662strongly_inferred
phi_inputtargets#4targets#9analyzer.py:662strongly_inferred
phi_inputtid#5tid#6analyzer.py:662strongly_inferred
phi_inputtid:undefinedtid#6analyzer.py:662unresolved
flows_tonodes#3function_features#1analyzer.py:689observed
guardsfunctions#1for_loopanalyzer.py:693observed
flows_tofunctions#1info#1analyzer.py:693observed
aliases_at_definitionfunctions#1info#1analyzer.py:693observed
flows_toinfo#1fn#1analyzer.py:694observed
flows_toinfo#1rel#5analyzer.py:694observed
flows_toinfo#1mod#7analyzer.py:694observed
flows_toinfo#1qname#8analyzer.py:694observed
flows_toinfo#1owner_id#1analyzer.py:694observed
flows_toinfo#1class_name#1analyzer.py:694observed
guardsreuse_mode#1branchanalyzer.py:695observed
guardsrel#5branchanalyzer.py:695observed
guardsdirty_set#1branchanalyzer.py:695observed
flows_toinfo#1h#5analyzer.py:697observed
flows_tofiles#1h#5analyzer.py:697observed
flows_torel#5h#5analyzer.py:697observed
flows_toimports_by_module#1import_map#3analyzer.py:697observed
flows_tomod#7import_map#3analyzer.py:697observed
guardsreuse_mode#1branchanalyzer.py:698observed
guardsrel#5branchanalyzer.py:698observed
guardsdirty_set#1branchanalyzer.py:698observed
guardsreuse_fragments#0branchanalyzer.py:698observed
flows_tobase_nodes_by_id#1base_owner#1analyzer.py:699observed
flows_toowner_id#1base_owner#1analyzer.py:699observed
flows_tonodes#3target_owner#1analyzer.py:700observed
flows_toowner_id#1target_owner#1analyzer.py:700observed
guardsbase_owner#1branchanalyzer.py:701observed
flows_tobase_owner#1base_ev#1analyzer.py:703observed
flows_totarget_owner#1target_ev#1analyzer.py:704observed
guardsbase_owner#1branchanalyzer.py:706observed
guardstarget_owner#1branchanalyzer.py:706observed
guardsbase_owner#1branchanalyzer.py:708observed
guardstarget_owner#1branchanalyzer.py:708observed
guardsbase_ev#1branchanalyzer.py:710observed
guardstarget_ev#1branchanalyzer.py:710observed
phi_inputreason#1reason#5analyzer.py:710strongly_inferred
phi_inputreason#4reason#5analyzer.py:710strongly_inferred
phi_inputreason#5reason#6analyzer.py:708strongly_inferred
phi_inputreason#3reason#6analyzer.py:708strongly_inferred
phi_inputreason#2reason#7analyzer.py:706strongly_inferred
phi_inputreason#6reason#7analyzer.py:706strongly_inferred
guardsreason#7branchanalyzer.py:712observed
flows_tofragment_reuse_index#1counts#1analyzer.py:714observed
flows_toowner_id#1counts#1analyzer.py:714observed
flows_toh#5counts#1analyzer.py:714observed
flows_tonodes#3counts#1analyzer.py:715observed
flows_toedges#3counts#1analyzer.py:715observed
flows_tofindings#3counts#1analyzer.py:715observed
flows_tomotifs#3counts#1analyzer.py:715observed
guardskey#1branchanalyzer.py:719observed
guardsbase_owner#1branchanalyzer.py:719observed
phi_inputkey#1key#2analyzer.py:718strongly_inferred
phi_inputkey:undefinedkey#2analyzer.py:718unresolved
flows_tofragment_cache#1expr@723analyzer.py:723observed
flows_torel#5expr@723analyzer.py:723observed
flows_toqname#8expr@723analyzer.py:723observed
guardscounts#1for_loopanalyzer.py:724observed
flows_tocounts#1key#3analyzer.py:724observed
flows_tocounts#1value#1analyzer.py:724observed
phi_inputkey#2key#4analyzer.py:724strongly_inferred
phi_inputkey#3key#4analyzer.py:724strongly_inferred
phi_inputvalue#1value#2analyzer.py:724strongly_inferred
phi_inputvalue:undefinedvalue#2analyzer.py:724unresolved
phi_inputbase_ev#1base_ev#2analyzer.py:701strongly_inferred
phi_inputbase_ev:undefinedbase_ev#2analyzer.py:701unresolved
phi_inputreason#7reason#8analyzer.py:701strongly_inferred
phi_inputreason:undefinedreason#8analyzer.py:701unresolved
phi_inputtarget_ev#1target_ev#2analyzer.py:701strongly_inferred
phi_inputtarget_ev:undefinedtarget_ev#2analyzer.py:701unresolved
flows_tofragment_cache#1expr@729analyzer.py:729observed
flows_torel#5expr@729analyzer.py:729observed
flows_toqname#8expr@729analyzer.py:729observed
phi_inputbase_ev#2base_ev#3analyzer.py:698strongly_inferred
phi_inputbase_ev:undefinedbase_ev#3analyzer.py:698unresolved
phi_inputbase_owner#1base_owner#2analyzer.py:698strongly_inferred
phi_inputbase_owner:undefinedbase_owner#2analyzer.py:698unresolved
phi_inputreason#8reason#9analyzer.py:698strongly_inferred
phi_inputreason:undefinedreason#9analyzer.py:698unresolved
phi_inputtarget_ev#2target_ev#3analyzer.py:698strongly_inferred
phi_inputtarget_ev:undefinedtarget_ev#3analyzer.py:698unresolved
phi_inputtarget_owner#1target_owner#2analyzer.py:698strongly_inferred
phi_inputtarget_owner:undefinedtarget_owner#2analyzer.py:698unresolved
flows_tofn#1defaults#1analyzer.py:730observed
guardsdefaults#1for_loopanalyzer.py:731observed
flows_todefaults#1d#1analyzer.py:731observed
aliases_at_definitiondefaults#1d#1analyzer.py:731observed
guardsd#1branchanalyzer.py:732observed
flows_tofindings#3expr@733analyzer.py:733observed
flows_torel#5expr@733analyzer.py:733observed
flows_toqname#8expr@733analyzer.py:734observed
flows_tofn#1expr@733analyzer.py:734observed
phi_inputd#1d#2analyzer.py:731strongly_inferred
phi_inputd:undefinedd#2analyzer.py:731unresolved
flows_tofindings#3expr@736analyzer.py:736observed
flows_tofn#1expr@736analyzer.py:736observed
flows_torel#5expr@736analyzer.py:736observed
flows_toqname#8expr@736analyzer.py:736observed
flows_torel#5scan#1analyzer.py:737observed
flows_toqname#8scan#1analyzer.py:737observed
guardsfn#1for_loopanalyzer.py:738observed
flows_tofn#1st#1analyzer.py:738observed
flows_toscan#1expr@739analyzer.py:739observed
flows_tost#1expr@739analyzer.py:739observed
phi_inputst#1st#2analyzer.py:738strongly_inferred
phi_inputst:undefinedst#2analyzer.py:738unresolved
guardsscan#1for_loopanalyzer.py:740observed
flows_toscan#1issue#1analyzer.py:740observed
flows_tofindings#3expr@741analyzer.py:741observed
flows_torel#5expr@741analyzer.py:741observed
flows_toqname#8expr@741analyzer.py:741observed
flows_toissue#1expr@741analyzer.py:741observed
phi_inputissue#1issue#2analyzer.py:740strongly_inferred
phi_inputissue:undefinedissue#2analyzer.py:740unresolved
guardsscan#1for_loopanalyzer.py:744observed
flows_toscan#1ctrl#1analyzer.py:744observed
flows_torel#5cid#6analyzer.py:745observed
flows_toqname#8cid#6analyzer.py:745observed
flows_toctrl#1cid#6analyzer.py:745observed
flows_toedges#3expr@749analyzer.py:749observed
flows_toowner_id#1expr@749analyzer.py:749observed
flows_tocid#6expr@749analyzer.py:749observed
flows_torel#5expr@749analyzer.py:751observed
flows_toctrl#1expr@749analyzer.py:751observed
flows_toh#5expr@749analyzer.py:751observed
flows_tofeature#1expr@752analyzer.py:752observed
flows_toctrl#1expr@752analyzer.py:752observed
phi_inputcid#6cid#7analyzer.py:744strongly_inferred
phi_inputcid#5cid#7analyzer.py:744strongly_inferred
phi_inputctrl#1ctrl#2analyzer.py:744strongly_inferred
phi_inputctrl:undefinedctrl#2analyzer.py:744unresolved
flows_tofn#1closure#1analyzer.py:756observed
flows_torel#5closure#1analyzer.py:756observed
flows_toqname#8closure#1analyzer.py:756observed
flows_toowner_id#1closure#1analyzer.py:756observed
flows_toh#5closure#1analyzer.py:756observed
flows_tomod#7closure#1analyzer.py:756observed
flows_toclass_name#1closure#1analyzer.py:756observed
flows_tofiles#1closure#1analyzer.py:757observed
flows_torel#5closure#1analyzer.py:757observed
guardsclosure#1for_loopanalyzer.py:759observed
flows_toclosure#1n#15analyzer.py:759observed
flows_tonodes#3expr@760analyzer.py:760observed
flows_ton#15expr@760analyzer.py:760observed
phi_inputn#15n#16analyzer.py:759strongly_inferred
phi_inputn#14n#16analyzer.py:759strongly_inferred
flows_toedges#3expr@761analyzer.py:761observed
flows_toclosure#1expr@761analyzer.py:761observed
flows_tofindings#3expr@762analyzer.py:762observed
flows_toclosure#1expr@762analyzer.py:762observed
flows_toclosure#1csum#1analyzer.py:763observed
guardsscan#1for_loopanalyzer.py:771observed
flows_toscan#1ef#1analyzer.py:771observed
flows_toef#1eid#1analyzer.py:772observed
flows_tonodes#3expr@773analyzer.py:773observed
flows_toeid#1expr@773analyzer.py:773observed
flows_toef#1expr@773analyzer.py:773observed
flows_toedges#3expr@774analyzer.py:774observed
flows_toowner_id#1expr@774analyzer.py:774observed
flows_toeid#1expr@774analyzer.py:774observed
flows_toef#1expr@774analyzer.py:774observed
flows_toeid#1expr@774analyzer.py:775observed
flows_toef#1expr@774analyzer.py:775observed
flows_torel#5expr@774analyzer.py:776observed
flows_toef#1expr@774analyzer.py:776observed
flows_toh#5expr@774analyzer.py:776observed
flows_tofeature#1expr@777analyzer.py:777observed
flows_toef#1expr@777analyzer.py:777observed
phi_inputef#1ef#2analyzer.py:771strongly_inferred
phi_inputef:undefinedef#2analyzer.py:771unresolved
phi_inputeid#1eid#2analyzer.py:771strongly_inferred
phi_inputeid:undefinedeid#2analyzer.py:771unresolved
guardsscan#1for_loopanalyzer.py:779observed
flows_toscan#1call#1analyzer.py:779observed
flows_tocall#1callee#1analyzer.py:780observed
guardscallee#1branchanalyzer.py:781observed
guardsmod#7branchanalyzer.py:782observed
guardscallee#1branchanalyzer.py:782observed
guardsdefinitions#1branchanalyzer.py:782observed
flows_todefinitions#1target_id#2analyzer.py:783observed
flows_tomod#7target_id#2analyzer.py:783observed
flows_tocallee#1target_id#2analyzer.py:783observed
guardscallee#1branchanalyzer.py:784observed
guardsimport_map#3branchanalyzer.py:784observed
flows_toimport_map#3im#1analyzer.py:785observed
flows_tocallee#1im#1analyzer.py:785observed
flows_toimport_map#3sym#1analyzer.py:785observed
flows_tocallee#1sym#1analyzer.py:785observed
guardssym#1branchanalyzer.py:786observed
guardsim#1branchanalyzer.py:786observed
guardsdefinitions#1branchanalyzer.py:786observed
flows_todefinitions#1target_id#3analyzer.py:787observed
flows_toim#1target_id#3analyzer.py:787observed
flows_tosym#1target_id#3analyzer.py:787observed
phi_inputresolution#7resolution#10analyzer.py:786strongly_inferred
phi_inputresolution#9resolution#10analyzer.py:786strongly_inferred
phi_inputtarget_id#1target_id#4analyzer.py:786strongly_inferred
phi_inputtarget_id#3target_id#4analyzer.py:786strongly_inferred
phi_inputim#1im#2analyzer.py:784strongly_inferred
phi_inputim:undefinedim#2analyzer.py:784unresolved
phi_inputresolution#7resolution#11analyzer.py:784strongly_inferred
phi_inputresolution#10resolution#11analyzer.py:784strongly_inferred
phi_inputsym#1sym#2analyzer.py:784strongly_inferred
phi_inputsym:undefinedsym#2analyzer.py:784unresolved
phi_inputtarget_id#4target_id#5analyzer.py:784strongly_inferred
phi_inputtarget_id#1target_id#5analyzer.py:784strongly_inferred
phi_inputim#2im#3analyzer.py:782strongly_inferred
phi_inputim:undefinedim#3analyzer.py:782unresolved
phi_inputresolution#8resolution#12analyzer.py:782strongly_inferred
phi_inputresolution#11resolution#12analyzer.py:782strongly_inferred
phi_inputsym#2sym#3analyzer.py:782strongly_inferred
phi_inputsym:undefinedsym#3analyzer.py:782unresolved
phi_inputtarget_id#5target_id#6analyzer.py:782strongly_inferred
phi_inputtarget_id#2target_id#6analyzer.py:782strongly_inferred
flows_tocallee#1head#1analyzer.py:789observed
flows_tocallee#1tail#1analyzer.py:789observed
guardshead#1branchanalyzer.py:790observed
guardsimport_map#3branchanalyzer.py:790observed
flows_toimport_map#3im#4analyzer.py:791observed
flows_tohead#1im#4analyzer.py:791observed
flows_toimport_map#3sym#4analyzer.py:791observed
flows_tohead#1sym#4analyzer.py:791observed
flows_tosym#4candidate#1analyzer.py:792observed
flows_totail#1candidate#1analyzer.py:792observed
guardsim#4branchanalyzer.py:793observed
guardscandidate#1branchanalyzer.py:793observed
guardsdefinitions#1branchanalyzer.py:793observed

State regions

AccessFunctionRegionKindEvidence
reads_stateinfer_effectanalyzer:global:EFFECT_PATTERNS[]module_global_containeranalyzer.py:34
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.file_relobject_fieldanalyzer.py:124
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.ownerobject_fieldanalyzer.py:125
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.callsobject_fieldanalyzer.py:126
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.controlsobject_fieldanalyzer.py:127
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.effectsobject_fieldanalyzer.py:128
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.state_writesobject_fieldanalyzer.py:129
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.state_readsobject_fieldanalyzer.py:130
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.issuesobject_fieldanalyzer.py:131
reads_stateFunctionScanner._controlanalyzer:FunctionScanner:self.controlsobject_fieldanalyzer.py:134
reads_stateFunctionScanner.visit_Tryanalyzer:FunctionScanner:self.controlsobject_fieldanalyzer.py:146
reads_stateFunctionScanner.visit_Tryanalyzer:FunctionScanner:self.issuesobject_fieldanalyzer.py:149
reads_stateFunctionScanner.visit_Tryanalyzer:FunctionScanner:self.issuesobject_fieldanalyzer.py:152
reads_stateFunctionScanner.visit_Callanalyzer:FunctionScanner:self.callsobject_fieldanalyzer.py:158
reads_stateFunctionScanner.visit_Callanalyzer:FunctionScanner:self.effectsobject_fieldanalyzer.py:161
reads_stateFunctionScanner.visit_Attributeanalyzer:FunctionScanner:self.state_readsobject_fieldanalyzer.py:167
reads_stateFunctionScanner.visit_Assignanalyzer:FunctionScanner:self.state_writesobject_fieldanalyzer.py:173
reads_stateFunctionScanner.visit_AnnAssignanalyzer:FunctionScanner:self.state_writesobject_fieldanalyzer.py:178
reads_stateFunctionScanner.visit_AugAssignanalyzer:FunctionScanner:self.state_writesobject_fieldanalyzer.py:183
writes_state_reuse_function_fragmentparam:nodes[]parameter_containeranalyzer.py:363
writes_state_reuse_function_fragmentparam:nodes[]parameter_containeranalyzer.py:368
writes_stateCacheStore.__init__cache:CacheStore:self.rootobject_fieldcache.py:99
writes_stateCacheStore.__init__cache:CacheStore:self.graphsobject_fieldcache.py:100
reads_stateCacheStore.__init__cache:CacheStore:self.rootobject_fieldcache.py:100
writes_stateCacheStore.__init__cache:CacheStore:self.commitsobject_fieldcache.py:101
reads_stateCacheStore.__init__cache:CacheStore:self.rootobject_fieldcache.py:101
writes_stateCacheStore.__init__cache:CacheStore:self.reviewsobject_fieldcache.py:102
reads_stateCacheStore.__init__cache:CacheStore:self.rootobject_fieldcache.py:102
reads_stateCacheStore.graph_pathcache:CacheStore:self.graphsobject_fieldcache.py:105
reads_stateCacheStore.commit_pathcache:CacheStore:self.commitsobject_fieldcache.py:108
reads_stateCacheStore.register_reviewcache:CacheStore:self.reviewsobject_fieldcache.py:139
writes_stateScopeFacts.__init__dataflow:ScopeFacts:self.assignedobject_fielddataflow.py:43
writes_stateScopeFacts.__init__dataflow:ScopeFacts:self.globalsobject_fielddataflow.py:44
writes_stateScopeFacts.__init__dataflow:ScopeFacts:self.nonlocalsobject_fielddataflow.py:45
reads_stateScopeFacts.visit_Globaldataflow:ScopeFacts:self.globalsobject_fielddataflow.py:48
reads_stateScopeFacts.visit_Nonlocaldataflow:ScopeFacts:self.nonlocalsobject_fielddataflow.py:51
reads_stateScopeFacts._store_targetdataflow:ScopeFacts:self.assignedobject_fielddataflow.py:54
reads_stateScopeFacts.visit_ExceptHandlerdataflow:ScopeFacts:self.assignedobject_fielddataflow.py:90
reads_stateScopeFacts.visit_FunctionDefdataflow:ScopeFacts:self.assignedobject_fielddataflow.py:100
reads_stateScopeFacts.visit_ClassDefdataflow:ScopeFacts:self.assignedobject_fielddataflow.py:105
writes_stateLoadNameCollector.__init__dataflow:LoadNameCollector:self.namesobject_fielddataflow.py:124
writes_stateLoadNameCollector.__init__dataflow:LoadNameCollector:self.bound_stackobject_fielddataflow.py:125
reads_stateLoadNameCollector.bounddataflow:LoadNameCollector:self.bound_stackobject_fielddataflow.py:130
reads_stateLoadNameCollector.visit_Namedataflow:LoadNameCollector:self.boundobject_fielddataflow.py:135
reads_stateLoadNameCollector.visit_Namedataflow:LoadNameCollector:self.namesobject_fielddataflow.py:136
reads_stateLoadNameCollector.visit_Lambdadataflow:LoadNameCollector:self.bound_stackobject_fielddataflow.py:146
reads_stateLoadNameCollector.visit_Lambdadataflow:LoadNameCollector:self.bound_stackobject_fielddataflow.py:148
reads_stateLoadNameCollector._visit_compdataflow:LoadNameCollector:self.bound_stackobject_fielddataflow.py:151
reads_stateLoadNameCollector._visit_compdataflow:LoadNameCollector:self.bound_stackobject_fielddataflow.py:159
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self.class_nameobject_fielddataflow.py:221
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self.moduleobject_fielddataflow.py:222
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self.module_globalsobject_fielddataflow.py:223
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self.paramsobject_fielddataflow.py:224
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self.local_namesobject_fielddataflow.py:225
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self.globals_declobject_fielddataflow.py:226
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self.accessesobject_fielddataflow.py:227
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self._seenobject_fielddataflow.py:228
writes_stateStateAccessCollector.__init__dataflow:StateAccessCollector:self._skip_attr_nodesobject_fielddataflow.py:229
reads_stateStateAccessCollector.adddataflow:StateAccessCollector:self._seenobject_fielddataflow.py:233
reads_stateStateAccessCollector.adddataflow:StateAccessCollector:self._seenobject_fielddataflow.py:234
reads_stateStateAccessCollector.adddataflow:StateAccessCollector:self.accessesobject_fielddataflow.py:235
reads_stateStateAccessCollector._field_regiondataflow:StateAccessCollector:self.class_nameobject_fielddataflow.py:243
reads_stateStateAccessCollector._field_regiondataflow:StateAccessCollector:self.moduleobject_fielddataflow.py:244
reads_stateStateAccessCollector._field_regiondataflow:StateAccessCollector:self.class_nameobject_fielddataflow.py:246
reads_stateStateAccessCollector._field_regiondataflow:StateAccessCollector:self.moduleobject_fielddataflow.py:247
reads_stateStateAccessCollector.visit_Calldataflow:StateAccessCollector:self._skip_attr_nodesobject_fielddataflow.py:260
reads_stateStateAccessCollector.visit_Attributedataflow:StateAccessCollector:self._skip_attr_nodesobject_fielddataflow.py:269
reads_stateStateAccessCollector.visit_Subscriptdataflow:StateAccessCollector:self.paramsobject_fielddataflow.py:286
reads_stateStateAccessCollector.visit_Subscriptdataflow:StateAccessCollector:self.module_globalsobject_fielddataflow.py:288
reads_stateStateAccessCollector.visit_Subscriptdataflow:StateAccessCollector:self.globals_declobject_fielddataflow.py:288
reads_stateStateAccessCollector.visit_Subscriptdataflow:StateAccessCollector:self.moduleobject_fielddataflow.py:289
reads_stateStateAccessCollector.visit_Namedataflow:StateAccessCollector:self.globals_declobject_fielddataflow.py:294
reads_stateStateAccessCollector.visit_Namedataflow:StateAccessCollector:self.moduleobject_fielddataflow.py:296
reads_stateStateAccessCollector.visit_Namedataflow:StateAccessCollector:self.module_globalsobject_fielddataflow.py:297
reads_stateStateAccessCollector.visit_Namedataflow:StateAccessCollector:self.local_namesobject_fielddataflow.py:297
reads_stateStateAccessCollector.visit_Namedataflow:StateAccessCollector:self.moduleobject_fielddataflow.py:299
reads_stateStateAccessCollector.visit_AugAssigndataflow:StateAccessCollector:self.globals_declobject_fielddataflow.py:306
reads_stateStateAccessCollector.visit_AugAssigndataflow:StateAccessCollector:self.module_globalsobject_fielddataflow.py:306
reads_stateStateAccessCollector.visit_AugAssigndataflow:StateAccessCollector:self.local_namesobject_fielddataflow.py:306
reads_stateStateAccessCollector.visit_AugAssigndataflow:StateAccessCollector:self.moduleobject_fielddataflow.py:307
reads_stateStateAccessCollector.visit_AugAssigndataflow:StateAccessCollector:self.paramsobject_fielddataflow.py:324
reads_stateStateAccessCollector.visit_AugAssigndataflow:StateAccessCollector:self.module_globalsobject_fielddataflow.py:327
reads_stateStateAccessCollector.visit_AugAssigndataflow:StateAccessCollector:self.globals_declobject_fielddataflow.py:327
reads_stateStateAccessCollector.visit_AugAssigndataflow:StateAccessCollector:self.moduleobject_fielddataflow.py:328
reads_stateblock_definitely_terminatesparam:stmts[]parameter_containerdataflow.py:387
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.fnobject_fielddataflow.py:411
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:412
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:413
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.owner_idobject_fielddataflow.py:414
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.source_hashobject_fielddataflow.py:415
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.moduleobject_fielddataflow.py:416
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.class_nameobject_fielddataflow.py:417
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:418
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.edgesobject_fielddataflow.py:419
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.findingsobject_fielddataflow.py:420
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.versionobject_fielddataflow.py:421
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.paramsobject_fielddataflow.py:422
reads_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.paramsobject_fielddataflow.py:424
reads_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.paramsobject_fielddataflow.py:426
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.globals_declobject_fielddataflow.py:430
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.nonlocals_declobject_fielddataflow.py:431
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.local_namesobject_fielddataflow.py:432
reads_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.paramsobject_fielddataflow.py:432
reads_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.globals_declobject_fielddataflow.py:432
reads_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.nonlocals_declobject_fielddataflow.py:432
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.module_globalsobject_fielddataflow.py:433
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.envobject_fielddataflow.py:434
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.state_accessesobject_fielddataflow.py:435
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.phi_nodesobject_fielddataflow.py:436
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.alias_edgesobject_fielddataflow.py:437
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.explicit_raisesobject_fielddataflow.py:438
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.handlersobject_fielddataflow.py:439
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self.unresolved_local_usesobject_fielddataflow.py:440
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self._undefined_node_by_nameobject_fielddataflow.py:441
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self._handler_nodesobject_fielddataflow.py:442
writes_stateFunctionDataflowBuilder.__init__dataflow:FunctionDataflowBuilder:self._undefined_findings_seenobject_fielddataflow.py:443
reads_stateFunctionDataflowBuilder._evdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:448
reads_stateFunctionDataflowBuilder._evdataflow:FunctionDataflowBuilder:self.source_hashobject_fielddataflow.py:448
reads_stateFunctionDataflowBuilder._add_edgedataflow:FunctionDataflowBuilder:self.edgesobject_fielddataflow.py:451
reads_stateFunctionDataflowBuilder._add_edgedataflow:FunctionDataflowBuilder:self.edgesobject_fielddataflow.py:452
reads_stateFunctionDataflowBuilder._init_paramsdataflow:FunctionDataflowBuilder:self.paramsobject_fielddataflow.py:455
reads_stateFunctionDataflowBuilder._init_paramsdataflow:FunctionDataflowBuilder:self.fnobject_fielddataflow.py:456
writes_stateFunctionDataflowBuilder._init_paramsdataflow:FunctionDataflowBuilder:self.env[]state_containerdataflow.py:457
reads_stateFunctionDataflowBuilder._init_paramsdataflow:FunctionDataflowBuilder:self.envobject_fielddataflow.py:457
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.version[]state_containerdataflow.py:461
writes_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.version[]state_containerdataflow.py:461
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.version[]state_containerdataflow.py:462
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.versionobject_fielddataflow.py:462
writes_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.version[]state_containerdataflow.py:465
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.versionobject_fielddataflow.py:465
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.version[]state_containerdataflow.py:465
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:466
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:466
writes_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.nodes[]state_containerdataflow.py:467
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:467
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:471
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:472
reads_stateFunctionDataflowBuilder._new_valuedataflow:FunctionDataflowBuilder:self.owner_idobject_fielddataflow.py:481
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self._undefined_node_by_nameobject_fielddataflow.py:485
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self._undefined_node_by_name[]state_containerdataflow.py:486
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self._undefined_node_by_nameobject_fielddataflow.py:486
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:487
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:487
writes_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self.nodes[]state_containerdataflow.py:488
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:488
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:492
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:493
writes_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self._undefined_node_by_name[]state_containerdataflow.py:499
reads_stateFunctionDataflowBuilder._undefineddataflow:FunctionDataflowBuilder:self._undefined_node_by_nameobject_fielddataflow.py:499
reads_stateFunctionDataflowBuilder._emit_undefined_findingdataflow:FunctionDataflowBuilder:self._undefined_findings_seenobject_fielddataflow.py:504
reads_stateFunctionDataflowBuilder._emit_undefined_findingdataflow:FunctionDataflowBuilder:self._undefined_findings_seenobject_fielddataflow.py:506
reads_stateFunctionDataflowBuilder._emit_undefined_findingdataflow:FunctionDataflowBuilder:self.findingsobject_fielddataflow.py:507
reads_stateFunctionDataflowBuilder._emit_undefined_findingdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:508
reads_stateFunctionDataflowBuilder._emit_undefined_findingdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:508
reads_stateFunctionDataflowBuilder._record_use_namedataflow:FunctionDataflowBuilder:self.envobject_fielddataflow.py:513
reads_stateFunctionDataflowBuilder._record_use_nameparam:env[]parameter_containerdataflow.py:515
reads_stateFunctionDataflowBuilder._record_use_namedataflow:FunctionDataflowBuilder:self.unresolved_local_usesobject_fielddataflow.py:518
writes_stateFunctionDataflowBuilder._record_use_namedataflow:FunctionDataflowBuilder:self.unresolved_local_usesobject_fielddataflow.py:518
reads_stateFunctionDataflowBuilder._record_use_namedataflow:FunctionDataflowBuilder:self.local_namesobject_fielddataflow.py:525
reads_stateFunctionDataflowBuilder._record_use_namedataflow:FunctionDataflowBuilder:self.globals_declobject_fielddataflow.py:525
reads_stateFunctionDataflowBuilder._record_use_namedataflow:FunctionDataflowBuilder:self.nonlocals_declobject_fielddataflow.py:525
reads_stateFunctionDataflowBuilder._record_use_namedataflow:FunctionDataflowBuilder:self.unresolved_local_usesobject_fielddataflow.py:528
writes_stateFunctionDataflowBuilder._record_use_namedataflow:FunctionDataflowBuilder:self.unresolved_local_usesobject_fielddataflow.py:528
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.class_nameobject_fielddataflow.py:546
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.moduleobject_fielddataflow.py:547
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.module_globalsobject_fielddataflow.py:548
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.paramsobject_fielddataflow.py:549
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.local_namesobject_fielddataflow.py:550
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.globals_declobject_fielddataflow.py:551
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.fnobject_fielddataflow.py:553
writes_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.state_accessesobject_fielddataflow.py:555
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.state_accessesobject_fielddataflow.py:556
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:559
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.owner_idobject_fielddataflow.py:563
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:566
reads_stateFunctionDataflowBuilder._collect_state_accessesdataflow:FunctionDataflowBuilder:self.owner_idobject_fielddataflow.py:575
reads_stateFunctionDataflowBuilder._define_targetdataflow:FunctionDataflowBuilder:self.globals_declobject_fielddataflow.py:580
reads_stateFunctionDataflowBuilder._define_targetdataflow:FunctionDataflowBuilder:self.nonlocals_declobject_fielddataflow.py:580
reads_stateFunctionDataflowBuilder._define_targetparam:env[]parameter_containerdataflow.py:585
reads_stateFunctionDataflowBuilder._define_targetdataflow:FunctionDataflowBuilder:self.alias_edgesobject_fielddataflow.py:586
writes_stateFunctionDataflowBuilder._define_targetdataflow:FunctionDataflowBuilder:self.alias_edgesobject_fielddataflow.py:586
reads_stateFunctionDataflowBuilder._merge_envsdataflow:FunctionDataflowBuilder:self.phi_nodesobject_fielddataflow.py:601
writes_stateFunctionDataflowBuilder._merge_envsdataflow:FunctionDataflowBuilder:self.phi_nodesobject_fielddataflow.py:601
reads_stateFunctionDataflowBuilder._make_sinkdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:611
reads_stateFunctionDataflowBuilder._make_sinkdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:611
writes_stateFunctionDataflowBuilder._make_sinkdataflow:FunctionDataflowBuilder:self.nodes[]state_containerdataflow.py:612
reads_stateFunctionDataflowBuilder._make_sinkdataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:612
reads_stateFunctionDataflowBuilder._make_sinkdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:617
reads_stateFunctionDataflowBuilder._make_sinkdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:618
reads_stateFunctionDataflowBuilder._make_sinkdataflow:FunctionDataflowBuilder:self.owner_idobject_fielddataflow.py:623
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.globals_declobject_fielddataflow.py:648
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.nonlocals_declobject_fielddataflow.py:648
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:665
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:665
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:682
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:682
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:695
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:695
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:707
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:707
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:739
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:739
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:744
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:744
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.local_namesobject_fielddataflow.py:747
writes_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.nodes[]state_containerdataflow.py:748
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:748
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.relobject_fielddataflow.py:748
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.qnameobject_fielddataflow.py:748
reads_stateFunctionDataflowBuilder.process_stmtdataflow:FunctionDataflowBuilder:self.owner_idobject_fielddataflow.py:749
reads_stateFunctionDataflowBuilder._build_exception_flowdataflow:FunctionDataflowBuilder:self.fnobject_fielddataflow.py:835
writes_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.envobject_fielddataflow.py:838
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.fnobject_fielddataflow.py:838
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.envobject_fielddataflow.py:838
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.state_accessesobject_fielddataflow.py:840
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.state_accessesobject_fielddataflow.py:841
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:843
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.edgesobject_fielddataflow.py:844
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.findingsobject_fielddataflow.py:845
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.nodesobject_fielddataflow.py:847
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.phi_nodesobject_fielddataflow.py:848
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.edgesobject_fielddataflow.py:849
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.alias_edgesobject_fielddataflow.py:850
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.state_accessesobject_fielddataflow.py:854
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.handlersobject_fielddataflow.py:856
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.explicit_raisesobject_fielddataflow.py:857
reads_stateFunctionDataflowBuilder.builddataflow:FunctionDataflowBuilder:self.unresolved_local_usesobject_fielddataflow.py:858
reads_statewrite_semantic_diff_markdownparam:diff[]parameter_containerdiff_report.py:18
reads_statewrite_semantic_diff_markdownparam:diff[]parameter_containerdiff_report.py:50
reads_statewrite_semantic_diff_markdownparam:diff[]parameter_containerdiff_report.py:53
reads_statewrite_semantic_diff_htmlparam:diff[]parameter_containerdiff_report.py:70
reads_statewrite_semantic_diff_htmlparam:diff[]parameter_containerdiff_report.py:89
reads_statewrite_semantic_diff_htmlparam:diff[]parameter_containerdiff_report.py:93
reads_statebuild_impact_indexparam:graph[]parameter_containerimpact.py:35
reads_statebuild_impact_indexparam:graph[]parameter_containerimpact.py:36
reads_stateresolve_impact_targetparam:index[]parameter_containerimpact.py:185
reads_stateresolve_impact_targetparam:index[]parameter_containerimpact.py:188
reads_stateresolve_impact_targetparam:index[]parameter_containerimpact.py:192
reads_stateanalyze_impactparam:graph[]parameter_containerimpact.py:223
reads_stateanalyze_impactparam:index[]parameter_containerimpact.py:229
reads_stateanalyze_impactparam:index[]parameter_containerimpact.py:230
reads_statetop_impact_targetsparam:index[]parameter_containerimpact.py:367
reads_state_aggregate_impactparam:seed_ids[]parameter_containerpr_review.py:59
reads_statereview_markdownparam:review[]parameter_containerpr_review.py:114
reads_statereview_markdownparam:review[]parameter_containerpr_review.py:115
reads_statereview_markdownparam:review[]parameter_containerpr_review.py:135
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:25
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:26
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:27
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:28
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:35
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:36
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:39
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:40
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:41
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:42
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:45
reads_statewrite_json_outputsparam:graph[]parameter_containerreport.py:46
reads_statewrite_graphmlparam:graph[]parameter_containerreport.py:55
reads_statewrite_graphmlparam:graph[]parameter_containerreport.py:62
reads_state_overview_graphparam:graph[]parameter_containerreport.py:73
reads_state_overview_graphparam:graph[]parameter_containerreport.py:74
reads_state_svg_graphparam:graph[]parameter_containerreport.py:118
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:122
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:123
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:130
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:131
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:132
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:133
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:134
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:136
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:138
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:140
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:143
reads_statewrite_htmlparam:graph[]parameter_containerreport.py:176
reads_statewrite_markdown_reportparam:graph[]parameter_containerreport.py:184
reads_statewrite_markdown_reportparam:graph[]parameter_containerreport.py:185
reads_statewrite_markdown_reportparam:graph[]parameter_containerreport.py:188

Module binding reads

FunctionBindingEvidence
infer_effectanalyzer:binding:EFFECT_PATTERNSanalyzer.py:34
iter_python_filesanalyzer:binding:SKIP_DIRSanalyzer.py:106
_build_fragment_reuse_indexanalyzer:binding:GLOBAL_RECOMPUTED_FINDINGSanalyzer.py:333
_preload_reused_graphanalyzer:binding:GLOBAL_RECOMPUTED_FINDINGSanalyzer.py:476
analyzeanalyzer:binding:DATA_EDGE_TYPESanalyzer.py:901
analyzeanalyzer:binding:SCHEMAanalyzer.py:914
analyzeanalyzer:binding:ANALYZER_VERSIONanalyzer.py:915
analysis_configcache:binding:CACHE_VERSIONcache.py:25
analyze_with_cachecache:binding:CACHE_VERSIONcache.py:187
analyze_with_cachecache:binding:CACHE_VERSIONcache.py:215
analyze_with_cachecache:binding:CACHE_VERSIONcache.py:262
compare_metadatagit_adapter:binding:GIT_ADAPTER_VERSIONgit_adapter.py:104
build_impact_indeximpact:binding:ENTITY_TYPESimpact.py:56
build_impact_indeximpact:binding:ENTITY_TYPESimpact.py:71
build_impact_indeximpact:binding:DATA_EDGE_TYPESimpact.py:73
build_impact_indeximpact:binding:ENTITY_TYPESimpact.py:108
analyze_impactimpact:binding:DATA_NODE_TYPESimpact.py:277
assess_partial_recomputeincremental:binding:INCREMENTAL_VERSIONincremental.py:73
assess_partial_recomputeincremental:binding:INCREMENTAL_VERSIONincremental.py:116
assess_partial_recomputeincremental:binding:INCREMENTAL_VERSIONincremental.py:127
build_invalidation_planincremental:binding:FUNCTION_TYPESincremental.py:200
build_invalidation_planincremental:binding:FUNCTION_TYPESincremental.py:211
build_invalidation_planincremental:binding:INCREMENTAL_VERSIONincremental.py:277
build_pr_reviewpr_review:binding:PR_REVIEW_VERSIONpr_review.py:100
build_project_summaryproduct_ui:binding:PRODUCT_VERSIONproduct_ui.py:40
build_review_summaryproduct_ui:binding:PRODUCT_VERSIONproduct_ui.py:161
_entity_mapsemantic_diff:binding:ENTITY_TYPESsemantic_diff.py:91
_impact_changessemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:146
_rename_candidatessemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:187
_rename_candidatessemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:190
compare_graphssemantic_diff:binding:RELATION_TYPESsemantic_diff.py:229
compare_graphssemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:239
compare_graphssemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:241
compare_graphssemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:245
compare_graphssemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:247
compare_graphssemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:257
compare_graphssemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:271
compare_graphssemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:276
compare_graphssemantic_diff:binding:FUNCTION_TYPESsemantic_diff.py:277
compare_graphssemantic_diff:binding:DIFF_VERSIONsemantic_diff.py:350

Explicit exception flow

RelationSourceTargetEvidenceStatus
raises_gitraise GitAdapterErrorgit_adapter.py:21observed
exception_flowraise GitAdapterErroruncaught:GitAdapterErrorgit_adapter.py:21unresolved
raises_gitraise GitAdapterErrorgit_adapter.py:24observed
exception_flowraise GitAdapterErroruncaught:GitAdapterErrorgit_adapter.py:24unresolved
raisesensure_git_reporaise GitAdapterErrorgit_adapter.py:29observed
exception_flowraise GitAdapterErroruncaught:GitAdapterErrorgit_adapter.py:29unresolved
raises_safe_member_pathraise GitAdapterErrorgit_adapter.py:53observed
exception_flowraise GitAdapterErroruncaught:GitAdapterErrorgit_adapter.py:53unresolved
raises_safe_member_pathraise GitAdapterErrorgit_adapter.py:57observed
exception_flowraise GitAdapterErroruncaught:GitAdapterErrorgit_adapter.py:57unresolved
raisescompare_metadataraise GitAdapterErrorgit_adapter.py:101observed
exception_flowraise GitAdapterErroruncaught:GitAdapterErrorgit_adapter.py:101unresolved
raisesparse_github_eventraise GitAdapterErrorgit_adapter.py:126observed
exception_flowraise GitAdapterErroruncaught:GitAdapterErrorgit_adapter.py:126unresolved
raisesresolve_impact_targetraise KeyErrorimpact.py:194observed
exception_flowraise KeyErroruncaught:KeyErrorimpact.py:194unresolved
raisesresolve_impact_targetraise ValueErrorimpact.py:198observed
exception_flowraise ValueErroruncaught:ValueErrorimpact.py:198unresolved

Findings

SeverityClassTypeLocationSymbolEvidence statement
infohotspotboundary_heavyanalyzer.py:infer_effectMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:FunctionScanner.visit_TryMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:block_unreachableMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:normalized_function_shapeMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:fragment_source_hashMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:fragment_context_fingerprintMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:_clone_rebound_source_hashMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:_build_fragment_reuse_indexMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:_reuse_function_fragmentMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:motif_signatureMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:coarse_motif_signatureMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:infer_structural_motifsMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:_preload_reused_graphMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:_garbage_collect_shared_nodesMany calls cross the resolved graph boundary.
infohotspotboundary_heavyanalyzer.py:analyzeMany calls cross the resolved graph boundary.
infohotspotboundary_heavycache.py:scan_python_manifestMany calls cross the resolved graph boundary.
infohotspotboundary_heavycache.py:analyze_with_cacheMany calls cross the resolved graph boundary.
infohotspotboundary_heavycache.py:review_fingerprintMany calls cross the resolved graph boundary.
infohotspotboundary_heavycli.py:mainMany calls cross the resolved graph boundary.
infohotspotboundary_heavydataflow.py:StateAccessCollector.visit_CallMany calls cross the resolved graph boundary.
infohotspotboundary_heavydataflow.py:stmt_definitely_terminatesMany calls cross the resolved graph boundary.
infohotspotboundary_heavydataflow.py:FunctionDataflowBuilder._merge_envsMany calls cross the resolved graph boundary.
infohotspotboundary_heavydataflow.py:FunctionDataflowBuilder.process_stmtMany calls cross the resolved graph boundary.
infohotspotboundary_heavydataflow.py:FunctionDataflowBuilder._build_exception_flowMany calls cross the resolved graph boundary.
infohotspotboundary_heavydataflow.py:FunctionDataflowBuilder.buildMany calls cross the resolved graph boundary.
infohotspotboundary_heavydiff_report.py:write_semantic_diff_markdownMany calls cross the resolved graph boundary.
infohotspotboundary_heavydiff_report.py:write_semantic_diff_htmlMany calls cross the resolved graph boundary.
infohotspotboundary_heavygit_adapter.py:archive_refMany calls cross the resolved graph boundary.
infohotspotboundary_heavygit_adapter.py:changed_filesMany calls cross the resolved graph boundary.
infohotspotboundary_heavygit_adapter.py:parse_github_eventMany calls cross the resolved graph boundary.
infohotspotboundary_heavyimpact.py:build_impact_indexMany calls cross the resolved graph boundary.
infohotspotboundary_heavyimpact.py:resolve_impact_targetMany calls cross the resolved graph boundary.
infohotspotboundary_heavyimpact.py:analyze_impactMany calls cross the resolved graph boundary.
infohotspotboundary_heavyincremental.py:_base_symbol_surfaceMany calls cross the resolved graph boundary.
infohotspotboundary_heavyincremental.py:_target_symbol_surfaceMany calls cross the resolved graph boundary.
infohotspotboundary_heavyincremental.py:assess_partial_recomputeMany calls cross the resolved graph boundary.
infohotspotboundary_heavyincremental.py:canonical_graph_payloadMany calls cross the resolved graph boundary.
infohotspotboundary_heavyincremental.py:build_invalidation_planMany calls cross the resolved graph boundary.
infohotspotboundary_heavypr_review.py:_changed_function_seedsMany calls cross the resolved graph boundary.
infohotspotboundary_heavypr_review.py:_aggregate_impactMany calls cross the resolved graph boundary.
infohotspotboundary_heavypr_review.py:build_pr_reviewMany calls cross the resolved graph boundary.
infohotspotboundary_heavypr_review.py:review_markdownMany calls cross the resolved graph boundary.
infohotspotboundary_heavypr_review.py:annotation_commandsMany calls cross the resolved graph boundary.
infohotspotboundary_heavypr_review.py:write_pr_review_htmlMany calls cross the resolved graph boundary.
infohotspotboundary_heavyproduct_ui.py:build_project_summaryMany calls cross the resolved graph boundary.
infohotspotboundary_heavyproduct_ui.py:_finding_rowsMany calls cross the resolved graph boundary.
infohotspotboundary_heavyproduct_ui.py:write_project_htmlMany calls cross the resolved graph boundary.
infohotspotboundary_heavyproduct_ui.py:build_review_summaryMany calls cross the resolved graph boundary.
infohotspotboundary_heavyproduct_ui.py:write_review_htmlMany calls cross the resolved graph boundary.
infohotspotboundary_heavyreport.py:write_json_outputsMany calls cross the resolved graph boundary.
infohotspotboundary_heavyreport.py:write_graphmlMany calls cross the resolved graph boundary.
infohotspotboundary_heavyreport.py:_overview_graphMany calls cross the resolved graph boundary.
infohotspotboundary_heavyreport.py:_svg_graphMany calls cross the resolved graph boundary.
infohotspotboundary_heavyreport.py:write_htmlMany calls cross the resolved graph boundary.
infohotspotboundary_heavyreport.py:write_markdown_reportMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:_node_keyMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:_relation_keyMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:_relation_publicMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:_finding_keyMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:_exception_signaturesMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:_impact_breadthMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:_impact_changesMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:_rename_candidatesMany calls cross the resolved graph boundary.
infohotspotboundary_heavysemantic_diff.py:compare_graphsMany calls cross the resolved graph boundary.
infoanomalyduplicate_function_shape:Functions normalize to the same AST shape.
infoanomalyduplicate_function_shape:Functions normalize to the same AST shape.
infoanomalyduplicate_function_shape:Functions normalize to the same AST shape.
infoanomalyduplicate_function_shape:Functions normalize to the same AST shape.
infoanomalyduplicate_function_shape:Functions normalize to the same AST shape.
infoanomalyduplicate_function_shape:Functions normalize to the same AST shape.
infohotspothigh_call_fanoutanalyzer.py:infer_effectHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:node_textHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:FunctionScanner.visit_TryHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:block_unreachableHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:normalized_function_shapeHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:fragment_source_hashHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:fragment_context_fingerprintHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:_clone_rebound_source_hashHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:_build_fragment_reuse_indexHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:_reuse_function_fragmentHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:motif_signatureHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:coarse_motif_signatureHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:infer_structural_motifsHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:_preload_reused_graphHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:_garbage_collect_shared_nodesHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutanalyzer.py:analyzeHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutcache.py:scan_python_manifestHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutcache.py:analyze_with_cacheHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutcache.py:_strip_volatileHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutcache.py:review_fingerprintHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutcli.py:mainHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:LoadNameCollector._visit_compHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:StateAccessCollector.visit_CallHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:StateAccessCollector.visit_SubscriptHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:StateAccessCollector.visit_AugAssignHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:stmt_definitely_terminatesHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:FunctionDataflowBuilder.__init__High static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:FunctionDataflowBuilder._collect_state_accessesHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:FunctionDataflowBuilder._merge_envsHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:FunctionDataflowBuilder.process_stmtHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:FunctionDataflowBuilder._build_exception_flowHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdataflow.py:FunctionDataflowBuilder.buildHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdiff_report.py:write_semantic_diff_markdownHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutdiff_report.py:write_semantic_diff_htmlHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutgit_adapter.py:_gitHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutgit_adapter.py:ensure_git_repoHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutgit_adapter.py:_safe_member_pathHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutgit_adapter.py:archive_refHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutgit_adapter.py:changed_filesHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutgit_adapter.py:compare_metadataHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutgit_adapter.py:parse_github_eventHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutimpact.py:build_impact_indexHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutimpact.py:resolve_impact_targetHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutimpact.py:analyze_impactHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutincremental.py:_base_symbol_surfaceHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutincremental.py:_target_symbol_surfaceHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutincremental.py:assess_partial_recomputeHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutincremental.py:canonical_graph_payloadHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutincremental.py:graph_equivalence_reportHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutincremental.py:build_invalidation_planHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutpr_review.py:_changed_function_seedsHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutpr_review.py:_aggregate_impactHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutpr_review.py:build_pr_reviewHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutpr_review.py:review_markdownHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutpr_review.py:annotation_commandsHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutpr_review.py:write_pr_review_outputsHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutpr_review.py:write_pr_review_htmlHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutproduct_ui.py:build_project_summaryHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutproduct_ui.py:_finding_rowsHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutproduct_ui.py:write_project_htmlHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutproduct_ui.py:build_review_summaryHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutproduct_ui.py:write_review_htmlHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutreport.py:write_json_outputsHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutreport.py:write_graphmlHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutreport.py:_overview_graphHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutreport.py:_svg_graphHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutreport.py:write_htmlHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutreport.py:write_markdown_reportHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:_node_keyHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:_relation_keyHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:_relation_publicHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:_finding_keyHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:_exception_signaturesHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:_impact_breadthHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:_impact_changesHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:_rename_candidatesHigh static call fan-out; review as an orchestration/hotspot node.
infohotspothigh_call_fanoutsemantic_diff.py:compare_graphsHigh static call fan-out; review as an orchestration/hotspot node.
infohotspotmulti_writer_state:State region has three or more static writers; review coupling and mutation ownership.
infoanomalystatic_call_cycle:Resolved local calls form a cycle; may be intentional recursion.
infoanomalystatic_call_cycle:Resolved local calls form a cycle; may be intentional recursion.
infoanomalystatic_call_cycle:Resolved local calls form a cycle; may be intentional recursion.
infoanomalystatic_call_cycle:Resolved local calls form a cycle; may be intentional recursion.
infoanomalystatic_call_cycle:Resolved local calls form a cycle; may be intentional recursion.
infoanomalystatic_call_cycle:Resolved local calls form a cycle; may be intentional recursion.
infoanomalystatic_call_cycle:Resolved local calls form a cycle; may be intentional recursion.

Deterministic motif candidates

KindPathSymbolConfidenceStructural rule
boundary_orchestrationanalyzer.pyFunctionScanner.visit_Try0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.py_build_fragment_reuse_index0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.py_clone_rebound_source_hash0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.py_garbage_collect_shared_nodes0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.py_preload_reused_graph0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.py_reuse_function_fragment0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pyanalyze0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pyblock_unreachable0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pycoarse_motif_signature0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pyfragment_context_fingerprint0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pyfragment_source_hash0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pyinfer_effect0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pyinfer_structural_motifs0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pyiter_python_files0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pymotif_signature0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pynode_text0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pynormalized_function_shape0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pyresolve_relative0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.pystable_id0.72five or more unresolved/external calls
boundary_orchestrationcache.pyCacheStore.register_review0.72five or more unresolved/external calls
boundary_orchestrationcache.py_strip_volatile0.72five or more unresolved/external calls
boundary_orchestrationcache.pyanalyze_with_cache0.72five or more unresolved/external calls
boundary_orchestrationcache.pyreview_fingerprint0.72five or more unresolved/external calls
boundary_orchestrationcache.pyscan_python_manifest0.72five or more unresolved/external calls
boundary_orchestrationcli.pymain0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyFunctionDataflowBuilder.__init__0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyFunctionDataflowBuilder._build_exception_flow0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyFunctionDataflowBuilder._merge_envs0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyFunctionDataflowBuilder.build0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyFunctionDataflowBuilder.process_stmt0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyLoadNameCollector._visit_comp0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyLoadNameCollector.visit_Lambda0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyStateAccessCollector.visit_AugAssign0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyStateAccessCollector.visit_Call0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyStateAccessCollector.visit_Subscript0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyattr_chain0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyexception_name0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pyhandler_matches0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pystable_id0.72five or more unresolved/external calls
boundary_orchestrationdataflow.pystmt_definitely_terminates0.72five or more unresolved/external calls
boundary_orchestrationdiff_report.pywrite_semantic_diff_html0.72five or more unresolved/external calls
boundary_orchestrationdiff_report.pywrite_semantic_diff_markdown0.72five or more unresolved/external calls
boundary_orchestrationgit_adapter.py_git0.72five or more unresolved/external calls
boundary_orchestrationgit_adapter.py_safe_member_path0.72five or more unresolved/external calls
boundary_orchestrationgit_adapter.pyarchive_ref0.72five or more unresolved/external calls
boundary_orchestrationgit_adapter.pychanged_files0.72five or more unresolved/external calls
boundary_orchestrationgit_adapter.pycommit_metadata0.72five or more unresolved/external calls
boundary_orchestrationgit_adapter.pyensure_git_repo0.72five or more unresolved/external calls
boundary_orchestrationgit_adapter.pyparse_github_event0.72five or more unresolved/external calls
boundary_orchestrationimpact.py_bfs_paths0.72five or more unresolved/external calls
boundary_orchestrationimpact.py_is_test_path0.72five or more unresolved/external calls
boundary_orchestrationimpact.pyanalyze_impact0.72five or more unresolved/external calls
boundary_orchestrationimpact.pybuild_impact_index0.72five or more unresolved/external calls
boundary_orchestrationimpact.pyresolve_impact_target0.72five or more unresolved/external calls
boundary_orchestrationincremental.py_base_symbol_surface0.72five or more unresolved/external calls
boundary_orchestrationincremental.py_changed_python_paths0.72five or more unresolved/external calls
boundary_orchestrationincremental.py_target_symbol_surface0.72five or more unresolved/external calls
boundary_orchestrationincremental.pyassess_partial_recompute0.72five or more unresolved/external calls
boundary_orchestrationincremental.pybuild_invalidation_plan0.72five or more unresolved/external calls
boundary_orchestrationincremental.pycanonical_graph_payload0.72five or more unresolved/external calls
boundary_orchestrationpr_review.py_aggregate_impact0.72five or more unresolved/external calls
boundary_orchestrationpr_review.py_changed_function_seeds0.72five or more unresolved/external calls
boundary_orchestrationpr_review.py_find_target0.72five or more unresolved/external calls
boundary_orchestrationpr_review.pyannotation_commands0.72five or more unresolved/external calls
boundary_orchestrationpr_review.pybuild_pr_review0.72five or more unresolved/external calls
boundary_orchestrationpr_review.pyreview_markdown0.72five or more unresolved/external calls
boundary_orchestrationpr_review.pywrite_pr_review_html0.72five or more unresolved/external calls
boundary_orchestrationpr_review.pywrite_pr_review_outputs0.72five or more unresolved/external calls
boundary_orchestrationproduct_ui.py_finding_rows0.72five or more unresolved/external calls
boundary_orchestrationproduct_ui.py_project_status0.72five or more unresolved/external calls
boundary_orchestrationproduct_ui.pybuild_project_summary0.72five or more unresolved/external calls
boundary_orchestrationproduct_ui.pybuild_review_summary0.72five or more unresolved/external calls
boundary_orchestrationproduct_ui.pywrite_project_html0.72five or more unresolved/external calls
boundary_orchestrationproduct_ui.pywrite_review_html0.72five or more unresolved/external calls
boundary_orchestrationreport.py_overview_graph0.72five or more unresolved/external calls
boundary_orchestrationreport.py_svg_graph0.72five or more unresolved/external calls
boundary_orchestrationreport.pywrite_graphml0.72five or more unresolved/external calls
boundary_orchestrationreport.pywrite_html0.72five or more unresolved/external calls
boundary_orchestrationreport.pywrite_json_outputs0.72five or more unresolved/external calls
boundary_orchestrationreport.pywrite_markdown_report0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_exception_signatures0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_finding_key0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_impact_breadth0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_impact_changes0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_motif_key0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_node_key0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_relation_key0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_relation_public0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.py_rename_candidates0.72five or more unresolved/external calls
boundary_orchestrationsemantic_diff.pycompare_graphs0.72five or more unresolved/external calls
orchestration_fanoutanalyzer.pyanalyze0.85five or more resolved local calls
orchestration_fanoutcache.pyanalyze_with_cache0.85five or more resolved local calls
orchestration_fanoutcli.py_write_analysis0.85five or more resolved local calls
orchestration_fanoutcli.pymain0.85five or more resolved local calls
orchestration_fanoutdataflow.pyFunctionDataflowBuilder._build_exception_flow0.85five or more resolved local calls
orchestration_fanoutdataflow.pyFunctionDataflowBuilder._collect_state_accesses0.85five or more resolved local calls
orchestration_fanoutdataflow.pyFunctionDataflowBuilder._record_use_name0.85five or more resolved local calls
orchestration_fanoutdataflow.pyFunctionDataflowBuilder.process_stmt0.85five or more resolved local calls
orchestration_fanoutdataflow.pyStateAccessCollector.visit_AugAssign0.85five or more resolved local calls
orchestration_fanoutdataflow.pyStateAccessCollector.visit_Subscript0.85five or more resolved local calls
orchestration_fanoutdataflow.pystmt_definitely_terminates0.85five or more resolved local calls
orchestration_fanoutdiff_report.pywrite_semantic_diff_html0.85five or more resolved local calls
orchestration_fanoutgit_adapter.pycompare_metadata0.85five or more resolved local calls
orchestration_fanoutimpact.pyanalyze_impact0.85five or more resolved local calls
orchestration_fanoutincremental.pycanonical_graph_payload0.85five or more resolved local calls
orchestration_fanoutpr_review.pywrite_pr_review_html0.85five or more resolved local calls
orchestration_fanoutproduct_ui.py_finding_rows0.85five or more resolved local calls
orchestration_fanoutproduct_ui.pywrite_project_html0.85five or more resolved local calls
orchestration_fanoutproduct_ui.pywrite_review_html0.85five or more resolved local calls
orchestration_fanoutreport.py_svg_graph0.85five or more resolved local calls
orchestration_fanoutreport.pywrite_html0.85five or more resolved local calls
orchestration_fanoutsemantic_diff.py_exception_signatures0.85five or more resolved local calls
orchestration_fanoutsemantic_diff.py_impact_changes0.85five or more resolved local calls
orchestration_fanoutsemantic_diff.pycompare_graphs0.85five or more resolved local calls
read_modify_writecache.pyCacheStore.__init__0.86same function reads and writes the same state target
read_modify_writedataflow.pyFunctionDataflowBuilder.__init__0.86same function reads and writes the same state target
read_modify_writedataflow.pyFunctionDataflowBuilder._collect_state_accesses0.86same function reads and writes the same state target
read_modify_writedataflow.pyFunctionDataflowBuilder._define_target0.86same function reads and writes the same state target
read_modify_writedataflow.pyFunctionDataflowBuilder._merge_envs0.86same function reads and writes the same state target
read_modify_writedataflow.pyFunctionDataflowBuilder._new_value0.86same function reads and writes the same state target
read_modify_writedataflow.pyFunctionDataflowBuilder._record_use_name0.86same function reads and writes the same state target
read_modify_writedataflow.pyFunctionDataflowBuilder._undefined0.86same function reads and writes the same state target
read_modify_writedataflow.pyFunctionDataflowBuilder.build0.86same function reads and writes the same state target
resource_scopecache.pyCacheStore.load_graph0.92with/async-with establishes bounded resource scope
resource_scopecli.pymain0.92with/async-with establishes bounded resource scope
resource_scopegit_adapter.pyarchive_ref0.92with/async-with establishes bounded resource scope
retry_candidateanalyzer.pyanalyze0.70loop plus exception handling is a retry-like structural candidate
retry_candidateanalyzer.pyiter_python_files0.70loop plus exception handling is a retry-like structural candidate
retry_candidateanalyzer.pynormalized_function_shape0.70loop plus exception handling is a retry-like structural candidate
retry_candidatecache.py_iter_python_candidates0.70loop plus exception handling is a retry-like structural candidate
retry_candidatecache.pyscan_python_manifest0.70loop plus exception handling is a retry-like structural candidate
retry_candidatecli.pymain0.70loop plus exception handling is a retry-like structural candidate
retry_candidatedataflow.pyhandler_matches0.70loop plus exception handling is a retry-like structural candidate
retry_candidateimpact.pytop_impact_targets0.70loop plus exception handling is a retry-like structural candidate
retry_candidateincremental.py_target_symbol_surface0.70loop plus exception handling is a retry-like structural candidate
retry_candidatepr_review.py_aggregate_impact0.70loop plus exception handling is a retry-like structural candidate
retry_candidatesemantic_diff.py_impact_changes0.70loop plus exception handling is a retry-like structural candidate

Name-independent structural signature clusters

Motif IDMembersIdentity basis
motif_coarse_10d26391059d2name-independent coarse structural feature signature
motif_coarse_125fe4728a6b4name-independent coarse structural feature signature
motif_coarse_1d063c7b37b27name-independent coarse structural feature signature
motif_coarse_21f990ba2ff93name-independent coarse structural feature signature
motif_coarse_2a35739c27f53name-independent coarse structural feature signature
motif_coarse_3a2eb66bf0ac3name-independent coarse structural feature signature
motif_coarse_404687b09fc92name-independent coarse structural feature signature
motif_coarse_6498af11de896name-independent coarse structural feature signature
motif_coarse_662d65d735973name-independent coarse structural feature signature
motif_coarse_69581341d26f8name-independent coarse structural feature signature
motif_coarse_6b17282fe8493name-independent coarse structural feature signature
motif_coarse_7a99543fed3f5name-independent coarse structural feature signature
motif_coarse_7bef0e8aaa953name-independent coarse structural feature signature
motif_coarse_7d036f9410046name-independent coarse structural feature signature
motif_coarse_89f8220068742name-independent coarse structural feature signature
motif_coarse_9f0831ec4b222name-independent coarse structural feature signature
motif_coarse_af2f0ae261582name-independent coarse structural feature signature
motif_coarse_b2feb91af8fa8name-independent coarse structural feature signature
motif_coarse_b42846908a332name-independent coarse structural feature signature
motif_coarse_b4a27ad8a6cb8name-independent coarse structural feature signature
motif_coarse_c0388966555913name-independent coarse structural feature signature
motif_coarse_c10ceceefb4d5name-independent coarse structural feature signature
motif_coarse_c4a7b29768282name-independent coarse structural feature signature
motif_coarse_ce08f8f7d5245name-independent coarse structural feature signature
motif_coarse_e3a6d82c57d015name-independent coarse structural feature signature
motif_coarse_ef5db5e5ba383name-independent coarse structural feature signature
motif_coarse_f373ee2a1d2111name-independent coarse structural feature signature
motif_coarse_f4a86b4f0a935name-independent coarse structural feature signature
motif_coarse_fca123bd72d612name-independent coarse structural feature signature
motif_coarse_ff49519e01f110name-independent coarse structural feature signature

Per-file SHA-256

PathBytesSHA-256
__init__.py221fd3564596fb35b7…
analyzer.py509644df04e2eaea2f72a…
cache.py12245bb7f4ff6a3557f63…
cli.py12493fce9427a29a429f0…
dataflow.py3918860b2e9a2d349647c…
diff_report.py11137706bdf4002b79232…
git_adapter.py6707cc64d3adcf9b77ce…
impact.py205003221edce2184d0bd…
incremental.py12608c5d319aaebd5b833…
pr_review.py16963b9a4a702230a2c96…
product_ui.py31255419c7f1401a5528f…
report.py317787bd6d522e41bb159…
semantic_diff.py22721acb3a4d2a81f84aa…

Epistemic contract

observed

  • Python AST definitions
  • imports
  • call syntax
  • control syntax
  • source spans
  • local file hashes
  • SSA-like local definitions/uses
  • self/cls/explicit-global state accesses
  • module-binding reads
  • explicit raise/except syntax
  • definition-time Python name aliases

strongly_inferred

  • local call target resolution
  • parameter-container state regions
  • effect hints
  • branch/loop phi merges
  • explicit exception catch matching
  • structural motif candidates

unresolved

  • runtime dispatch
  • reflection
  • native extension behavior
  • external library semantics
  • precise heap points-to beyond definition-time alias
  • dynamic exception behavior from calls
  • concurrency semantics