PBSOI CISG MVP v0.8 — Impact Engine

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

13
Files
4620
Nodes
12665
Edges
446
Impact targets
1550
Data values
65
State regions
0
Defects
132
Motifs

MVP pipeline

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

v0.8 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": 4620,
  "edges": 12665,
  "node_types": {
    "file": 13,
    "function": 119,
    "class": 9,
    "method": 78,
    "boundary_module": 22,
    "control": 548,
    "data_value": 1550,
    "state_region": 65,
    "module_binding": 19,
    "data_sink": 222,
    "boundary_call": 452,
    "data_phi": 710,
    "data_use": 441,
    "data_undefined": 335,
    "exception_handler": 19,
    "effect": 2,
    "exception_event": 9,
    "boundary_exception": 7
  },
  "edge_types": {
    "contains": 206,
    "imports": 94,
    "controls": 548,
    "defines": 2260,
    "reads_state": 210,
    "reads_binding": 39,
    "flows_to": 2856,
    "guards": 649,
    "contains_data": 668,
    "calls": 3079,
    "returns_value": 431,
    "phi_input": 1420,
    "contains_exception_handler": 19,
    "writes_state": 66,
    "aliases_at_definition": 47,
    "effect": 47,
    "exception_value": 8,
    "raises": 9,
    "exception_flow": 9
  },
  "resolved_local_calls": 599,
  "boundary_calls": 2480,
  "findings_by_category": {
    "anomaly": 13,
    "hotspot": 132
  },
  "findings_by_severity": {
    "info": 145
  },
  "motif_instances": 132,
  "motif_clusters": 30,
  "data_values": 1550,
  "phi_nodes": 710,
  "data_edges": 7671,
  "alias_edges": 47,
  "state_regions": 65,
  "state_reads": 210,
  "state_writes": 66,
  "module_binding_reads": 39,
  "exception_handlers": 19,
  "explicit_raises": 9,
  "unresolved_local_uses": 0,
  "warnings": 0
}

Highest review breadth

KindTargetReview breadthPath
function577cli.py
function223impact.py
function222cache.py
function215impact.py
function195cli.py
function192semantic_diff.py
function185impact.py
function174product_ui.py
function173report.py
function172analyzer.py
function164semantic_diff.py
function159pr_review.py
function154impact.py
function149product_ui.py
function148report.py
function148pr_review.py
function139report.py
function139product_ui.py
function125product_ui.py
function119analyzer.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 218 of 219 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": 721, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 30, "end_line": 46, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 59, "end_line": 61, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 64, "end_line": 65, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 68, "end_line": 73, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 76, "end_line": 86, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 89, "end_line": 100, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 103, "end_line": 119, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 123, "end_line": 131, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 133, "end_line": 135, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 137, "end_line": 137, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 138, "end_line": 138, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 139, "end_line": 139, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 140, "end_line": 140, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 141, "end_line": 141, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 142, "end_line": 142, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 143, "end_line": 143, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 145, "end_line": 154, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 156, "end_line": 162, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 164, "end_line": 168, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 170, "end_line": 174, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 176, "end_line": 179, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 181, "end_line": 184, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 187, "end_line": 207, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 210, "end_line": 231, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 234, "end_line": 236, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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}}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, "evidence": {"path": "analyzer.py", "line": 239, "end_line": 249, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 251, "end_line": 266, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 269, "end_line": 290, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 304, "end_line": 308, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 311, "end_line": 334, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 337, "end_line": 344, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "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, "evidence": {"path": "analyzer.py", "line": 347, "end_line": 721, "source_hash": "755bb1983d3e2bbf638a86a13f086be55245e1f214ac7781acefbab9a3530c19", "source_kind": "code"}, "shape_signature": "shape_0a546b2d41cffeb8", "motif_signature": "motif_exact_57c22be2c17b", "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", "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": 46, "boundary_calls": 227}}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": 317, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 18, "end_line": 20, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 23, "end_line": 30, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 33, "end_line": 34, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 37, "end_line": 45, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 48, "end_line": 82, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 85, "end_line": 89, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 92, "end_line": 94, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 98, "end_line": 102, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 104, "end_line": 105, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 107, "end_line": 108, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 110, "end_line": 118, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 120, "end_line": 124, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 126, "end_line": 133, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 135, "end_line": 136, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 138, "end_line": 154, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 157, "end_line": 160, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 163, "end_line": 288, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "source_kind": "code"}, "shape_signature": "shape_211b57a346ccf64e", "motif_signature": "motif_exact_ef57fb6d333c", "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": 36}}_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, "evidence": {"path": "cache.py", "line": 291, "end_line": 301, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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, "evidence": {"path": "cache.py", "line": 304, "end_line": 317, "source_hash": "5b39b5cab73a34292a2c9907e8d7960711fb9aa8fa2c980c70d5d7936371bbe5", "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": 212, "source_hash": "69e0df9149881b3e465ca6d39a94c73f41e721fa4070eb72473065f972814c87", "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, "evidence": {"path": "cli.py", "line": 26, "end_line": 33, "source_hash": "69e0df9149881b3e465ca6d39a94c73f41e721fa4070eb72473065f972814c87", "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, "evidence": {"path": "cli.py", "line": 36, "end_line": 38, "source_hash": "69e0df9149881b3e465ca6d39a94c73f41e721fa4070eb72473065f972814c87", "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, "evidence": {"path": "cli.py", "line": 41, "end_line": 44, "source_hash": "69e0df9149881b3e465ca6d39a94c73f41e721fa4070eb72473065f972814c87", "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, "evidence": {"path": "cli.py", "line": 47, "end_line": 208, "source_hash": "69e0df9149881b3e465ca6d39a94c73f41e721fa4070eb72473065f972814c87", "source_kind": "code"}, "shape_signature": "shape_2c3ce49d03c11b15", "motif_signature": "motif_exact_a36d04452a4c", "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", "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": 90}}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, "evidence": {"path": "dataflow.py", "line": 11, "end_line": 13, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 16, "end_line": 23, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 26, "end_line": 36, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 42, "end_line": 45, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 47, "end_line": 48, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 50, "end_line": 51, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 53, "end_line": 54, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 56, "end_line": 59, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 61, "end_line": 64, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 66, "end_line": 68, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 70, "end_line": 74, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 78, "end_line": 84, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 88, "end_line": 92, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 94, "end_line": 96, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 98, "end_line": 100, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 104, "end_line": 105, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 107, "end_line": 108, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 110, "end_line": 111, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 116, "end_line": 117, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 123, "end_line": 125, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 128, "end_line": 132, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 134, "end_line": 136, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 138, "end_line": 148, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 150, "end_line": 159, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 161, "end_line": 162, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 164, "end_line": 165, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 167, "end_line": 168, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 170, "end_line": 171, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 173, "end_line": 174, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 178, "end_line": 179, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 182, "end_line": 187, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 190, "end_line": 199, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 202, "end_line": 206, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 220, "end_line": 229, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 231, "end_line": 235, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 237, "end_line": 248, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 250, "end_line": 266, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 268, "end_line": 275, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 277, "end_line": 290, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 292, "end_line": 299, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 301, "end_line": 331, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 333, "end_line": 334, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 338, "end_line": 339, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 341, "end_line": 342, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 345, "end_line": 355, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 358, "end_line": 363, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 366, "end_line": 381, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 384, "end_line": 387, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 390, "end_line": 406, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 410, "end_line": 445, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 447, "end_line": 448, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 450, "end_line": 452, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 454, "end_line": 457, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 459, "end_line": 482, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 484, "end_line": 500, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 502, "end_line": 510, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 512, "end_line": 533, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 535, "end_line": 542, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 544, "end_line": 575, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 577, "end_line": 588, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 590, "end_line": 608, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 610, "end_line": 624, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 626, "end_line": 632, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 634, "end_line": 755, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 757, "end_line": 835, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 837, "end_line": 860, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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, "evidence": {"path": "dataflow.py", "line": 863, "end_line": 873, "source_hash": "60b2e9a2d349647c2b1f0f2ccab9621222aaf57f942636e3be489598ca599e7d", "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": "8a1f5015f131f5808936f91361702a8b039c65162e67a7dcb95ab577294a33b2", "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, "evidence": {"path": "diff_report.py", "line": 9, "end_line": 10, "source_hash": "8a1f5015f131f5808936f91361702a8b039c65162e67a7dcb95ab577294a33b2", "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, "evidence": {"path": "diff_report.py", "line": 13, "end_line": 14, "source_hash": "8a1f5015f131f5808936f91361702a8b039c65162e67a7dcb95ab577294a33b2", "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, "evidence": {"path": "diff_report.py", "line": 17, "end_line": 66, "source_hash": "8a1f5015f131f5808936f91361702a8b039c65162e67a7dcb95ab577294a33b2", "source_kind": "code"}, "shape_signature": "shape_24c60bc3eadbd1f4", "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, "evidence": {"path": "diff_report.py", "line": 69, "end_line": 116, "source_hash": "8a1f5015f131f5808936f91361702a8b039c65162e67a7dcb95ab577294a33b2", "source_kind": "code"}, "shape_signature": "shape_ee98009a7bcece77", "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, "evidence": {"path": "git_adapter.py", "line": 16, "end_line": 24, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 26, "end_line": 30, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 32, "end_line": 33, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 35, "end_line": 36, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 38, "end_line": 48, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 50, "end_line": 58, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 60, "end_line": 80, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 82, "end_line": 94, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 96, "end_line": 109, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 111, "end_line": 119, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "git_adapter.py", "line": 121, "end_line": 139, "source_hash": "cc64d3adcf9b77ce54b29aae810b8bf5e56c376000eb8f5a2bc3fcb574cd63ef", "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, "evidence": {"path": "impact.py", "line": 14, "end_line": 17, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "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, "evidence": {"path": "impact.py", "line": 20, "end_line": 23, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "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, "evidence": {"path": "impact.py", "line": 26, "end_line": 31, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "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, "evidence": {"path": "impact.py", "line": 34, "end_line": 180, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "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, "evidence": {"path": "impact.py", "line": 183, "end_line": 199, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "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, "evidence": {"path": "impact.py", "line": 202, "end_line": 217, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "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, "evidence": {"path": "impact.py", "line": 220, "end_line": 361, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "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, "evidence": {"path": "impact.py", "line": 364, "end_line": 379, "source_hash": "3221edce2184d0bd3e07c727f9c0c42e3cbf1325cf45ee0d0784bc6a7c9e7e9d", "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": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "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, "evidence": {"path": "incremental.py", "line": 14, "end_line": 21, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "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, "evidence": {"path": "incremental.py", "line": 24, "end_line": 29, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "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, "evidence": {"path": "incremental.py", "line": 32, "end_line": 50, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "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, "evidence": {"path": "incremental.py", "line": 53, "end_line": 133, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "source_kind": "code"}, "shape_signature": "shape_fa838de7770a1663", "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, "evidence": {"path": "incremental.py", "line": 136, "end_line": 137, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "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, "evidence": {"path": "incremental.py", "line": 140, "end_line": 160, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "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, "evidence": {"path": "incremental.py", "line": 163, "end_line": 165, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "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, "evidence": {"path": "incremental.py", "line": 168, "end_line": 180, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "source_kind": "code"}, "shape_signature": "shape_3e8578f2f7d5d4d3", "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, "evidence": {"path": "incremental.py", "line": 183, "end_line": 291, "source_hash": "7e00463ffa65f910ad93dc9e6bf71bb3639a030147ece0a5aba950a03bd100a8", "source_kind": "code"}, "shape_signature": "shape_543b421284b6000c", "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": 189, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 13, "end_line": 14, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 17, "end_line": 18, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 21, "end_line": 25, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 28, "end_line": 48, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 51, "end_line": 81, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 84, "end_line": 110, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 113, "end_line": 147, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "source_kind": "code"}, "shape_signature": "shape_b613b6e831c37b62", "motif_signature": "motif_exact_7bee3187bf06", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["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": 59}}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, "evidence": {"path": "pr_review.py", "line": 150, "end_line": 158, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 161, "end_line": 167, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "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, "evidence": {"path": "pr_review.py", "line": 170, "end_line": 189, "source_hash": "c7be8d35048390235f171d00f0ac0097e8d9ab63f4dd75f87d623781358c3a63", "source_kind": "code"}, "shape_signature": "shape_77b95994e22c629c", "motif_signature": "motif_exact_7f01f914bf76", "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": 33, "boundary_calls": 70}}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": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 14, "end_line": 15, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 18, "end_line": 19, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 22, "end_line": 30, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 33, "end_line": 64, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 67, "end_line": 68, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 71, "end_line": 81, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 84, "end_line": 150, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "source_kind": "code"}, "shape_signature": "shape_7774d1b950514902", "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, "evidence": {"path": "product_ui.py", "line": 153, "end_line": 175, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 178, "end_line": 179, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "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, "evidence": {"path": "product_ui.py", "line": 182, "end_line": 214, "source_hash": "bdce375e16039f76db83649fc987307ec4d21fb0429b020ed97c898f170f7830", "source_kind": "code"}, "shape_signature": "shape_e98b16231ecf66c5", "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": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "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, "evidence": {"path": "report.py", "line": 14, "end_line": 15, "source_hash": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "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, "evidence": {"path": "report.py", "line": 18, "end_line": 19, "source_hash": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "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, "evidence": {"path": "report.py", "line": 22, "end_line": 50, "source_hash": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "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, "evidence": {"path": "report.py", "line": 53, "end_line": 69, "source_hash": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "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, "evidence": {"path": "report.py", "line": 72, "end_line": 90, "source_hash": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "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, "evidence": {"path": "report.py", "line": 93, "end_line": 118, "source_hash": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "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, "evidence": {"path": "report.py", "line": 121, "end_line": 180, "source_hash": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "source_kind": "code"}, "shape_signature": "shape_c573d126f33fbf5a", "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, "evidence": {"path": "report.py", "line": 183, "end_line": 203, "source_hash": "82dc411bab501fea8150cd1cb3808721ba4de33d06d4afa80bdb1d957c2187a6", "source_kind": "code"}, "shape_signature": "shape_e037a9e0516ac5bf", "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, "evidence": {"path": "semantic_diff.py", "line": 14, "end_line": 25, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 28, "end_line": 33, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 36, "end_line": 41, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 44, "end_line": 52, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 55, "end_line": 67, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 70, "end_line": 71, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 74, "end_line": 83, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 86, "end_line": 87, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 90, "end_line": 91, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 94, "end_line": 103, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 106, "end_line": 136, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 139, "end_line": 140, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 143, "end_line": 179, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 182, "end_line": 205, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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, "evidence": {"path": "semantic_diff.py", "line": 208, "end_line": 371, "source_hash": "acb3a4d2a81f84aa1cb4535ce28ee1fa9d6c25c416f6299c4e9d7f486e064484", "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_tofeature#0payload#1analyzer.py:241observed
flows_tofeature#0payload#1analyzer.py:242observed
flows_tofeature#0payload#1analyzer.py:243observed
flows_tofeature#0payload#1analyzer.py:244observed
flows_tofeature#0payload#1analyzer.py:245observed
flows_tofeature#0payload#1analyzer.py:246observed
flows_topayload#1raw#1analyzer.py:248observed
returns_valueraw#1return@249analyzer.py:249observed
flows_tofeature#0ctr#1analyzer.py:254observed
flows_toctr#1payload#1analyzer.py:256observed
flows_toctr#1payload#1analyzer.py:257observed
flows_toctr#1payload#1analyzer.py:258observed
flows_toctr#1payload#1analyzer.py:259observed
flows_tobucket#1payload#1analyzer.py:260observed
flows_tofeature#0payload#1analyzer.py:260observed
flows_tobucket#1payload#1analyzer.py:261observed
flows_tofeature#0payload#1analyzer.py:261observed
flows_tofeature#0payload#1analyzer.py:262observed
flows_tofeature#0payload#1analyzer.py:263observed
flows_topayload#1raw#1analyzer.py:265observed
returns_valueraw#1return@266analyzer.py:266observed
flows_tofeature#0controls#1analyzer.py:270observed
flows_tofeature#0effects#1analyzer.py:271observed
guardscontrols#1branchanalyzer.py:275observed
flows_toadd#1expr@276analyzer.py:276observed
flows_tofeature#0shared_state#1analyzer.py:277observed
guardsshared_state#1branchanalyzer.py:278observed
flows_toadd#1expr@279analyzer.py:279observed
guardscontrols#1branchanalyzer.py:280observed
flows_toadd#1expr@281analyzer.py:281observed
guardsfeature#0branchanalyzer.py:282observed
flows_toadd#1expr@283analyzer.py:283observed
guardsfeature#0branchanalyzer.py:284observed
flows_toadd#1expr@285analyzer.py:285observed
guardseffects#1branchanalyzer.py:286observed
guardsfeature#0branchanalyzer.py:286observed
flows_toadd#1expr@287analyzer.py:287observed
guardseffects#1branchanalyzer.py:288observed
guardscontrols#1branchanalyzer.py:288observed
flows_toadd#1expr@289analyzer.py:289observed
returns_valuemotifs#1return@290analyzer.py:290observed
flows_toedge#0ev#1analyzer.py:305observed
guardsev#1branchanalyzer.py:306observed
returns_valueev#1return@307analyzer.py:307observed
guardsbase_graph#0for_loopanalyzer.py:319observed
flows_tobase_graph#0node#1analyzer.py:319observed
flows_tonode#1path#1analyzer.py:320observed
guardspath#1branchanalyzer.py:321observed
guardsdirty_paths#0branchanalyzer.py:321observed
phi_inputnode#1node#2analyzer.py:319strongly_inferred
phi_inputnode:undefinednode#2analyzer.py:319unresolved
phi_inputpath#1path#2analyzer.py:319strongly_inferred
phi_inputpath:undefinedpath#2analyzer.py:319unresolved
flows_tobase_graph#0edges#1analyzer.py:325observed
flows_todirty_paths#0edges#1analyzer.py:326observed
flows_tobase_graph#0findings#1analyzer.py:329observed
flows_todirty_paths#0findings#1analyzer.py:331observed
flows_tobase_graph#0motifs#1analyzer.py:333observed
flows_todirty_paths#0motifs#1analyzer.py:333observed
returns_valuenodes#1return@334analyzer.py:334observed
returns_valueedges#1return@334analyzer.py:334observed
returns_valuefindings#1return@334analyzer.py:334observed
returns_valuemotifs#1return@334analyzer.py:334observed
flows_toedges#0referenced#1analyzer.py:338observed
guardsnodes#0for_loopanalyzer.py:342observed
flows_tonodes#0nid#1analyzer.py:342observed
flows_tonodes#0node#1analyzer.py:342observed
guardsnode#1branchanalyzer.py:343observed
guardsremovable#1branchanalyzer.py:343observed
guardsnid#1branchanalyzer.py:343observed
guardsreferenced#1branchanalyzer.py:343observed
flows_tonodes#0expr@344analyzer.py:344observed
flows_tonid#1expr@344analyzer.py:344observed
phi_inputnid#1nid#2analyzer.py:342strongly_inferred
phi_inputnid:undefinednid#2analyzer.py:342unresolved
phi_inputnode#1node#2analyzer.py:342strongly_inferred
phi_inputnode:undefinednode#2analyzer.py:342unresolved
flows_toroot#0root#1analyzer.py:349observed
flows_todirty_paths#0dirty_set#1analyzer.py:350observed
flows_toreuse_graph#0reuse_mode#1analyzer.py:351observed
flows_todirty_set#1reuse_mode#1analyzer.py:351observed
guardsreuse_mode#1branchanalyzer.py:352observed
flows_toreuse_graph#0nodes#1analyzer.py:353observed
flows_todirty_set#1nodes#1analyzer.py:353observed
flows_toreuse_graph#0edges#1analyzer.py:353observed
flows_todirty_set#1edges#1analyzer.py:353observed
flows_toreuse_graph#0findings#1analyzer.py:353observed
flows_todirty_set#1findings#1analyzer.py:353observed
flows_toreuse_graph#0motifs#1analyzer.py:353observed
flows_todirty_set#1motifs#1analyzer.py:353observed
phi_inputedges#1edges#3analyzer.py:352strongly_inferred
phi_inputedges#2edges#3analyzer.py:352strongly_inferred
phi_inputfindings#2findings#3analyzer.py:352strongly_inferred
phi_inputfindings#1findings#3analyzer.py:352strongly_inferred
phi_inputmotifs#1motifs#3analyzer.py:352strongly_inferred
phi_inputmotifs#2motifs#3analyzer.py:352strongly_inferred
phi_inputnodes#1nodes#3analyzer.py:352strongly_inferred
phi_inputnodes#2nodes#3analyzer.py:352strongly_inferred
flows_toreuse_mode#1warnings#1analyzer.py:360observed
flows_toreuse_graph#0warnings#1analyzer.py:360observed
flows_toreuse_mode#1base_source_files#1analyzer.py:368observed
flows_toreuse_graph#0base_source_files#1analyzer.py:368observed
guardsreuse_mode#1branchanalyzer.py:371observed
guardsnodes#3for_loopanalyzer.py:372observed
flows_tonodes#3nid#1analyzer.py:372observed
flows_tonodes#3n#1analyzer.py:372observed
guardsn#1branchanalyzer.py:373observed
flows_tosimple_defs#1expr@375analyzer.py:375observed
flows_ton#1expr@375analyzer.py:375observed
flows_tonid#1expr@375analyzer.py:375observed
phi_inputn#1n#2analyzer.py:372strongly_inferred
phi_inputn:undefinedn#2analyzer.py:372unresolved
phi_inputnid#1nid#2analyzer.py:372strongly_inferred
phi_inputnid:undefinednid#2analyzer.py:372unresolved
phi_inputn#2n#3analyzer.py:371strongly_inferred
phi_inputn:undefinedn#3analyzer.py:371unresolved
phi_inputnid#2nid#3analyzer.py:371strongly_inferred
phi_inputnid:undefinednid#3analyzer.py:371unresolved
guardsroot#1for_loopanalyzer.py:377observed
guardsmax_files#0for_loopanalyzer.py:377observed
guardsmax_bytes#0for_loopanalyzer.py:377observed
flows_toroot#1path#1analyzer.py:377observed
flows_tomax_files#0path#1analyzer.py:377observed
flows_tomax_bytes#0path#1analyzer.py:377observed
flows_toroot#1skip_reason#1analyzer.py:377observed
flows_tomax_files#0skip_reason#1analyzer.py:377observed
flows_tomax_bytes#0skip_reason#1analyzer.py:377observed
flows_topath#1rel#1analyzer.py:378observed
flows_toroot#1rel#1analyzer.py:378observed
guardsskip_reason#1branchanalyzer.py:379observed
guardsreuse_mode#1branchanalyzer.py:380observed
guardsrel#1branchanalyzer.py:380observed
guardsdirty_set#1branchanalyzer.py:380observed
flows_towarnings#1expr@381analyzer.py:381observed
flows_torel#1expr@381analyzer.py:381observed
flows_toskip_reason#1expr@381analyzer.py:381observed
flows_topath#1text#1analyzer.py:384observed
guardsreuse_mode#1branchanalyzer.py:386observed
guardsrel#1branchanalyzer.py:386observed
guardsdirty_set#1branchanalyzer.py:386observed
flows_towarnings#1expr@387analyzer.py:387observed
flows_torel#1expr@387analyzer.py:387observed
flows_totext#1h#1analyzer.py:389observed
flows_tosource_integrity#1expr@390analyzer.py:390observed
flows_torel#1expr@390analyzer.py:390observed
flows_toh#1expr@390analyzer.py:390observed
flows_totext#1expr@390analyzer.py:390observed
flows_toroot#1mod#1analyzer.py:391observed
flows_topath#1mod#1analyzer.py:391observed
guardsmod#1branchanalyzer.py:392observed
flows_topath#1mod#2analyzer.py:393observed
phi_inputmod#2mod#3analyzer.py:392strongly_inferred
phi_inputmod#1mod#3analyzer.py:392strongly_inferred
guardsreuse_mode#1branchanalyzer.py:398observed
guardsrel#1branchanalyzer.py:398observed
guardsdirty_set#1branchanalyzer.py:398observed
guardsrel#1branchanalyzer.py:399observed
guardsbase_source_files#1branchanalyzer.py:399observed
guardsnodes#3for_loopanalyzer.py:401observed
flows_tonodes#3n#4analyzer.py:401observed
guardsn#4branchanalyzer.py:402observed
guardsrel#1branchanalyzer.py:402observed
flows_ton#4ev#1analyzer.py:403observed
flows_toshapes#1expr@404analyzer.py:404observed
flows_ton#4expr@404analyzer.py:404observed
flows_torel#1expr@404analyzer.py:404observed
flows_toev#1expr@404analyzer.py:404observed
phi_inputev#1ev#2analyzer.py:402strongly_inferred
phi_inputev:undefinedev#2analyzer.py:402unresolved
phi_inputev#2ev#3analyzer.py:401strongly_inferred
phi_inputev:undefinedev#3analyzer.py:401unresolved
phi_inputn#4n#5analyzer.py:401strongly_inferred
phi_inputn#3n#5analyzer.py:401strongly_inferred
phi_inputev#3ev#4analyzer.py:399strongly_inferred
phi_inputev:undefinedev#4analyzer.py:399unresolved
phi_inputn#5n#6analyzer.py:399strongly_inferred
phi_inputn#3n#6analyzer.py:399strongly_inferred
flows_totext#1tree#1analyzer.py:408observed
flows_torel#1tree#1analyzer.py:408observed
flows_tofindings#3expr@410analyzer.py:410observed
flows_torel#1expr@410analyzer.py:410observed
flows_toe#1expr@410analyzer.py:411observed
guardstree#1for_loopanalyzer.py:414observed
flows_totree#1top#1analyzer.py:414observed
guardstop#1branchanalyzer.py:415observed
flows_totop#1targets#1analyzer.py:416observed
guardstargets#1for_loopanalyzer.py:417observed
flows_totargets#1target#1analyzer.py:417observed
aliases_at_definitiontargets#1target#1analyzer.py:417observed
guardstarget#1branchanalyzer.py:418observed
flows_tomodule_globals#1expr@419analyzer.py:419observed
flows_totarget#1expr@419analyzer.py:419observed
guardstarget#1branchanalyzer.py:420observed
guardstarget#1for_loopanalyzer.py:421observed
flows_totarget#1elt#1analyzer.py:421observed
guardselt#1branchanalyzer.py:422observed
flows_tomodule_globals#1expr@423analyzer.py:423observed
flows_toelt#1expr@423analyzer.py:423observed
phi_inputelt#1elt#2analyzer.py:421strongly_inferred
phi_inputelt:undefinedelt#2analyzer.py:421unresolved
phi_inputelt#2elt#3analyzer.py:420strongly_inferred
phi_inputelt:undefinedelt#3analyzer.py:420unresolved
phi_inputelt#3elt#4analyzer.py:418strongly_inferred
phi_inputelt:undefinedelt#4analyzer.py:418unresolved
phi_inputelt#4elt#5analyzer.py:417strongly_inferred
phi_inputelt:undefinedelt#5analyzer.py:417unresolved
phi_inputtarget#1target#2analyzer.py:417strongly_inferred
phi_inputtarget:undefinedtarget#2analyzer.py:417unresolved
phi_inputelt#5elt#6analyzer.py:415strongly_inferred
phi_inputelt:undefinedelt#6analyzer.py:415unresolved
phi_inputtarget#2target#3analyzer.py:415strongly_inferred
phi_inputtarget:undefinedtarget#3analyzer.py:415unresolved
phi_inputtargets#1targets#2analyzer.py:415strongly_inferred
phi_inputtargets:undefinedtargets#2analyzer.py:415unresolved
phi_inputelt#6elt#7analyzer.py:414strongly_inferred
phi_inputelt:undefinedelt#7analyzer.py:414unresolved
phi_inputtarget#3target#4analyzer.py:414strongly_inferred
phi_inputtarget:undefinedtarget#4analyzer.py:414unresolved
phi_inputtargets#2targets#3analyzer.py:414strongly_inferred
phi_inputtargets:undefinedtargets#3analyzer.py:414unresolved
phi_inputtop#1top#2analyzer.py:414strongly_inferred
phi_inputtop:undefinedtop#2analyzer.py:414unresolved
flows_torel#1fid#1analyzer.py:425observed
guardstree#1for_loopanalyzer.py:431observed
flows_totree#1n#7analyzer.py:431observed
guardsn#7branchanalyzer.py:432observed
guardsn#7for_loopanalyzer.py:433observed
flows_ton#7alias#1analyzer.py:433observed
phi_inputalias#1alias#2analyzer.py:433strongly_inferred
phi_inputalias:undefinedalias#2analyzer.py:433unresolved
guardsn#7branchanalyzer.py:435observed
flows_tomod#3target_mod#1analyzer.py:436observed
flows_ton#7target_mod#1analyzer.py:436observed
guardsn#7for_loopanalyzer.py:437observed
flows_ton#7alias#3analyzer.py:437observed
phi_inputalias#3alias#4analyzer.py:437strongly_inferred
phi_inputalias:undefinedalias#4analyzer.py:437unresolved
phi_inputalias#4alias#5analyzer.py:435strongly_inferred
phi_inputalias:undefinedalias#5analyzer.py:435unresolved
phi_inputtarget_mod#1target_mod#2analyzer.py:435strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#2analyzer.py:435unresolved
phi_inputalias#2alias#6analyzer.py:432strongly_inferred
phi_inputalias#5alias#6analyzer.py:432strongly_inferred
phi_inputtarget_mod#2target_mod#3analyzer.py:432strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#3analyzer.py:432unresolved
phi_inputalias#6alias#7analyzer.py:431strongly_inferred
phi_inputalias:undefinedalias#7analyzer.py:431unresolved
phi_inputn#3n#8analyzer.py:431strongly_inferred
phi_inputn#7n#8analyzer.py:431strongly_inferred
phi_inputtarget_mod#3target_mod#4analyzer.py:431strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#4analyzer.py:431unresolved
guardstree#1for_loopanalyzer.py:441observed
flows_totree#1n#9analyzer.py:441observed
guardsn#9branchanalyzer.py:442observed
flows_torel#1sid#1analyzer.py:443observed
flows_ton#9sid#1analyzer.py:443observed
flows_tosid#1_fresh#1analyzer.py:444observed
flows_ton#9_fresh#1analyzer.py:444observed
flows_torel#1_fresh#1analyzer.py:444observed
flows_tomod#3_fresh#1analyzer.py:444observed
flows_ton#9_fresh#1analyzer.py:445observed
flows_torel#1_fresh#1analyzer.py:446observed
flows_ton#9_fresh#1analyzer.py:446observed
flows_toh#1_fresh#1analyzer.py:446observed
guardsreuse_mode#1branchanalyzer.py:447observed
guardsrel#1branchanalyzer.py:447observed
guardsdirty_set#1branchanalyzer.py:447observed
guardssid#1branchanalyzer.py:447observed
guardsnodes#3branchanalyzer.py:447observed
flows_tonodes#3expr@448analyzer.py:448observed
flows_tosid#1expr@448analyzer.py:448observed
flows_to_fresh#1expr@448analyzer.py:448observed
flows_tosimple_defs#1expr@451analyzer.py:451observed
flows_ton#9expr@451analyzer.py:451observed
flows_tosid#1expr@451analyzer.py:451observed
flows_toedges#3expr@452analyzer.py:452observed
flows_tofid#1expr@452analyzer.py:452observed
flows_tosid#1expr@452analyzer.py:452observed
flows_torel#1expr@452analyzer.py:454observed
flows_ton#9expr@452analyzer.py:454observed
flows_toh#1expr@452analyzer.py:454observed
flows_ton#9shape_sig#1analyzer.py:455observed
flows_toshapes#1expr@457analyzer.py:457observed
flows_toshape_sig#1expr@457analyzer.py:457observed
flows_torel#1expr@457analyzer.py:457observed
flows_ton#9expr@457analyzer.py:457observed
flows_tofunctions#1expr@458analyzer.py:458observed
flows_tosid#1expr@458analyzer.py:458observed
flows_ton#9expr@458analyzer.py:458observed
flows_torel#1expr@458analyzer.py:458observed
flows_tomod#3expr@458analyzer.py:458observed
guardsn#9branchanalyzer.py:459observed
flows_torel#1cid#1analyzer.py:460observed
flows_ton#9cid#1analyzer.py:460observed
flows_tosimple_defs#1expr@464analyzer.py:464observed
flows_ton#9expr@464analyzer.py:464observed
flows_tocid#1expr@464analyzer.py:464observed
flows_toedges#3expr@465analyzer.py:465observed
flows_tofid#1expr@465analyzer.py:465observed
flows_tocid#1expr@465analyzer.py:465observed
flows_torel#1expr@465analyzer.py:467observed
flows_ton#9expr@465analyzer.py:467observed
flows_toh#1expr@465analyzer.py:467observed
guardsn#9for_loopanalyzer.py:468observed
flows_ton#9item#1analyzer.py:468observed
guardsitem#1branchanalyzer.py:469observed
flows_ton#9qname#1analyzer.py:470observed
flows_toitem#1qname#1analyzer.py:470observed
flows_torel#1mid#1analyzer.py:471observed
flows_toqname#1mid#1analyzer.py:471observed
flows_tomid#1_fresh#2analyzer.py:472observed
flows_toqname#1_fresh#2analyzer.py:472observed
flows_torel#1_fresh#2analyzer.py:472observed
flows_tomod#3_fresh#2analyzer.py:472observed
flows_toqname#1_fresh#2analyzer.py:473observed
flows_toitem#1_fresh#2analyzer.py:473observed
flows_torel#1_fresh#2analyzer.py:474observed
flows_toitem#1_fresh#2analyzer.py:474observed
flows_toh#1_fresh#2analyzer.py:474observed
guardsreuse_mode#1branchanalyzer.py:475observed
guardsrel#1branchanalyzer.py:475observed
guardsdirty_set#1branchanalyzer.py:475observed
guardsmid#1branchanalyzer.py:475observed
guardsnodes#3branchanalyzer.py:475observed
flows_tonodes#3expr@476analyzer.py:476observed
flows_tomid#1expr@476analyzer.py:476observed
flows_to_fresh#2expr@476analyzer.py:476observed
flows_tosimple_defs#1expr@479analyzer.py:479observed
flows_toitem#1expr@479analyzer.py:479observed
flows_tomid#1expr@479analyzer.py:479observed
flows_toedges#3expr@480analyzer.py:480observed
flows_tocid#1expr@480analyzer.py:480observed
flows_tomid#1expr@480analyzer.py:480observed
flows_torel#1expr@480analyzer.py:482observed
flows_toitem#1expr@480analyzer.py:482observed
flows_toh#1expr@480analyzer.py:482observed
flows_toitem#1shape_sig#2analyzer.py:483observed
flows_toshapes#1expr@485analyzer.py:485observed
flows_toshape_sig#2expr@485analyzer.py:485observed
flows_torel#1expr@485analyzer.py:485observed
flows_toqname#1expr@485analyzer.py:485observed
flows_toitem#1expr@485analyzer.py:485observed
flows_tofunctions#1expr@486analyzer.py:486observed
flows_tomid#1expr@486analyzer.py:486observed
flows_toitem#1expr@486analyzer.py:486observed
flows_toqname#1expr@486analyzer.py:486observed
flows_ton#9expr@486analyzer.py:486observed
flows_torel#1expr@486analyzer.py:486observed
flows_tomod#3expr@486analyzer.py:486observed
phi_input_fresh#2_fresh#3analyzer.py:469strongly_inferred
phi_input_fresh:undefined_fresh#3analyzer.py:469unresolved
phi_inputmid#1mid#2analyzer.py:469strongly_inferred
phi_inputmid:undefinedmid#2analyzer.py:469unresolved
phi_inputqname#1qname#2analyzer.py:469strongly_inferred
phi_inputqname:undefinedqname#2analyzer.py:469unresolved
phi_inputshape_sig#2shape_sig#3analyzer.py:469strongly_inferred
phi_inputshape_sig:undefinedshape_sig#3analyzer.py:469unresolved
phi_input_fresh#3_fresh#4analyzer.py:468strongly_inferred
phi_input_fresh:undefined_fresh#4analyzer.py:468unresolved
phi_inputitem#1item#2analyzer.py:468strongly_inferred
phi_inputitem:undefineditem#2analyzer.py:468unresolved
phi_inputmid#2mid#3analyzer.py:468strongly_inferred
phi_inputmid:undefinedmid#3analyzer.py:468unresolved
phi_inputqname#2qname#3analyzer.py:468strongly_inferred
phi_inputqname:undefinedqname#3analyzer.py:468unresolved
phi_inputshape_sig#3shape_sig#4analyzer.py:468strongly_inferred
phi_inputshape_sig:undefinedshape_sig#4analyzer.py:468unresolved
phi_input_fresh#4_fresh#5analyzer.py:459strongly_inferred
phi_input_fresh:undefined_fresh#5analyzer.py:459unresolved
phi_inputcid#1cid#2analyzer.py:459strongly_inferred
phi_inputcid:undefinedcid#2analyzer.py:459unresolved
phi_inputitem#2item#3analyzer.py:459strongly_inferred
phi_inputitem:undefineditem#3analyzer.py:459unresolved
phi_inputmid#3mid#4analyzer.py:459strongly_inferred
phi_inputmid:undefinedmid#4analyzer.py:459unresolved
phi_inputqname#3qname#4analyzer.py:459strongly_inferred
phi_inputqname:undefinedqname#4analyzer.py:459unresolved
phi_inputshape_sig#4shape_sig#5analyzer.py:459strongly_inferred
phi_inputshape_sig:undefinedshape_sig#5analyzer.py:459unresolved
phi_input_fresh#5_fresh#6analyzer.py:442strongly_inferred
phi_input_fresh#1_fresh#6analyzer.py:442strongly_inferred
phi_inputcid#2cid#3analyzer.py:442strongly_inferred
phi_inputcid:undefinedcid#3analyzer.py:442unresolved
phi_inputitem#3item#4analyzer.py:442strongly_inferred
phi_inputitem:undefineditem#4analyzer.py:442unresolved
phi_inputmid#4mid#5analyzer.py:442strongly_inferred
phi_inputmid:undefinedmid#5analyzer.py:442unresolved
phi_inputqname#4qname#5analyzer.py:442strongly_inferred
phi_inputqname:undefinedqname#5analyzer.py:442unresolved
phi_inputshape_sig#1shape_sig#6analyzer.py:442strongly_inferred
phi_inputshape_sig#5shape_sig#6analyzer.py:442strongly_inferred
phi_inputsid#1sid#2analyzer.py:442strongly_inferred
phi_inputsid:undefinedsid#2analyzer.py:442unresolved
phi_input_fresh#6_fresh#7analyzer.py:441strongly_inferred
phi_input_fresh:undefined_fresh#7analyzer.py:441unresolved
phi_inputcid#3cid#4analyzer.py:441strongly_inferred
phi_inputcid:undefinedcid#4analyzer.py:441unresolved
phi_inputitem#4item#5analyzer.py:441strongly_inferred
phi_inputitem:undefineditem#5analyzer.py:441unresolved
phi_inputmid#5mid#6analyzer.py:441strongly_inferred
phi_inputmid:undefinedmid#6analyzer.py:441unresolved
phi_inputn#9n#10analyzer.py:441strongly_inferred
phi_inputn#8n#10analyzer.py:441strongly_inferred
phi_inputqname#5qname#6analyzer.py:441strongly_inferred
phi_inputqname:undefinedqname#6analyzer.py:441unresolved
phi_inputshape_sig#6shape_sig#7analyzer.py:441strongly_inferred
phi_inputshape_sig:undefinedshape_sig#7analyzer.py:441unresolved
phi_inputsid#2sid#3analyzer.py:441strongly_inferred
phi_inputsid:undefinedsid#3analyzer.py:441unresolved
phi_input_fresh#7_fresh#8analyzer.py:377strongly_inferred
phi_input_fresh:undefined_fresh#8analyzer.py:377unresolved
phi_inputalias#7alias#8analyzer.py:377strongly_inferred
phi_inputalias:undefinedalias#8analyzer.py:377unresolved
phi_inputcid#4cid#5analyzer.py:377strongly_inferred
phi_inputcid:undefinedcid#5analyzer.py:377unresolved
phi_inputelt#7elt#8analyzer.py:377strongly_inferred
phi_inputelt:undefinedelt#8analyzer.py:377unresolved
phi_inputfid#1fid#2analyzer.py:377strongly_inferred
phi_inputfid:undefinedfid#2analyzer.py:377unresolved
phi_inputh#1h#2analyzer.py:377strongly_inferred
phi_inputh:undefinedh#2analyzer.py:377unresolved
phi_inputimport_map#1import_map#2analyzer.py:377strongly_inferred
phi_inputimport_map:undefinedimport_map#2analyzer.py:377unresolved
phi_inputitem#5item#6analyzer.py:377strongly_inferred
phi_inputitem:undefineditem#6analyzer.py:377unresolved
phi_inputmid#6mid#7analyzer.py:377strongly_inferred
phi_inputmid:undefinedmid#7analyzer.py:377unresolved
phi_inputmod#3mod#4analyzer.py:377strongly_inferred
phi_inputmod:undefinedmod#4analyzer.py:377unresolved
phi_inputmodule_globals#1module_globals#2analyzer.py:377strongly_inferred
phi_inputmodule_globals:undefinedmodule_globals#2analyzer.py:377unresolved
phi_inputn#3n#11analyzer.py:377strongly_inferred
phi_inputn#10n#11analyzer.py:377strongly_inferred
phi_inputpath#1path#2analyzer.py:377strongly_inferred
phi_inputpath:undefinedpath#2analyzer.py:377unresolved
phi_inputqname#6qname#7analyzer.py:377strongly_inferred
phi_inputqname:undefinedqname#7analyzer.py:377unresolved
phi_inputrel#1rel#2analyzer.py:377strongly_inferred
phi_inputrel:undefinedrel#2analyzer.py:377unresolved
phi_inputshape_sig#7shape_sig#8analyzer.py:377strongly_inferred
phi_inputshape_sig:undefinedshape_sig#8analyzer.py:377unresolved
phi_inputsid#3sid#4analyzer.py:377strongly_inferred
phi_inputsid:undefinedsid#4analyzer.py:377unresolved
phi_inputskip_reason#1skip_reason#2analyzer.py:377strongly_inferred
phi_inputskip_reason:undefinedskip_reason#2analyzer.py:377unresolved
phi_inputtarget#4target#5analyzer.py:377strongly_inferred
phi_inputtarget:undefinedtarget#5analyzer.py:377unresolved
phi_inputtarget_mod#4target_mod#5analyzer.py:377strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#5analyzer.py:377unresolved
phi_inputtargets#3targets#4analyzer.py:377strongly_inferred
phi_inputtargets:undefinedtargets#4analyzer.py:377unresolved
phi_inputtext#1text#2analyzer.py:377strongly_inferred
phi_inputtext:undefinedtext#2analyzer.py:377unresolved
phi_inputtop#2top#3analyzer.py:377strongly_inferred
phi_inputtop:undefinedtop#3analyzer.py:377unresolved
phi_inputtree#1tree#2analyzer.py:377strongly_inferred
phi_inputtree:undefinedtree#2analyzer.py:377unresolved
guardsfiles#1for_loopanalyzer.py:489observed
flows_tofiles#1rel#3analyzer.py:489observed
flows_tofiles#1meta#1analyzer.py:489observed
guardsreuse_mode#1branchanalyzer.py:490observed
guardsrel#3branchanalyzer.py:490observed
guardsdirty_set#1branchanalyzer.py:490observed
flows_tometa#1mod#5analyzer.py:492observed
flows_torel#3fid#3analyzer.py:492observed
flows_tometa#1h#3analyzer.py:492observed
guardsmeta#1for_loopanalyzer.py:493observed
flows_tometa#1n#12analyzer.py:493observed
guardsn#12branchanalyzer.py:494observed
flows_ton#12targets#5analyzer.py:495observed
guardsn#12branchanalyzer.py:496observed
flows_tomod#5targets#6analyzer.py:497observed
flows_ton#12targets#6analyzer.py:497observed
phi_inputtargets#6targets#7analyzer.py:494strongly_inferred
phi_inputtargets#5targets#7analyzer.py:494strongly_inferred
guardstargets#7for_loopanalyzer.py:500observed
flows_totargets#7target_mod#6analyzer.py:500observed
aliases_at_definitiontargets#7target_mod#6analyzer.py:500observed
flows_totargets#7line#1analyzer.py:500observed
aliases_at_definitiontargets#7line#1analyzer.py:500observed
guardstarget_mod#6branchanalyzer.py:501observed
guardsmodule_to_file#1branchanalyzer.py:501observed
flows_tomodule_to_file#1tid#1analyzer.py:502observed
flows_totarget_mod#6tid#1analyzer.py:502observed
flows_totarget_mod#6tid#2analyzer.py:504observed
flows_tonodes#3expr@505analyzer.py:505observed
flows_totid#2expr@505analyzer.py:505observed
flows_totarget_mod#6expr@505analyzer.py:505observed
phi_inputresolution#2resolution#3analyzer.py:501strongly_inferred
phi_inputresolution#1resolution#3analyzer.py:501strongly_inferred
phi_inputtid#2tid#3analyzer.py:501strongly_inferred
phi_inputtid#1tid#3analyzer.py:501strongly_inferred
flows_toedges#3expr@508analyzer.py:508observed
flows_tofid#3expr@508analyzer.py:508observed
flows_totid#3expr@508analyzer.py:508observed
flows_toline#1expr@508analyzer.py:508observed
flows_toresolution#3expr@508analyzer.py:509observed
flows_toresolution#3expr@508analyzer.py:510observed
flows_torel#3expr@508analyzer.py:511observed
flows_toline#1expr@508analyzer.py:511observed
flows_toh#3expr@508analyzer.py:511observed
phi_inputline#1line#2analyzer.py:500strongly_inferred
phi_inputline:undefinedline#2analyzer.py:500unresolved
phi_inputresolution#3resolution#4analyzer.py:500strongly_inferred
phi_inputresolution:undefinedresolution#4analyzer.py:500unresolved
phi_inputtarget_mod#5target_mod#7analyzer.py:500strongly_inferred
phi_inputtarget_mod#6target_mod#7analyzer.py:500strongly_inferred
phi_inputtid#3tid#4analyzer.py:500strongly_inferred
phi_inputtid:undefinedtid#4analyzer.py:500unresolved
phi_inputline#2line#3analyzer.py:493strongly_inferred
phi_inputline:undefinedline#3analyzer.py:493unresolved
phi_inputn#12n#13analyzer.py:493strongly_inferred
phi_inputn#11n#13analyzer.py:493strongly_inferred
phi_inputresolution#4resolution#5analyzer.py:493strongly_inferred
phi_inputresolution:undefinedresolution#5analyzer.py:493unresolved
phi_inputtarget_mod#5target_mod#8analyzer.py:493strongly_inferred
phi_inputtarget_mod#7target_mod#8analyzer.py:493strongly_inferred
phi_inputtargets#4targets#8analyzer.py:493strongly_inferred
phi_inputtargets#7targets#8analyzer.py:493strongly_inferred
phi_inputtid#4tid#5analyzer.py:493strongly_inferred
phi_inputtid:undefinedtid#5analyzer.py:493unresolved
phi_inputfid#3fid#4analyzer.py:489strongly_inferred
phi_inputfid#2fid#4analyzer.py:489strongly_inferred
phi_inputh#2h#4analyzer.py:489strongly_inferred
phi_inputh#3h#4analyzer.py:489strongly_inferred
phi_inputline#3line#4analyzer.py:489strongly_inferred
phi_inputline:undefinedline#4analyzer.py:489unresolved
phi_inputmeta#1meta#2analyzer.py:489strongly_inferred
phi_inputmeta:undefinedmeta#2analyzer.py:489unresolved
phi_inputmod#5mod#6analyzer.py:489strongly_inferred
phi_inputmod#4mod#6analyzer.py:489strongly_inferred
phi_inputn#11n#14analyzer.py:489strongly_inferred
phi_inputn#13n#14analyzer.py:489strongly_inferred
phi_inputrel#2rel#4analyzer.py:489strongly_inferred
phi_inputrel#3rel#4analyzer.py:489strongly_inferred
phi_inputresolution#5resolution#6analyzer.py:489strongly_inferred
phi_inputresolution:undefinedresolution#6analyzer.py:489unresolved
phi_inputtarget_mod#5target_mod#9analyzer.py:489strongly_inferred
phi_inputtarget_mod#8target_mod#9analyzer.py:489strongly_inferred
phi_inputtargets#4targets#9analyzer.py:489strongly_inferred
phi_inputtargets#8targets#9analyzer.py:489strongly_inferred
phi_inputtid#5tid#6analyzer.py:489strongly_inferred
phi_inputtid:undefinedtid#6analyzer.py:489unresolved
flows_tonodes#3function_features#1analyzer.py:516observed
guardsfunctions#1for_loopanalyzer.py:520observed
flows_tofunctions#1info#1analyzer.py:520observed
aliases_at_definitionfunctions#1info#1analyzer.py:520observed
flows_toinfo#1fn#1analyzer.py:521observed
flows_toinfo#1rel#5analyzer.py:521observed
flows_toinfo#1mod#7analyzer.py:521observed
flows_toinfo#1qname#8analyzer.py:521observed
flows_toinfo#1owner_id#1analyzer.py:521observed
flows_toinfo#1class_name#1analyzer.py:521observed
guardsreuse_mode#1branchanalyzer.py:522observed
guardsrel#5branchanalyzer.py:522observed
guardsdirty_set#1branchanalyzer.py:522observed
flows_tofiles#1h#5analyzer.py:524observed
flows_torel#5h#5analyzer.py:524observed
flows_toimports_by_module#1import_map#3analyzer.py:524observed
flows_tomod#7import_map#3analyzer.py:524observed
flows_tofn#1defaults#1analyzer.py:525observed
guardsdefaults#1for_loopanalyzer.py:526observed
flows_todefaults#1d#1analyzer.py:526observed
aliases_at_definitiondefaults#1d#1analyzer.py:526observed
guardsd#1branchanalyzer.py:527observed
flows_tofindings#3expr@528analyzer.py:528observed
flows_torel#5expr@528analyzer.py:528observed
flows_toqname#8expr@528analyzer.py:529observed
flows_tofn#1expr@528analyzer.py:529observed
phi_inputd#1d#2analyzer.py:526strongly_inferred
phi_inputd:undefinedd#2analyzer.py:526unresolved
flows_tofindings#3expr@531analyzer.py:531observed
flows_tofn#1expr@531analyzer.py:531observed
flows_torel#5expr@531analyzer.py:531observed
flows_toqname#8expr@531analyzer.py:531observed
flows_torel#5scan#1analyzer.py:532observed
flows_toqname#8scan#1analyzer.py:532observed
guardsfn#1for_loopanalyzer.py:533observed
flows_tofn#1st#1analyzer.py:533observed
flows_toscan#1expr@534analyzer.py:534observed
flows_tost#1expr@534analyzer.py:534observed
phi_inputst#1st#2analyzer.py:533strongly_inferred
phi_inputst:undefinedst#2analyzer.py:533unresolved
guardsscan#1for_loopanalyzer.py:535observed
flows_toscan#1issue#1analyzer.py:535observed
flows_tofindings#3expr@536analyzer.py:536observed
flows_torel#5expr@536analyzer.py:536observed
flows_toqname#8expr@536analyzer.py:536observed
flows_toissue#1expr@536analyzer.py:536observed
phi_inputissue#1issue#2analyzer.py:535strongly_inferred
phi_inputissue:undefinedissue#2analyzer.py:535unresolved
guardsscan#1for_loopanalyzer.py:539observed
flows_toscan#1ctrl#1analyzer.py:539observed
flows_torel#5cid#6analyzer.py:540observed
flows_toqname#8cid#6analyzer.py:540observed
flows_toctrl#1cid#6analyzer.py:540observed
flows_toedges#3expr@544analyzer.py:544observed
flows_toowner_id#1expr@544analyzer.py:544observed
flows_tocid#6expr@544analyzer.py:544observed
flows_torel#5expr@544analyzer.py:546observed
flows_toctrl#1expr@544analyzer.py:546observed
flows_toh#5expr@544analyzer.py:546observed
flows_tofeature#1expr@547analyzer.py:547observed
flows_toctrl#1expr@547analyzer.py:547observed
phi_inputcid#6cid#7analyzer.py:539strongly_inferred
phi_inputcid#5cid#7analyzer.py:539strongly_inferred
phi_inputctrl#1ctrl#2analyzer.py:539strongly_inferred
phi_inputctrl:undefinedctrl#2analyzer.py:539unresolved
flows_tofn#1closure#1analyzer.py:551observed
flows_torel#5closure#1analyzer.py:551observed
flows_toqname#8closure#1analyzer.py:551observed
flows_toowner_id#1closure#1analyzer.py:551observed
flows_toh#5closure#1analyzer.py:551observed
flows_tomod#7closure#1analyzer.py:551observed
flows_toclass_name#1closure#1analyzer.py:551observed
flows_tofiles#1closure#1analyzer.py:552observed
flows_torel#5closure#1analyzer.py:552observed
guardsclosure#1for_loopanalyzer.py:554observed
flows_toclosure#1n#15analyzer.py:554observed
flows_tonodes#3expr@555analyzer.py:555observed
flows_ton#15expr@555analyzer.py:555observed
phi_inputn#15n#16analyzer.py:554strongly_inferred
phi_inputn#14n#16analyzer.py:554strongly_inferred
flows_toedges#3expr@556analyzer.py:556observed
flows_toclosure#1expr@556analyzer.py:556observed
flows_tofindings#3expr@557analyzer.py:557observed
flows_toclosure#1expr@557analyzer.py:557observed
flows_toclosure#1csum#1analyzer.py:558observed
guardsscan#1for_loopanalyzer.py:566observed
flows_toscan#1ef#1analyzer.py:566observed
flows_toef#1eid#1analyzer.py:567observed
flows_tonodes#3expr@568analyzer.py:568observed
flows_toeid#1expr@568analyzer.py:568observed
flows_toef#1expr@568analyzer.py:568observed
flows_toedges#3expr@569analyzer.py:569observed
flows_toowner_id#1expr@569analyzer.py:569observed
flows_toeid#1expr@569analyzer.py:569observed
flows_toef#1expr@569analyzer.py:569observed
flows_toeid#1expr@569analyzer.py:570observed
flows_toef#1expr@569analyzer.py:570observed
flows_torel#5expr@569analyzer.py:571observed
flows_toef#1expr@569analyzer.py:571observed
flows_toh#5expr@569analyzer.py:571observed
flows_tofeature#1expr@572analyzer.py:572observed
flows_toef#1expr@572analyzer.py:572observed
phi_inputef#1ef#2analyzer.py:566strongly_inferred
phi_inputef:undefinedef#2analyzer.py:566unresolved
phi_inputeid#1eid#2analyzer.py:566strongly_inferred
phi_inputeid:undefinedeid#2analyzer.py:566unresolved
guardsscan#1for_loopanalyzer.py:574observed
flows_toscan#1call#1analyzer.py:574observed
flows_tocall#1callee#1analyzer.py:575observed
guardscallee#1branchanalyzer.py:576observed
guardsmod#7branchanalyzer.py:577observed
guardscallee#1branchanalyzer.py:577observed
guardsdefinitions#1branchanalyzer.py:577observed
flows_todefinitions#1target_id#2analyzer.py:578observed
flows_tomod#7target_id#2analyzer.py:578observed
flows_tocallee#1target_id#2analyzer.py:578observed
guardscallee#1branchanalyzer.py:579observed
guardsimport_map#3branchanalyzer.py:579observed
flows_toimport_map#3im#1analyzer.py:580observed
flows_tocallee#1im#1analyzer.py:580observed
flows_toimport_map#3sym#1analyzer.py:580observed
flows_tocallee#1sym#1analyzer.py:580observed
guardssym#1branchanalyzer.py:581observed
guardsim#1branchanalyzer.py:581observed
guardsdefinitions#1branchanalyzer.py:581observed
flows_todefinitions#1target_id#3analyzer.py:582observed
flows_toim#1target_id#3analyzer.py:582observed
flows_tosym#1target_id#3analyzer.py:582observed
phi_inputresolution#9resolution#10analyzer.py:581strongly_inferred
phi_inputresolution#7resolution#10analyzer.py:581strongly_inferred
phi_inputtarget_id#3target_id#4analyzer.py:581strongly_inferred
phi_inputtarget_id#1target_id#4analyzer.py:581strongly_inferred
phi_inputim#1im#2analyzer.py:579strongly_inferred
phi_inputim:undefinedim#2analyzer.py:579unresolved
phi_inputresolution#10resolution#11analyzer.py:579strongly_inferred
phi_inputresolution#7resolution#11analyzer.py:579strongly_inferred
phi_inputsym#1sym#2analyzer.py:579strongly_inferred
phi_inputsym:undefinedsym#2analyzer.py:579unresolved
phi_inputtarget_id#4target_id#5analyzer.py:579strongly_inferred
phi_inputtarget_id#1target_id#5analyzer.py:579strongly_inferred
phi_inputim#2im#3analyzer.py:577strongly_inferred
phi_inputim:undefinedim#3analyzer.py:577unresolved
phi_inputresolution#11resolution#12analyzer.py:577strongly_inferred
phi_inputresolution#8resolution#12analyzer.py:577strongly_inferred
phi_inputsym#2sym#3analyzer.py:577strongly_inferred
phi_inputsym:undefinedsym#3analyzer.py:577unresolved
phi_inputtarget_id#5target_id#6analyzer.py:577strongly_inferred
phi_inputtarget_id#2target_id#6analyzer.py:577strongly_inferred
flows_tocallee#1head#1analyzer.py:584observed
flows_tocallee#1tail#1analyzer.py:584observed
guardshead#1branchanalyzer.py:585observed
guardsimport_map#3branchanalyzer.py:585observed
flows_toimport_map#3im#4analyzer.py:586observed
flows_tohead#1im#4analyzer.py:586observed
flows_toimport_map#3sym#4analyzer.py:586observed
flows_tohead#1sym#4analyzer.py:586observed
flows_tosym#4candidate#1analyzer.py:587observed
flows_totail#1candidate#1analyzer.py:587observed
guardsim#4branchanalyzer.py:588observed
guardscandidate#1branchanalyzer.py:588observed
guardsdefinitions#1branchanalyzer.py:588observed
flows_todefinitions#1target_id#7analyzer.py:589observed
flows_toim#4target_id#7analyzer.py:589observed
flows_tocandidate#1target_id#7analyzer.py:589observed
phi_inputresolution#13resolution#14analyzer.py:588strongly_inferred
phi_inputresolution#7resolution#14analyzer.py:588strongly_inferred
phi_inputtarget_id#7target_id#8analyzer.py:588strongly_inferred
phi_inputtarget_id#1target_id#8analyzer.py:588strongly_inferred
phi_inputcandidate#1candidate#2analyzer.py:585strongly_inferred
phi_inputcandidate:undefinedcandidate#2analyzer.py:585unresolved
phi_inputim#4im#5analyzer.py:585strongly_inferred
phi_inputim:undefinedim#5analyzer.py:585unresolved
phi_inputresolution#14resolution#15analyzer.py:585strongly_inferred
phi_inputresolution#7resolution#15analyzer.py:585strongly_inferred
phi_inputsym#4sym#5analyzer.py:585strongly_inferred
phi_inputsym:undefinedsym#5analyzer.py:585unresolved
phi_inputtarget_id#1target_id#9analyzer.py:585strongly_inferred
phi_inputtarget_id#8target_id#9analyzer.py:585strongly_inferred
guardshead#1branchanalyzer.py:590observed
guardsclass_name#1branchanalyzer.py:590observed
guardsmod#7branchanalyzer.py:590observed
guardstail#1branchanalyzer.py:590observed
guardsdefinitions#1branchanalyzer.py:590observed
flows_todefinitions#1target_id#10analyzer.py:591observed
flows_tomod#7target_id#10analyzer.py:591observed
flows_toclass_name#1target_id#10analyzer.py:591observed
flows_totail#1target_id#10analyzer.py:591observed
phi_inputresolution#15resolution#17analyzer.py:590strongly_inferred
phi_inputresolution#16resolution#17analyzer.py:590strongly_inferred
phi_inputtarget_id#9target_id#11analyzer.py:590strongly_inferred
phi_inputtarget_id#10target_id#11analyzer.py:590strongly_inferred
phi_inputcandidate#2candidate#3analyzer.py:576strongly_inferred
phi_inputcandidate:undefinedcandidate#3analyzer.py:576unresolved
phi_inputhead#1head#2analyzer.py:576strongly_inferred
phi_inputhead:undefinedhead#2analyzer.py:576unresolved
phi_inputim#3im#6analyzer.py:576strongly_inferred
phi_inputim#5im#6analyzer.py:576strongly_inferred
phi_inputresolution#17resolution#18analyzer.py:576strongly_inferred
phi_inputresolution#12resolution#18analyzer.py:576strongly_inferred
phi_inputsym#3sym#6analyzer.py:576strongly_inferred
phi_inputsym#5sym#6analyzer.py:576strongly_inferred
phi_inputtail#1tail#2analyzer.py:576strongly_inferred
phi_inputtail:undefinedtail#2analyzer.py:576unresolved
phi_inputtarget_id#11target_id#12analyzer.py:576strongly_inferred
phi_inputtarget_id#6target_id#12analyzer.py:576strongly_inferred
guardstarget_id#12branchanalyzer.py:592observed
flows_tocallee#1target_id#13analyzer.py:593observed
flows_tonodes#3expr@594analyzer.py:594observed
flows_totarget_id#13expr@594analyzer.py:594observed
flows_tocallee#1expr@594analyzer.py:594observed
phi_inputtarget_id#13target_id#14analyzer.py:592strongly_inferred
phi_inputtarget_id#12target_id#14analyzer.py:592strongly_inferred
flows_toedges#3expr@599analyzer.py:599observed
flows_toowner_id#1expr@599analyzer.py:599observed
flows_totarget_id#14expr@599analyzer.py:599observed
flows_tocall#1expr@599analyzer.py:599observed
flows_totarget_id#14expr@599analyzer.py:600observed
flows_tocallee#1expr@599analyzer.py:600observed
flows_toresolution#18expr@599analyzer.py:600observed
flows_toresolution#18expr@599analyzer.py:601observed
flows_toresolution#18expr@599analyzer.py:602observed
flows_torel#5expr@599analyzer.py:603observed
flows_tocall#1expr@599analyzer.py:603observed
flows_toh#5expr@599analyzer.py:603observed
phi_inputcall#1call#2analyzer.py:574strongly_inferred
phi_inputcall:undefinedcall#2analyzer.py:574unresolved
phi_inputcallee#1callee#2analyzer.py:574strongly_inferred
phi_inputcallee:undefinedcallee#2analyzer.py:574unresolved
phi_inputcandidate#3candidate#4analyzer.py:574strongly_inferred
phi_inputcandidate:undefinedcandidate#4analyzer.py:574unresolved
phi_inputhead#2head#3analyzer.py:574strongly_inferred
phi_inputhead:undefinedhead#3analyzer.py:574unresolved
phi_inputim#6im#7analyzer.py:574strongly_inferred
phi_inputim:undefinedim#7analyzer.py:574unresolved
phi_inputresolution#18resolution#19analyzer.py:574strongly_inferred
phi_inputresolution#6resolution#19analyzer.py:574strongly_inferred
phi_inputsym#6sym#7analyzer.py:574strongly_inferred
phi_inputsym:undefinedsym#7analyzer.py:574unresolved
phi_inputtail#2tail#3analyzer.py:574strongly_inferred
phi_inputtail:undefinedtail#3analyzer.py:574unresolved
phi_inputtarget_id#14target_id#15analyzer.py:574strongly_inferred
phi_inputtarget_id:undefinedtarget_id#15analyzer.py:574unresolved
flows_tofeature#1sig#1analyzer.py:606observed
flows_tofeature#1coarse_sig#1analyzer.py:607observed
guardsfeature#1for_loopanalyzer.py:611observed
flows_tofeature#1m#1analyzer.py:611observed
flows_tomotifs#3expr@612analyzer.py:612observed
flows_toowner_id#1expr@612analyzer.py:612observed
flows_tom#1expr@612analyzer.py:612observed
flows_torel#5expr@612analyzer.py:613observed
flows_toqname#8expr@612analyzer.py:613observed
flows_tom#1expr@612analyzer.py:613observed
phi_inputm#1m#2analyzer.py:611strongly_inferred
phi_inputm:undefinedm#2analyzer.py:611unresolved
phi_inputcall#2call#3analyzer.py:520strongly_inferred
phi_inputcall:undefinedcall#3analyzer.py:520unresolved
phi_inputcallee#2callee#3analyzer.py:520strongly_inferred
phi_inputcallee:undefinedcallee#3analyzer.py:520unresolved
phi_inputcandidate#4candidate#5analyzer.py:520strongly_inferred
phi_inputcandidate:undefinedcandidate#5analyzer.py:520unresolved
phi_inputcid#7cid#8analyzer.py:520strongly_inferred
phi_inputcid#5cid#8analyzer.py:520strongly_inferred
phi_inputclass_name#1class_name#2analyzer.py:520strongly_inferred
phi_inputclass_name:undefinedclass_name#2analyzer.py:520unresolved
phi_inputclosure#1closure#2analyzer.py:520strongly_inferred
phi_inputclosure:undefinedclosure#2analyzer.py:520unresolved
phi_inputcoarse_sig#1coarse_sig#2analyzer.py:520strongly_inferred
phi_inputcoarse_sig:undefinedcoarse_sig#2analyzer.py:520unresolved
phi_inputcsum#1csum#2analyzer.py:520strongly_inferred
phi_inputcsum:undefinedcsum#2analyzer.py:520unresolved
phi_inputctrl#2ctrl#3analyzer.py:520strongly_inferred
phi_inputctrl:undefinedctrl#3analyzer.py:520unresolved
phi_inputd#2d#3analyzer.py:520strongly_inferred
phi_inputd:undefinedd#3analyzer.py:520unresolved
phi_inputdefaults#1defaults#2analyzer.py:520strongly_inferred
phi_inputdefaults:undefineddefaults#2analyzer.py:520unresolved
phi_inputef#2ef#3analyzer.py:520strongly_inferred
phi_inputef:undefinedef#3analyzer.py:520unresolved
phi_inputeid#2eid#3analyzer.py:520strongly_inferred
phi_inputeid:undefinedeid#3analyzer.py:520unresolved
phi_inputfeature#1feature#2analyzer.py:520strongly_inferred
phi_inputfeature:undefinedfeature#2analyzer.py:520unresolved
phi_inputfn#1fn#2analyzer.py:520strongly_inferred
phi_inputfn:undefinedfn#2analyzer.py:520unresolved
phi_inputh#5h#6analyzer.py:520strongly_inferred
phi_inputh#4h#6analyzer.py:520strongly_inferred
phi_inputhead#3head#4analyzer.py:520strongly_inferred
phi_inputhead:undefinedhead#4analyzer.py:520unresolved
phi_inputim#7im#8analyzer.py:520strongly_inferred
phi_inputim:undefinedim#8analyzer.py:520unresolved
phi_inputimport_map#2import_map#4analyzer.py:520strongly_inferred
phi_inputimport_map#3import_map#4analyzer.py:520strongly_inferred
phi_inputinfo#1info#2analyzer.py:520strongly_inferred
phi_inputinfo:undefinedinfo#2analyzer.py:520unresolved
phi_inputissue#2issue#3analyzer.py:520strongly_inferred
phi_inputissue:undefinedissue#3analyzer.py:520unresolved
phi_inputm#2m#3analyzer.py:520strongly_inferred
phi_inputm:undefinedm#3analyzer.py:520unresolved
phi_inputmod#6mod#8analyzer.py:520strongly_inferred
phi_inputmod#7mod#8analyzer.py:520strongly_inferred
phi_inputn#14n#17analyzer.py:520strongly_inferred
phi_inputn#16n#17analyzer.py:520strongly_inferred
phi_inputowner_id#1owner_id#2analyzer.py:520strongly_inferred
phi_inputowner_id:undefinedowner_id#2analyzer.py:520unresolved
phi_inputqname#7qname#9analyzer.py:520strongly_inferred
phi_inputqname#8qname#9analyzer.py:520strongly_inferred
phi_inputrel#5rel#6analyzer.py:520strongly_inferred
phi_inputrel#4rel#6analyzer.py:520strongly_inferred
phi_inputresolution#19resolution#20analyzer.py:520strongly_inferred
phi_inputresolution#6resolution#20analyzer.py:520strongly_inferred
phi_inputscan#1scan#2analyzer.py:520strongly_inferred
phi_inputscan:undefinedscan#2analyzer.py:520unresolved
phi_inputsig#1sig#2analyzer.py:520strongly_inferred
phi_inputsig:undefinedsig#2analyzer.py:520unresolved
phi_inputst#2st#3analyzer.py:520strongly_inferred
phi_inputst:undefinedst#3analyzer.py:520unresolved
phi_inputsym#7sym#8analyzer.py:520strongly_inferred
phi_inputsym:undefinedsym#8analyzer.py:520unresolved
phi_inputtail#3tail#4analyzer.py:520strongly_inferred
phi_inputtail:undefinedtail#4analyzer.py:520unresolved
phi_inputtarget_id#15target_id#16analyzer.py:520strongly_inferred
phi_inputtarget_id:undefinedtarget_id#16analyzer.py:520unresolved
flows_tonodes#3expr@617analyzer.py:617observed
flows_toedges#3expr@617analyzer.py:617observed
guardsnodes#3for_loopanalyzer.py:621observed
flows_tonodes#3nid#4analyzer.py:621observed
flows_tonodes#3n#18analyzer.py:621observed
guardsn#18branchanalyzer.py:622observed
flows_toimport_g#1expr@622analyzer.py:622observed
flows_tonid#4expr@622analyzer.py:622observed
guardsn#18branchanalyzer.py:623observed
flows_tocall_g#1expr@623analyzer.py:623observed
flows_tonid#4expr@623analyzer.py:623observed
phi_inputn#17n#19analyzer.py:621strongly_inferred
phi_inputn#18n#19analyzer.py:621strongly_inferred
phi_inputnid#3nid#5analyzer.py:621strongly_inferred
phi_inputnid#4nid#5analyzer.py:621strongly_inferred
guardsedges#3for_loopanalyzer.py:624observed
flows_toedges#3e#2analyzer.py:624observed
aliases_at_definitionedges#3e#2analyzer.py:624observed
guardse#2branchanalyzer.py:625observed
flows_toimport_g#1expr@625analyzer.py:625observed
flows_toe#2expr@625analyzer.py:625observed
guardse#2branchanalyzer.py:626observed
guardscall_g#1branchanalyzer.py:626observed
flows_tocall_g#1expr@627analyzer.py:627observed
flows_toe#2expr@627analyzer.py:627observed
phi_inpute#2e#3analyzer.py:624strongly_inferred
phi_inpute:undefinede#3analyzer.py:624unresolved
guardsimport_g#1for_loopanalyzer.py:629observed
flows_toimport_g#1cyc#1analyzer.py:629observed
flows_tofindings#3expr@630analyzer.py:630observed
flows_tocyc#1expr@630analyzer.py:630observed
phi_inputcyc#1cyc#2analyzer.py:629strongly_inferred
phi_inputcyc:undefinedcyc#2analyzer.py:629unresolved
guardscall_g#1for_loopanalyzer.py:632observed
flows_tocall_g#1cyc#3analyzer.py:632observed
flows_tofindings#3expr@633analyzer.py:633observed
flows_tocyc#3expr@633analyzer.py:633observed
phi_inputcyc#3cyc#4analyzer.py:632strongly_inferred
phi_inputcyc#2cyc#4analyzer.py:632strongly_inferred
flows_toedges#3out_calls#1analyzer.py:637observed
flows_toedges#3unresolved_calls#1analyzer.py:638observed
guardsout_calls#1for_loopanalyzer.py:639observed
flows_toout_calls#1nid#6analyzer.py:639observed
flows_toout_calls#1count#1analyzer.py:639observed
guardscount#1branchanalyzer.py:640observed
guardsnid#6branchanalyzer.py:640observed
guardsnodes#3branchanalyzer.py:640observed
flows_tonodes#3n#20analyzer.py:641observed
flows_tonid#6n#20analyzer.py:641observed
flows_tofindings#3expr@642analyzer.py:642observed
flows_ton#20expr@642analyzer.py:642observed
flows_ton#20expr@642analyzer.py:643observed
flows_tocount#1expr@642analyzer.py:643observed
phi_inputn#19n#21analyzer.py:640strongly_inferred
phi_inputn#20n#21analyzer.py:640strongly_inferred
guardsunresolved_calls#1branchanalyzer.py:645observed
guardsnid#6branchanalyzer.py:645observed
guardsnodes#3branchanalyzer.py:645observed
flows_tonodes#3n#22analyzer.py:646observed
flows_tonid#6n#22analyzer.py:646observed
flows_tofindings#3expr@647analyzer.py:647observed
flows_ton#22expr@647analyzer.py:647observed
flows_ton#22expr@647analyzer.py:648observed
flows_tounresolved_calls#1expr@647analyzer.py:648observed
flows_tonid#6expr@647analyzer.py:648observed
phi_inputn#21n#23analyzer.py:645strongly_inferred
phi_inputn#22n#23analyzer.py:645strongly_inferred
phi_inputcount#1count#2analyzer.py:639strongly_inferred
phi_inputcount:undefinedcount#2analyzer.py:639unresolved
phi_inputn#23n#24analyzer.py:639strongly_inferred
phi_inputn#19n#24analyzer.py:639strongly_inferred
phi_inputnid#6nid#7analyzer.py:639strongly_inferred
phi_inputnid#5nid#7analyzer.py:639strongly_inferred
guardsedges#3for_loopanalyzer.py:653observed
flows_toedges#3e#4analyzer.py:653observed
aliases_at_definitionedges#3e#4analyzer.py:653observed
guardse#4branchanalyzer.py:654observed
flows_tostate_writers#1expr@655analyzer.py:655observed
flows_toe#4expr@655analyzer.py:655observed
guardse#4branchanalyzer.py:656observed
flows_tostate_readers#1expr@657analyzer.py:657observed
flows_toe#4expr@657analyzer.py:657observed
phi_inpute#4e#5analyzer.py:653strongly_inferred
phi_inpute#3e#5analyzer.py:653strongly_inferred
guardsstate_writers#1for_loopanalyzer.py:658observed
flows_tostate_writers#1sid#5analyzer.py:658observed
flows_tostate_writers#1writers#1analyzer.py:658observed
guardswriters#1branchanalyzer.py:659observed
guardssid#5branchanalyzer.py:659observed
guardsnodes#3branchanalyzer.py:659observed
flows_tofindings#3expr@660analyzer.py:660observed
flows_tonodes#3expr@660analyzer.py:661observed
flows_tosid#5expr@660analyzer.py:661observed
flows_towriters#1expr@660analyzer.py:661observed
phi_inputsid#5sid#6analyzer.py:658strongly_inferred
phi_inputsid#4sid#6analyzer.py:658strongly_inferred
phi_inputwriters#1writers#2analyzer.py:658strongly_inferred
phi_inputwriters:undefinedwriters#2analyzer.py:658unresolved
guardsshapes#1for_loopanalyzer.py:666observed
flows_toshapes#1shape#1analyzer.py:666observed
flows_toshapes#1funcs#1analyzer.py:666observed
guardsfuncs#1branchanalyzer.py:667observed
flows_tofindings#3expr@668analyzer.py:668observed
flows_tofuncs#1expr@668analyzer.py:668observed
phi_inputfuncs#1funcs#2analyzer.py:666strongly_inferred
phi_inputfuncs:undefinedfuncs#2analyzer.py:666unresolved
phi_inputshape#1shape#2analyzer.py:666strongly_inferred
phi_inputshape:undefinedshape#2analyzer.py:666unresolved
guardsfunction_features#1for_loopanalyzer.py:673observed
flows_tofunction_features#1nid#8analyzer.py:673observed
flows_tofunction_features#1feat#1analyzer.py:673observed
flows_tosig_groups#1expr@674analyzer.py:674observed
flows_tofeat#1expr@674analyzer.py:674observed
flows_tonid#8expr@674analyzer.py:674observed
phi_inputfeat#1feat#2analyzer.py:673strongly_inferred
phi_inputfeat:undefinedfeat#2analyzer.py:673unresolved
phi_inputnid#7nid#9analyzer.py:673strongly_inferred
phi_inputnid#8nid#9analyzer.py:673strongly_inferred
guardssig_groups#1for_loopanalyzer.py:676observed
flows_tosig_groups#1sig#3analyzer.py:676observed
flows_tosig_groups#1members#1analyzer.py:676observed
guardsmembers#1branchanalyzer.py:677observed
flows_tomotif_clusters#1expr@679analyzer.py:679observed
flows_tosig#3expr@679analyzer.py:679observed
flows_tomembers#1expr@679analyzer.py:679observed
flows_tomembers#1expr@679analyzer.py:680observed
phi_inputmembers#1members#2analyzer.py:676strongly_inferred
phi_inputmembers:undefinedmembers#2analyzer.py:676unresolved
phi_inputsig#2sig#4analyzer.py:676strongly_inferred
phi_inputsig#3sig#4analyzer.py:676strongly_inferred
flows_tonodes#3type_counts#1analyzer.py:683observed
flows_toedges#3edge_counts#1analyzer.py:684observed
flows_tofindings#3category_counts#1analyzer.py:685observed

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_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:132
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
_preload_reused_graphanalyzer:binding:GLOBAL_RECOMPUTED_FINDINGSanalyzer.py:330
analyzeanalyzer:binding:DATA_EDGE_TYPESanalyzer.py:696
analyzeanalyzer:binding:SCHEMAanalyzer.py:709
analyzeanalyzer:binding:ANALYZER_VERSIONanalyzer.py:710
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: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: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_garbage_collect_shared_nodes0.72five or more unresolved/external calls
boundary_orchestrationanalyzer.py_preload_reused_graph0.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.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_21f990ba2ff92name-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_e3a6d82c57d014name-independent coarse structural feature signature
motif_coarse_ef5db5e5ba383name-independent coarse structural feature signature
motif_coarse_f373ee2a1d219name-independent coarse structural feature signature
motif_coarse_f4a86b4f0a935name-independent coarse structural feature signature
motif_coarse_fca123bd72d612name-independent coarse structural feature signature
motif_coarse_ff49519e01f18name-independent coarse structural feature signature

Per-file SHA-256

PathBytesSHA-256
__init__.py2288f95809c233bb35…
analyzer.py39998755bb1983d3e2bbf…
cache.py121865b39b5cab73a3429…
cli.py1219969e0df9149881b3e…
dataflow.py3918860b2e9a2d349647c…
diff_report.py111378a1f5015f131f580…
git_adapter.py6707cc64d3adcf9b77ce…
impact.py205003221edce2184d0bd…
incremental.py125017e00463ffa65f910…
pr_review.py16350c7be8d3504839023…
product_ui.py31255bdce375e16039f76…
report.py3177882dc411bab501fea…
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