PBSOI CISG MVP v0.7 — Impact Engine

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

13
Files
4305
Nodes
11759
Edges
427
Impact targets
1443
Data values
65
State regions
0
Defects
124
Motifs

MVP pipeline

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

v0.7 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": 4305,
  "edges": 11759,
  "node_types": {
    "file": 13,
    "function": 108,
    "class": 9,
    "method": 78,
    "boundary_module": 22,
    "control": 504,
    "data_value": 1443,
    "state_region": 65,
    "module_binding": 17,
    "data_sink": 207,
    "boundary_call": 434,
    "data_phi": 639,
    "data_use": 420,
    "data_undefined": 310,
    "exception_handler": 18,
    "effect": 2,
    "exception_event": 9,
    "boundary_exception": 7
  },
  "edge_types": {
    "contains": 195,
    "imports": 88,
    "controls": 504,
    "defines": 2082,
    "reads_state": 210,
    "reads_binding": 34,
    "flows_to": 2682,
    "guards": 577,
    "contains_data": 634,
    "calls": 2879,
    "returns_value": 398,
    "phi_input": 1278,
    "contains_exception_handler": 18,
    "writes_state": 66,
    "aliases_at_definition": 42,
    "effect": 46,
    "exception_value": 8,
    "raises": 9,
    "exception_flow": 9
  },
  "resolved_local_calls": 572,
  "boundary_calls": 2307,
  "findings_by_category": {
    "anomaly": 13,
    "hotspot": 119
  },
  "findings_by_severity": {
    "info": 132
  },
  "motif_instances": 124,
  "motif_clusters": 30,
  "data_values": 1443,
  "phi_nodes": 639,
  "data_edges": 7067,
  "alias_edges": 42,
  "state_regions": 65,
  "state_reads": 210,
  "state_writes": 66,
  "module_binding_reads": 34,
  "exception_handlers": 18,
  "explicit_raises": 9,
  "unresolved_local_uses": 0,
  "warnings": 0
}

Highest review breadth

KindTargetReview breadthPath
function549cli.py
function222impact.py
function214impact.py
function194cli.py
function191semantic_diff.py
function184impact.py
function173product_ui.py
function172report.py
function170cache.py
function163semantic_diff.py
function158pr_review.py
function154analyzer.py
function153impact.py
function148product_ui.py
function147report.py
function147pr_review.py
function138report.py
function138product_ui.py
function124product_ui.py
function114analyzer.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 207 of 208 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": 610, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "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": 29, "end_line": 45, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 50, "end_line": 55, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "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": 58, "end_line": 60, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 63, "end_line": 64, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 67, "end_line": 72, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 75, "end_line": 85, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 88, "end_line": 99, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 102, "end_line": 118, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 121, "end_line": 183, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "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": 122, "end_line": 130, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 132, "end_line": 134, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 136, "end_line": 136, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 137, "end_line": 137, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 138, "end_line": 138, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 139, "end_line": 139, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 140, "end_line": 140, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 141, "end_line": 141, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 142, "end_line": 142, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 144, "end_line": 153, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 155, "end_line": 161, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 163, "end_line": 167, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 169, "end_line": 173, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 175, "end_line": 178, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 180, "end_line": 183, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 186, "end_line": 206, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 209, "end_line": 230, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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}}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": 233, "end_line": 243, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 245, "end_line": 260, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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": 263, "end_line": 284, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "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}}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": 287, "end_line": 610, "source_hash": "cbc52645654f429d7b046b989bd8a16fa0988d4e905814f2d0424f4248b1527a", "source_kind": "code"}, "motif_signature": "motif_exact_f35632d1f464", "motif_coarse_signature": "motif_coarse_71bf8330f5e4", "features": {"controls": ["for_loop", "branch", "try", "branch", "try", "for_loop", "branch", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "for_loop", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch", "for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "branch", "for_loop", "for_loop", "for_loop", "branch", "branch", "for_loop", "branch", "branch", "for_loop", "branch", "for_loop", "branch", "for_loop", "for_loop", "branch"], "effects": ["file_io"], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 44, "boundary_calls": 189}}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": 283, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "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": 17, "end_line": 19, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 22, "end_line": 29, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 32, "end_line": 33, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 36, "end_line": 44, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 47, "end_line": 81, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 84, "end_line": 88, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 91, "end_line": 93, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 96, "end_line": 153, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "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": 97, "end_line": 101, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 103, "end_line": 104, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 106, "end_line": 107, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 109, "end_line": 117, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 119, "end_line": 123, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 125, "end_line": 132, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 134, "end_line": 135, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 137, "end_line": 153, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 156, "end_line": 159, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 162, "end_line": 254, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "motif_signature": "motif_exact_f5bf2c623a70", "motif_coarse_signature": "motif_coarse_7a99543fed3f", "features": {"controls": ["branch", "branch", "branch", "branch", "branch", "branch", "branch", "branch"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 7, "boundary_calls": 32}}_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": 257, "end_line": 267, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 270, "end_line": 283, "source_hash": "fb9e602678326058699cf84b85080c731fcba8aca8c759b2fe42acce2da1b833", "source_kind": "code"}, "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": 208, "source_hash": "7aaf293592cb5b63dbb9fdad47c841b285c99e7634509922fce1e4c9d7f5298a", "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": "7aaf293592cb5b63dbb9fdad47c841b285c99e7634509922fce1e4c9d7f5298a", "source_kind": "code"}, "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": "7aaf293592cb5b63dbb9fdad47c841b285c99e7634509922fce1e4c9d7f5298a", "source_kind": "code"}, "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": "7aaf293592cb5b63dbb9fdad47c841b285c99e7634509922fce1e4c9d7f5298a", "source_kind": "code"}, "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": 204, "source_hash": "7aaf293592cb5b63dbb9fdad47c841b285c99e7634509922fce1e4c9d7f5298a", "source_kind": "code"}, "motif_signature": "motif_exact_1ecef0afabc4", "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": 86}}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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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": "e5491741ba988fa637350f2f1860f6ef7ebbb344ba927ca7d76230c2988ab348", "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": "e5491741ba988fa637350f2f1860f6ef7ebbb344ba927ca7d76230c2988ab348", "source_kind": "code"}, "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": "e5491741ba988fa637350f2f1860f6ef7ebbb344ba927ca7d76230c2988ab348", "source_kind": "code"}, "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": "e5491741ba988fa637350f2f1860f6ef7ebbb344ba927ca7d76230c2988ab348", "source_kind": "code"}, "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": "e5491741ba988fa637350f2f1860f6ef7ebbb344ba927ca7d76230c2988ab348", "source_kind": "code"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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": 127, "source_hash": "52acaa9296d74b4a969a73cdf11a1c43f9c89992d4f69344e53b3a16f4b81ca5", "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": 10, "end_line": 17, "source_hash": "52acaa9296d74b4a969a73cdf11a1c43f9c89992d4f69344e53b3a16f4b81ca5", "source_kind": "code"}, "motif_signature": "motif_exact_9495e830fa01", "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": 6}}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": 20, "end_line": 127, "source_hash": "52acaa9296d74b4a969a73cdf11a1c43f9c89992d4f69344e53b3a16f4b81ca5", "source_kind": "code"}, "motif_signature": "motif_exact_331bc690f650", "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"], "effects": [], "state_reads": 0, "state_writes": 0, "state_read_targets": [], "state_write_targets": [], "local_calls": 1, "boundary_calls": 75}}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": 179, "source_hash": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "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": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "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": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "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": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "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": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "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": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "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": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "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": 141, "source_hash": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "motif_signature": "motif_exact_303df9fe6ea0", "motif_coarse_signature": "motif_coarse_f373ee2a1d21", "features": {"controls": ["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": 51}}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": 144, "end_line": 152, "source_hash": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "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": 155, "end_line": 161, "source_hash": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "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": 164, "end_line": 179, "source_hash": "48f4ea59dc7567dbb6e71e316bde2b9b2a90f3be63008214ccfea6e6117d051a", "source_kind": "code"}, "motif_signature": "motif_exact_7fa9699bdcf4", "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": 30, "boundary_calls": 62}}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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "e26442d955e983a529b2c78657ee31bf9aac4d40736af55c9378ac97f1ac12da", "source_kind": "code"}, "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "source_kind": "code"}, "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "source_kind": "code"}, "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "source_kind": "code"}, "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "source_kind": "code"}, "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "source_kind": "code"}, "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "source_kind": "code"}, "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "source_kind": "code"}, "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": "aad1527fe961823ec6031c8c699f341ca1fa29ebb6d6b95a58ae4181035fbf40", "source_kind": "code"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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"}, "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:31observed
flows_tolow#1tail#1analyzer.py:32observed
guardstail#1branchanalyzer.py:33observed
guardslow#1branchanalyzer.py:35observed
guardstail#1branchanalyzer.py:35observed
guardslow#1branchanalyzer.py:37observed
guardstail#1branchanalyzer.py:37observed
guardslow#1branchanalyzer.py:39observed
guardstail#1branchanalyzer.py:39observed
guardslow#1branchanalyzer.py:41observed
guardslow#1branchanalyzer.py:43observed
guardstail#1branchanalyzer.py:43observed
flows_toparts#0raw#1analyzer.py:59observed
returns_valueprefix#0return@60analyzer.py:60observed
returns_valueraw#1return@60analyzer.py:60observed
returns_valuetext#0return@64analyzer.py:64observed
flows_topath#0rel#1analyzer.py:68observed
flows_toroot#0rel#1analyzer.py:68observed
flows_torel#1parts#1analyzer.py:69observed
guardsparts#1branchanalyzer.py:70observed
flows_toparts#1parts#2analyzer.py:71observed
phi_inputparts#2parts#3analyzer.py:70strongly_inferred
phi_inputparts#1parts#3analyzer.py:70strongly_inferred
returns_valueparts#3return@72analyzer.py:72observed
guardsn#0branchanalyzer.py:76observed
returns_valuen#0return@77analyzer.py:77observed
guardsn#0branchanalyzer.py:78observed
flows_ton#0base#1analyzer.py:79observed
returns_valuebase#1return@80analyzer.py:80observed
returns_valuen#0return@80analyzer.py:80observed
guardsn#0branchanalyzer.py:81observed
returns_valuen#0return@82analyzer.py:82observed
guardsn#0branchanalyzer.py:83observed
returns_valuen#0return@84analyzer.py:84observed
returns_valuen#0return@85analyzer.py:85observed
guardslevel#0branchanalyzer.py:90observed
returns_valuemodule#0return@91analyzer.py:91observed
flows_tocurrent_module#0pkg#1analyzer.py:93observed
flows_tolevel#0remove#1analyzer.py:94observed
guardsremove#1branchanalyzer.py:95observed
flows_toremove#1pkg#2analyzer.py:96observed
flows_topkg#1pkg#2analyzer.py:96observed
phi_inputpkg#2pkg#3analyzer.py:95strongly_inferred
phi_inputpkg#1pkg#3analyzer.py:95strongly_inferred
guardsmodule#0branchanalyzer.py:97observed
flows_topkg#3expr@98analyzer.py:98observed
flows_tomodule#0expr@98analyzer.py:98observed
returns_valuepkg#3return@99analyzer.py:99observed
guardsroot#0for_loopanalyzer.py:104observed
flows_toroot#0p#1analyzer.py:104observed
guardsp#1branchanalyzer.py:105observed
guardsroot#0branchanalyzer.py:105observed
flows_top#1size#1analyzer.py:108observed
guardssize#1branchanalyzer.py:111observed
guardsmax_bytes#0branchanalyzer.py:111observed
flows_top#1expr@112analyzer.py:112observed
flows_tosize#1expr@112analyzer.py:112observed
flows_tocount#1count#2analyzer.py:114observed
guardscount#2branchanalyzer.py:115observed
guardsmax_files#0branchanalyzer.py:115observed
flows_top#1expr@116analyzer.py:116observed
flows_top#1expr@118analyzer.py:118observed
phi_inputcount#1count#3analyzer.py:104strongly_inferred
phi_inputcount#2count#3analyzer.py:104strongly_inferred
phi_inputp#1p#2analyzer.py:104strongly_inferred
phi_inputp:undefinedp#2analyzer.py:104unresolved
phi_inputsize#1size#2analyzer.py:104strongly_inferred
phi_inputsize:undefinedsize#2analyzer.py:104unresolved
flows_toself#0expr@133analyzer.py:133observed
flows_tokind#0expr@133analyzer.py:133observed
flows_ton#0expr@133analyzer.py:133observed
flows_toself#0expr@134analyzer.py:134observed
flows_ton#0expr@134analyzer.py:134observed
flows_toself#0expr@136analyzer.py:136observed
flows_ton#0expr@136analyzer.py:136observed
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@145analyzer.py:145observed
flows_ton#0expr@145analyzer.py:145observed
guardsn#0for_loopanalyzer.py:146observed
flows_ton#0h#1analyzer.py:146observed
guardsh#1branchanalyzer.py:147observed
flows_toself#0expr@148analyzer.py:148observed
flows_toh#1expr@148analyzer.py:148observed
guardsh#1branchanalyzer.py:150observed
flows_toself#0expr@151analyzer.py:151observed
flows_toh#1expr@151analyzer.py:151observed
phi_inputh#1h#2analyzer.py:146strongly_inferred
phi_inputh:undefinedh#2analyzer.py:146unresolved
flows_toself#0expr@153analyzer.py:153observed
flows_ton#0expr@153analyzer.py:153observed
flows_ton#0callee#1analyzer.py:156observed
flows_toself#0expr@157analyzer.py:157observed
flows_tocallee#1expr@157analyzer.py:157observed
flows_ton#0expr@157analyzer.py:157observed
flows_tocallee#1effect_type#1analyzer.py:158observed
guardseffect_type#1branchanalyzer.py:159observed
flows_toself#0expr@160analyzer.py:160observed
flows_toeffect_type#1expr@160analyzer.py:160observed
flows_tocallee#1expr@160analyzer.py:160observed
flows_ton#0expr@160analyzer.py:160observed
flows_toself#0expr@161analyzer.py:161observed
flows_ton#0expr@161analyzer.py:161observed
flows_ton#0text#1analyzer.py:164observed
guardsn#0branchanalyzer.py:165observed
flows_toself#0expr@166analyzer.py:166observed
flows_totext#1expr@166analyzer.py:166observed
flows_ton#0expr@166analyzer.py:166observed
flows_toself#0expr@167analyzer.py:167observed
flows_ton#0expr@167analyzer.py:167observed
guardsn#0for_loopanalyzer.py:170observed
flows_ton#0target#1analyzer.py:170observed
guardstarget#1branchanalyzer.py:171observed
flows_toself#0expr@172analyzer.py:172observed
flows_totarget#1expr@172analyzer.py:172observed
flows_ton#0expr@172analyzer.py:172observed
phi_inputtarget#1target#2analyzer.py:170strongly_inferred
phi_inputtarget:undefinedtarget#2analyzer.py:170unresolved
flows_toself#0expr@173analyzer.py:173observed
flows_ton#0expr@173analyzer.py:173observed
guardsn#0branchanalyzer.py:176observed
flows_toself#0expr@177analyzer.py:177observed
flows_ton#0expr@177analyzer.py:177observed
flows_toself#0expr@178analyzer.py:178observed
flows_ton#0expr@178analyzer.py:178observed
guardsn#0branchanalyzer.py:181observed
flows_toself#0expr@182analyzer.py:182observed
flows_ton#0expr@182analyzer.py:182observed
flows_toself#0expr@183analyzer.py:183observed
flows_ton#0expr@183analyzer.py:183observed
guardsstatements#0for_loopanalyzer.py:189observed
flows_tostatements#0st#1analyzer.py:189observed
aliases_at_definitionstatements#0st#1analyzer.py:189observed
guardsterminated#1branchanalyzer.py:190observed
flows_toissues#1expr@191analyzer.py:191observed
flows_tofile_rel#0expr@191analyzer.py:192observed
flows_toowner#0expr@191analyzer.py:193observed
flows_tost#1expr@191analyzer.py:193observed
phi_inputterminated#2terminated#3analyzer.py:190strongly_inferred
phi_inputterminated#1terminated#3analyzer.py:190strongly_inferred
guardsst#1branchanalyzer.py:197observed
phi_inputterminated#3terminated#5analyzer.py:197strongly_inferred
phi_inputterminated#4terminated#5analyzer.py:197strongly_inferred
flows_tost#1child#1analyzer.py:200observed
flows_tochild_name#1child#1analyzer.py:200observed
guardschild#1branchanalyzer.py:201observed
flows_toissues#1expr@202analyzer.py:202observed
flows_tochild#1expr@202analyzer.py:202observed
flows_tofile_rel#0expr@202analyzer.py:202observed
flows_toowner#0expr@202analyzer.py:202observed
phi_inputchild#1child#2analyzer.py:199strongly_inferred
phi_inputchild:undefinedchild#2analyzer.py:199unresolved
phi_inputchild_name#1child_name#2analyzer.py:199strongly_inferred
phi_inputchild_name:undefinedchild_name#2analyzer.py:199unresolved
guardsst#1branchanalyzer.py:203observed
guardsst#1for_loopanalyzer.py:204observed
flows_tost#1h#1analyzer.py:204observed
flows_toissues#1expr@205analyzer.py:205observed
flows_toh#1expr@205analyzer.py:205observed
flows_tofile_rel#0expr@205analyzer.py:205observed
flows_toowner#0expr@205analyzer.py:205observed
phi_inputh#1h#2analyzer.py:204strongly_inferred
phi_inputh:undefinedh#2analyzer.py:204unresolved
phi_inputh#2h#3analyzer.py:203strongly_inferred
phi_inputh:undefinedh#3analyzer.py:203unresolved
phi_inputchild#2child#3analyzer.py:189strongly_inferred
phi_inputchild:undefinedchild#3analyzer.py:189unresolved
phi_inputchild_name#2child_name#3analyzer.py:189strongly_inferred
phi_inputchild_name:undefinedchild_name#3analyzer.py:189unresolved
phi_inputh#3h#4analyzer.py:189strongly_inferred
phi_inputh:undefinedh#4analyzer.py:189unresolved
phi_inputst#1st#2analyzer.py:189strongly_inferred
phi_inputst:undefinedst#2analyzer.py:189unresolved
phi_inputterminated#5terminated#6analyzer.py:189strongly_inferred
phi_inputterminated#1terminated#6analyzer.py:189strongly_inferred
returns_valueissues#1return@206analyzer.py:206observed
flows_tofn#0clone#1analyzer.py:212observed
returns_valuefn#0return@214analyzer.py:214observed
flows_toclone#1all_args#1analyzer.py:216observed
guardsall_args#1for_loopanalyzer.py:217observed
flows_toall_args#1arg#1analyzer.py:217observed
aliases_at_definitionall_args#1arg#1analyzer.py:217observed
phi_inputarg#1arg#2analyzer.py:217strongly_inferred
phi_inputarg:undefinedarg#2analyzer.py:217unresolved
guardsclone#1branchanalyzer.py:219observed
guardsclone#1branchanalyzer.py:221observed
flows_toRename#1clone#2analyzer.py:228observed
flows_toclone#1clone#2analyzer.py:228observed
flows_toclone#2expr@229analyzer.py:229observed
returns_valueclone#2return@230analyzer.py:230observed
flows_tofeature#0payload#1analyzer.py:235observed
flows_tofeature#0payload#1analyzer.py:236observed
flows_tofeature#0payload#1analyzer.py:237observed
flows_tofeature#0payload#1analyzer.py:238observed
flows_tofeature#0payload#1analyzer.py:239observed
flows_tofeature#0payload#1analyzer.py:240observed
flows_topayload#1raw#1analyzer.py:242observed
returns_valueraw#1return@243analyzer.py:243observed
flows_tofeature#0ctr#1analyzer.py:248observed
flows_toctr#1payload#1analyzer.py:250observed
flows_toctr#1payload#1analyzer.py:251observed
flows_toctr#1payload#1analyzer.py:252observed
flows_toctr#1payload#1analyzer.py:253observed
flows_tobucket#1payload#1analyzer.py:254observed
flows_tofeature#0payload#1analyzer.py:254observed
flows_tobucket#1payload#1analyzer.py:255observed
flows_tofeature#0payload#1analyzer.py:255observed
flows_tofeature#0payload#1analyzer.py:256observed
flows_tofeature#0payload#1analyzer.py:257observed
flows_topayload#1raw#1analyzer.py:259observed
returns_valueraw#1return@260analyzer.py:260observed
flows_tofeature#0controls#1analyzer.py:264observed
flows_tofeature#0effects#1analyzer.py:265observed
guardscontrols#1branchanalyzer.py:269observed
flows_toadd#1expr@270analyzer.py:270observed
flows_tofeature#0shared_state#1analyzer.py:271observed
guardsshared_state#1branchanalyzer.py:272observed
flows_toadd#1expr@273analyzer.py:273observed
guardscontrols#1branchanalyzer.py:274observed
flows_toadd#1expr@275analyzer.py:275observed
guardsfeature#0branchanalyzer.py:276observed
flows_toadd#1expr@277analyzer.py:277observed
guardsfeature#0branchanalyzer.py:278observed
flows_toadd#1expr@279analyzer.py:279observed
guardseffects#1branchanalyzer.py:280observed
guardsfeature#0branchanalyzer.py:280observed
flows_toadd#1expr@281analyzer.py:281observed
guardseffects#1branchanalyzer.py:282observed
guardscontrols#1branchanalyzer.py:282observed
flows_toadd#1expr@283analyzer.py:283observed
returns_valuemotifs#1return@284analyzer.py:284observed
flows_toroot#0root#1analyzer.py:288observed
guardsroot#1for_loopanalyzer.py:303observed
guardsmax_files#0for_loopanalyzer.py:303observed
guardsmax_bytes#0for_loopanalyzer.py:303observed
flows_toroot#1path#1analyzer.py:303observed
flows_tomax_files#0path#1analyzer.py:303observed
flows_tomax_bytes#0path#1analyzer.py:303observed
flows_toroot#1skip_reason#1analyzer.py:303observed
flows_tomax_files#0skip_reason#1analyzer.py:303observed
flows_tomax_bytes#0skip_reason#1analyzer.py:303observed
flows_topath#1rel#1analyzer.py:304observed
flows_toroot#1rel#1analyzer.py:304observed
guardsskip_reason#1branchanalyzer.py:305observed
flows_towarnings#1expr@306analyzer.py:306observed
flows_torel#1expr@306analyzer.py:306observed
flows_toskip_reason#1expr@306analyzer.py:306observed
flows_topath#1text#1analyzer.py:309observed
flows_towarnings#1expr@311analyzer.py:311observed
flows_torel#1expr@311analyzer.py:311observed
flows_totext#1h#1analyzer.py:313observed
flows_tosource_integrity#1expr@314analyzer.py:314observed
flows_torel#1expr@314analyzer.py:314observed
flows_toh#1expr@314analyzer.py:314observed
flows_totext#1expr@314analyzer.py:314observed
flows_toroot#1mod#1analyzer.py:315observed
flows_topath#1mod#1analyzer.py:315observed
guardsmod#1branchanalyzer.py:316observed
flows_topath#1mod#2analyzer.py:317observed
phi_inputmod#2mod#3analyzer.py:316strongly_inferred
phi_inputmod#1mod#3analyzer.py:316strongly_inferred
flows_totext#1tree#1analyzer.py:320observed
flows_torel#1tree#1analyzer.py:320observed
flows_tofindings#1expr@322analyzer.py:322observed
flows_torel#1expr@322analyzer.py:322observed
flows_toe#1expr@322analyzer.py:323observed
guardstree#1for_loopanalyzer.py:326observed
flows_totree#1top#1analyzer.py:326observed
guardstop#1branchanalyzer.py:327observed
flows_totop#1targets#1analyzer.py:328observed
guardstargets#1for_loopanalyzer.py:329observed
flows_totargets#1target#1analyzer.py:329observed
aliases_at_definitiontargets#1target#1analyzer.py:329observed
guardstarget#1branchanalyzer.py:330observed
flows_tomodule_globals#1expr@331analyzer.py:331observed
flows_totarget#1expr@331analyzer.py:331observed
guardstarget#1branchanalyzer.py:332observed
guardstarget#1for_loopanalyzer.py:333observed
flows_totarget#1elt#1analyzer.py:333observed
guardselt#1branchanalyzer.py:334observed
flows_tomodule_globals#1expr@335analyzer.py:335observed
flows_toelt#1expr@335analyzer.py:335observed
phi_inputelt#1elt#2analyzer.py:333strongly_inferred
phi_inputelt:undefinedelt#2analyzer.py:333unresolved
phi_inputelt#2elt#3analyzer.py:332strongly_inferred
phi_inputelt:undefinedelt#3analyzer.py:332unresolved
phi_inputelt#3elt#4analyzer.py:330strongly_inferred
phi_inputelt:undefinedelt#4analyzer.py:330unresolved
phi_inputelt#4elt#5analyzer.py:329strongly_inferred
phi_inputelt:undefinedelt#5analyzer.py:329unresolved
phi_inputtarget#1target#2analyzer.py:329strongly_inferred
phi_inputtarget:undefinedtarget#2analyzer.py:329unresolved
phi_inputelt#5elt#6analyzer.py:327strongly_inferred
phi_inputelt:undefinedelt#6analyzer.py:327unresolved
phi_inputtarget#2target#3analyzer.py:327strongly_inferred
phi_inputtarget:undefinedtarget#3analyzer.py:327unresolved
phi_inputtargets#1targets#2analyzer.py:327strongly_inferred
phi_inputtargets:undefinedtargets#2analyzer.py:327unresolved
phi_inputelt#6elt#7analyzer.py:326strongly_inferred
phi_inputelt:undefinedelt#7analyzer.py:326unresolved
phi_inputtarget#3target#4analyzer.py:326strongly_inferred
phi_inputtarget:undefinedtarget#4analyzer.py:326unresolved
phi_inputtargets#2targets#3analyzer.py:326strongly_inferred
phi_inputtargets:undefinedtargets#3analyzer.py:326unresolved
phi_inputtop#1top#2analyzer.py:326strongly_inferred
phi_inputtop:undefinedtop#2analyzer.py:326unresolved
flows_torel#1fid#1analyzer.py:337observed
guardstree#1for_loopanalyzer.py:343observed
flows_totree#1n#1analyzer.py:343observed
guardsn#1branchanalyzer.py:344observed
guardsn#1for_loopanalyzer.py:345observed
flows_ton#1alias#1analyzer.py:345observed
phi_inputalias#1alias#2analyzer.py:345strongly_inferred
phi_inputalias:undefinedalias#2analyzer.py:345unresolved
guardsn#1branchanalyzer.py:347observed
flows_tomod#3target_mod#1analyzer.py:348observed
flows_ton#1target_mod#1analyzer.py:348observed
guardsn#1for_loopanalyzer.py:349observed
flows_ton#1alias#3analyzer.py:349observed
phi_inputalias#3alias#4analyzer.py:349strongly_inferred
phi_inputalias:undefinedalias#4analyzer.py:349unresolved
phi_inputalias#4alias#5analyzer.py:347strongly_inferred
phi_inputalias:undefinedalias#5analyzer.py:347unresolved
phi_inputtarget_mod#1target_mod#2analyzer.py:347strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#2analyzer.py:347unresolved
phi_inputalias#5alias#6analyzer.py:344strongly_inferred
phi_inputalias#2alias#6analyzer.py:344strongly_inferred
phi_inputtarget_mod#2target_mod#3analyzer.py:344strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#3analyzer.py:344unresolved
phi_inputalias#6alias#7analyzer.py:343strongly_inferred
phi_inputalias:undefinedalias#7analyzer.py:343unresolved
phi_inputn#1n#2analyzer.py:343strongly_inferred
phi_inputn:undefinedn#2analyzer.py:343unresolved
phi_inputtarget_mod#3target_mod#4analyzer.py:343strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#4analyzer.py:343unresolved
guardstree#1for_loopanalyzer.py:353observed
flows_totree#1n#3analyzer.py:353observed
guardsn#3branchanalyzer.py:354observed
flows_torel#1sid#1analyzer.py:355observed
flows_ton#3sid#1analyzer.py:355observed
flows_tosimple_defs#1expr@359analyzer.py:359observed
flows_ton#3expr@359analyzer.py:359observed
flows_tosid#1expr@359analyzer.py:359observed
flows_toedges#1expr@360analyzer.py:360observed
flows_tofid#1expr@360analyzer.py:360observed
flows_tosid#1expr@360analyzer.py:360observed
flows_torel#1expr@360analyzer.py:362observed
flows_ton#3expr@360analyzer.py:362observed
flows_toh#1expr@360analyzer.py:362observed
flows_toshapes#1expr@363analyzer.py:363observed
flows_ton#3expr@363analyzer.py:363observed
flows_torel#1expr@363analyzer.py:363observed
flows_tofunctions#1expr@364analyzer.py:364observed
flows_tosid#1expr@364analyzer.py:364observed
flows_ton#3expr@364analyzer.py:364observed
flows_torel#1expr@364analyzer.py:364observed
flows_tomod#3expr@364analyzer.py:364observed
guardsn#3branchanalyzer.py:365observed
flows_torel#1cid#1analyzer.py:366observed
flows_ton#3cid#1analyzer.py:366observed
flows_tosimple_defs#1expr@370analyzer.py:370observed
flows_ton#3expr@370analyzer.py:370observed
flows_tocid#1expr@370analyzer.py:370observed
flows_toedges#1expr@371analyzer.py:371observed
flows_tofid#1expr@371analyzer.py:371observed
flows_tocid#1expr@371analyzer.py:371observed
flows_torel#1expr@371analyzer.py:373observed
flows_ton#3expr@371analyzer.py:373observed
flows_toh#1expr@371analyzer.py:373observed
guardsn#3for_loopanalyzer.py:374observed
flows_ton#3item#1analyzer.py:374observed
guardsitem#1branchanalyzer.py:375observed
flows_ton#3qname#1analyzer.py:376observed
flows_toitem#1qname#1analyzer.py:376observed
flows_torel#1mid#1analyzer.py:377observed
flows_toqname#1mid#1analyzer.py:377observed
flows_tosimple_defs#1expr@381analyzer.py:381observed
flows_toitem#1expr@381analyzer.py:381observed
flows_tomid#1expr@381analyzer.py:381observed
flows_toedges#1expr@382analyzer.py:382observed
flows_tocid#1expr@382analyzer.py:382observed
flows_tomid#1expr@382analyzer.py:382observed
flows_torel#1expr@382analyzer.py:384observed
flows_toitem#1expr@382analyzer.py:384observed
flows_toh#1expr@382analyzer.py:384observed
flows_toshapes#1expr@385analyzer.py:385observed
flows_toitem#1expr@385analyzer.py:385observed
flows_torel#1expr@385analyzer.py:385observed
flows_toqname#1expr@385analyzer.py:385observed
flows_tofunctions#1expr@386analyzer.py:386observed
flows_tomid#1expr@386analyzer.py:386observed
flows_toitem#1expr@386analyzer.py:386observed
flows_toqname#1expr@386analyzer.py:386observed
flows_ton#3expr@386analyzer.py:386observed
flows_torel#1expr@386analyzer.py:386observed
flows_tomod#3expr@386analyzer.py:386observed
phi_inputmid#1mid#2analyzer.py:375strongly_inferred
phi_inputmid:undefinedmid#2analyzer.py:375unresolved
phi_inputqname#1qname#2analyzer.py:375strongly_inferred
phi_inputqname:undefinedqname#2analyzer.py:375unresolved
phi_inputitem#1item#2analyzer.py:374strongly_inferred
phi_inputitem:undefineditem#2analyzer.py:374unresolved
phi_inputmid#2mid#3analyzer.py:374strongly_inferred
phi_inputmid:undefinedmid#3analyzer.py:374unresolved
phi_inputqname#2qname#3analyzer.py:374strongly_inferred
phi_inputqname:undefinedqname#3analyzer.py:374unresolved
phi_inputcid#1cid#2analyzer.py:365strongly_inferred
phi_inputcid:undefinedcid#2analyzer.py:365unresolved
phi_inputitem#2item#3analyzer.py:365strongly_inferred
phi_inputitem:undefineditem#3analyzer.py:365unresolved
phi_inputmid#3mid#4analyzer.py:365strongly_inferred
phi_inputmid:undefinedmid#4analyzer.py:365unresolved
phi_inputqname#3qname#4analyzer.py:365strongly_inferred
phi_inputqname:undefinedqname#4analyzer.py:365unresolved
phi_inputcid#2cid#3analyzer.py:354strongly_inferred
phi_inputcid:undefinedcid#3analyzer.py:354unresolved
phi_inputitem#3item#4analyzer.py:354strongly_inferred
phi_inputitem:undefineditem#4analyzer.py:354unresolved
phi_inputmid#4mid#5analyzer.py:354strongly_inferred
phi_inputmid:undefinedmid#5analyzer.py:354unresolved
phi_inputqname#4qname#5analyzer.py:354strongly_inferred
phi_inputqname:undefinedqname#5analyzer.py:354unresolved
phi_inputsid#1sid#2analyzer.py:354strongly_inferred
phi_inputsid:undefinedsid#2analyzer.py:354unresolved
phi_inputcid#3cid#4analyzer.py:353strongly_inferred
phi_inputcid:undefinedcid#4analyzer.py:353unresolved
phi_inputitem#4item#5analyzer.py:353strongly_inferred
phi_inputitem:undefineditem#5analyzer.py:353unresolved
phi_inputmid#5mid#6analyzer.py:353strongly_inferred
phi_inputmid:undefinedmid#6analyzer.py:353unresolved
phi_inputn#3n#4analyzer.py:353strongly_inferred
phi_inputn#2n#4analyzer.py:353strongly_inferred
phi_inputqname#5qname#6analyzer.py:353strongly_inferred
phi_inputqname:undefinedqname#6analyzer.py:353unresolved
phi_inputsid#2sid#3analyzer.py:353strongly_inferred
phi_inputsid:undefinedsid#3analyzer.py:353unresolved
phi_inputalias#7alias#8analyzer.py:303strongly_inferred
phi_inputalias:undefinedalias#8analyzer.py:303unresolved
phi_inputcid#4cid#5analyzer.py:303strongly_inferred
phi_inputcid:undefinedcid#5analyzer.py:303unresolved
phi_inputelt#7elt#8analyzer.py:303strongly_inferred
phi_inputelt:undefinedelt#8analyzer.py:303unresolved
phi_inputfid#1fid#2analyzer.py:303strongly_inferred
phi_inputfid:undefinedfid#2analyzer.py:303unresolved
phi_inputh#1h#2analyzer.py:303strongly_inferred
phi_inputh:undefinedh#2analyzer.py:303unresolved
phi_inputimport_map#1import_map#2analyzer.py:303strongly_inferred
phi_inputimport_map:undefinedimport_map#2analyzer.py:303unresolved
phi_inputitem#5item#6analyzer.py:303strongly_inferred
phi_inputitem:undefineditem#6analyzer.py:303unresolved
phi_inputmid#6mid#7analyzer.py:303strongly_inferred
phi_inputmid:undefinedmid#7analyzer.py:303unresolved
phi_inputmod#3mod#4analyzer.py:303strongly_inferred
phi_inputmod:undefinedmod#4analyzer.py:303unresolved
phi_inputmodule_globals#1module_globals#2analyzer.py:303strongly_inferred
phi_inputmodule_globals:undefinedmodule_globals#2analyzer.py:303unresolved
phi_inputn#4n#5analyzer.py:303strongly_inferred
phi_inputn:undefinedn#5analyzer.py:303unresolved
phi_inputpath#1path#2analyzer.py:303strongly_inferred
phi_inputpath:undefinedpath#2analyzer.py:303unresolved
phi_inputqname#6qname#7analyzer.py:303strongly_inferred
phi_inputqname:undefinedqname#7analyzer.py:303unresolved
phi_inputrel#1rel#2analyzer.py:303strongly_inferred
phi_inputrel:undefinedrel#2analyzer.py:303unresolved
phi_inputsid#3sid#4analyzer.py:303strongly_inferred
phi_inputsid:undefinedsid#4analyzer.py:303unresolved
phi_inputskip_reason#1skip_reason#2analyzer.py:303strongly_inferred
phi_inputskip_reason:undefinedskip_reason#2analyzer.py:303unresolved
phi_inputtarget#4target#5analyzer.py:303strongly_inferred
phi_inputtarget:undefinedtarget#5analyzer.py:303unresolved
phi_inputtarget_mod#4target_mod#5analyzer.py:303strongly_inferred
phi_inputtarget_mod:undefinedtarget_mod#5analyzer.py:303unresolved
phi_inputtargets#3targets#4analyzer.py:303strongly_inferred
phi_inputtargets:undefinedtargets#4analyzer.py:303unresolved
phi_inputtext#1text#2analyzer.py:303strongly_inferred
phi_inputtext:undefinedtext#2analyzer.py:303unresolved
phi_inputtop#2top#3analyzer.py:303strongly_inferred
phi_inputtop:undefinedtop#3analyzer.py:303unresolved
phi_inputtree#1tree#2analyzer.py:303strongly_inferred
phi_inputtree:undefinedtree#2analyzer.py:303unresolved
guardsfiles#1for_loopanalyzer.py:389observed
flows_tofiles#1rel#3analyzer.py:389observed
flows_tofiles#1meta#1analyzer.py:389observed
flows_tometa#1mod#5analyzer.py:390observed
flows_torel#3fid#3analyzer.py:390observed
flows_tometa#1h#3analyzer.py:390observed
guardsmeta#1for_loopanalyzer.py:391observed
flows_tometa#1n#6analyzer.py:391observed
guardsn#6branchanalyzer.py:392observed
flows_ton#6targets#5analyzer.py:393observed
guardsn#6branchanalyzer.py:394observed
flows_tomod#5targets#6analyzer.py:395observed
flows_ton#6targets#6analyzer.py:395observed
phi_inputtargets#6targets#7analyzer.py:392strongly_inferred
phi_inputtargets#5targets#7analyzer.py:392strongly_inferred
guardstargets#7for_loopanalyzer.py:398observed
flows_totargets#7target_mod#6analyzer.py:398observed
aliases_at_definitiontargets#7target_mod#6analyzer.py:398observed
flows_totargets#7line#1analyzer.py:398observed
aliases_at_definitiontargets#7line#1analyzer.py:398observed
guardstarget_mod#6branchanalyzer.py:399observed
guardsmodule_to_file#1branchanalyzer.py:399observed
flows_tomodule_to_file#1tid#1analyzer.py:400observed
flows_totarget_mod#6tid#1analyzer.py:400observed
flows_totarget_mod#6tid#2analyzer.py:402observed
flows_tonodes#1expr@403analyzer.py:403observed
flows_totid#2expr@403analyzer.py:403observed
flows_totarget_mod#6expr@403analyzer.py:403observed
phi_inputresolution#1resolution#3analyzer.py:399strongly_inferred
phi_inputresolution#2resolution#3analyzer.py:399strongly_inferred
phi_inputtid#1tid#3analyzer.py:399strongly_inferred
phi_inputtid#2tid#3analyzer.py:399strongly_inferred
flows_toedges#1expr@406analyzer.py:406observed
flows_tofid#3expr@406analyzer.py:406observed
flows_totid#3expr@406analyzer.py:406observed
flows_toline#1expr@406analyzer.py:406observed
flows_toresolution#3expr@406analyzer.py:407observed
flows_toresolution#3expr@406analyzer.py:408observed
flows_torel#3expr@406analyzer.py:409observed
flows_toline#1expr@406analyzer.py:409observed
flows_toh#3expr@406analyzer.py:409observed
phi_inputline#1line#2analyzer.py:398strongly_inferred
phi_inputline:undefinedline#2analyzer.py:398unresolved
phi_inputresolution#3resolution#4analyzer.py:398strongly_inferred
phi_inputresolution:undefinedresolution#4analyzer.py:398unresolved
phi_inputtarget_mod#5target_mod#7analyzer.py:398strongly_inferred
phi_inputtarget_mod#6target_mod#7analyzer.py:398strongly_inferred
phi_inputtid#3tid#4analyzer.py:398strongly_inferred
phi_inputtid:undefinedtid#4analyzer.py:398unresolved
phi_inputline#2line#3analyzer.py:391strongly_inferred
phi_inputline:undefinedline#3analyzer.py:391unresolved
phi_inputn#5n#7analyzer.py:391strongly_inferred
phi_inputn#6n#7analyzer.py:391strongly_inferred
phi_inputresolution#4resolution#5analyzer.py:391strongly_inferred
phi_inputresolution:undefinedresolution#5analyzer.py:391unresolved
phi_inputtarget_mod#5target_mod#8analyzer.py:391strongly_inferred
phi_inputtarget_mod#7target_mod#8analyzer.py:391strongly_inferred
phi_inputtargets#7targets#8analyzer.py:391strongly_inferred
phi_inputtargets#4targets#8analyzer.py:391strongly_inferred
phi_inputtid#4tid#5analyzer.py:391strongly_inferred
phi_inputtid:undefinedtid#5analyzer.py:391unresolved
phi_inputfid#3fid#4analyzer.py:389strongly_inferred
phi_inputfid#2fid#4analyzer.py:389strongly_inferred
phi_inputh#3h#4analyzer.py:389strongly_inferred
phi_inputh#2h#4analyzer.py:389strongly_inferred
phi_inputline#3line#4analyzer.py:389strongly_inferred
phi_inputline:undefinedline#4analyzer.py:389unresolved
phi_inputmeta#1meta#2analyzer.py:389strongly_inferred
phi_inputmeta:undefinedmeta#2analyzer.py:389unresolved
phi_inputmod#5mod#6analyzer.py:389strongly_inferred
phi_inputmod#4mod#6analyzer.py:389strongly_inferred
phi_inputn#5n#8analyzer.py:389strongly_inferred
phi_inputn#7n#8analyzer.py:389strongly_inferred
phi_inputrel#3rel#4analyzer.py:389strongly_inferred
phi_inputrel#2rel#4analyzer.py:389strongly_inferred
phi_inputresolution#5resolution#6analyzer.py:389strongly_inferred
phi_inputresolution:undefinedresolution#6analyzer.py:389unresolved
phi_inputtarget_mod#5target_mod#9analyzer.py:389strongly_inferred
phi_inputtarget_mod#8target_mod#9analyzer.py:389strongly_inferred
phi_inputtargets#4targets#9analyzer.py:389strongly_inferred
phi_inputtargets#8targets#9analyzer.py:389strongly_inferred
phi_inputtid#5tid#6analyzer.py:389strongly_inferred
phi_inputtid:undefinedtid#6analyzer.py:389unresolved
guardsfunctions#1for_loopanalyzer.py:414observed
flows_tofunctions#1info#1analyzer.py:414observed
aliases_at_definitionfunctions#1info#1analyzer.py:414observed
flows_toinfo#1fn#1analyzer.py:415observed
flows_toinfo#1rel#5analyzer.py:415observed
flows_toinfo#1mod#7analyzer.py:415observed
flows_toinfo#1qname#8analyzer.py:415observed
flows_toinfo#1owner_id#1analyzer.py:415observed
flows_toinfo#1class_name#1analyzer.py:415observed
flows_tofiles#1h#5analyzer.py:416observed
flows_torel#5h#5analyzer.py:416observed
flows_toimports_by_module#1import_map#3analyzer.py:416observed
flows_tomod#7import_map#3analyzer.py:416observed
flows_tofn#1defaults#1analyzer.py:417observed
guardsdefaults#1for_loopanalyzer.py:418observed
flows_todefaults#1d#1analyzer.py:418observed
aliases_at_definitiondefaults#1d#1analyzer.py:418observed
guardsd#1branchanalyzer.py:419observed
flows_tofindings#1expr@420analyzer.py:420observed
flows_torel#5expr@420analyzer.py:420observed
flows_toqname#8expr@420analyzer.py:421observed
flows_tofn#1expr@420analyzer.py:421observed
phi_inputd#1d#2analyzer.py:418strongly_inferred
phi_inputd:undefinedd#2analyzer.py:418unresolved
flows_tofindings#1expr@423analyzer.py:423observed
flows_tofn#1expr@423analyzer.py:423observed
flows_torel#5expr@423analyzer.py:423observed
flows_toqname#8expr@423analyzer.py:423observed
flows_torel#5scan#1analyzer.py:424observed
flows_toqname#8scan#1analyzer.py:424observed
guardsfn#1for_loopanalyzer.py:425observed
flows_tofn#1st#1analyzer.py:425observed
flows_toscan#1expr@426analyzer.py:426observed
flows_tost#1expr@426analyzer.py:426observed
phi_inputst#1st#2analyzer.py:425strongly_inferred
phi_inputst:undefinedst#2analyzer.py:425unresolved
guardsscan#1for_loopanalyzer.py:427observed
flows_toscan#1issue#1analyzer.py:427observed
flows_tofindings#1expr@428analyzer.py:428observed
flows_torel#5expr@428analyzer.py:428observed
flows_toqname#8expr@428analyzer.py:428observed
flows_toissue#1expr@428analyzer.py:428observed
phi_inputissue#1issue#2analyzer.py:427strongly_inferred
phi_inputissue:undefinedissue#2analyzer.py:427unresolved
guardsscan#1for_loopanalyzer.py:431observed
flows_toscan#1ctrl#1analyzer.py:431observed
flows_torel#5cid#6analyzer.py:432observed
flows_toqname#8cid#6analyzer.py:432observed
flows_toctrl#1cid#6analyzer.py:432observed
flows_toedges#1expr@436analyzer.py:436observed
flows_toowner_id#1expr@436analyzer.py:436observed
flows_tocid#6expr@436analyzer.py:436observed
flows_torel#5expr@436analyzer.py:438observed
flows_toctrl#1expr@436analyzer.py:438observed
flows_toh#5expr@436analyzer.py:438observed
flows_tofeature#1expr@439analyzer.py:439observed
flows_toctrl#1expr@439analyzer.py:439observed
phi_inputcid#6cid#7analyzer.py:431strongly_inferred
phi_inputcid#5cid#7analyzer.py:431strongly_inferred
phi_inputctrl#1ctrl#2analyzer.py:431strongly_inferred
phi_inputctrl:undefinedctrl#2analyzer.py:431unresolved
flows_tofn#1closure#1analyzer.py:443observed
flows_torel#5closure#1analyzer.py:443observed
flows_toqname#8closure#1analyzer.py:443observed
flows_toowner_id#1closure#1analyzer.py:443observed
flows_toh#5closure#1analyzer.py:443observed
flows_tomod#7closure#1analyzer.py:443observed
flows_toclass_name#1closure#1analyzer.py:443observed
flows_tofiles#1closure#1analyzer.py:444observed
flows_torel#5closure#1analyzer.py:444observed
guardsclosure#1for_loopanalyzer.py:446observed
flows_toclosure#1n#9analyzer.py:446observed
flows_tonodes#1expr@447analyzer.py:447observed
flows_ton#9expr@447analyzer.py:447observed
phi_inputn#9n#10analyzer.py:446strongly_inferred
phi_inputn#8n#10analyzer.py:446strongly_inferred
flows_toedges#1expr@448analyzer.py:448observed
flows_toclosure#1expr@448analyzer.py:448observed
flows_tofindings#1expr@449analyzer.py:449observed
flows_toclosure#1expr@449analyzer.py:449observed
flows_toclosure#1csum#1analyzer.py:450observed
guardsscan#1for_loopanalyzer.py:458observed
flows_toscan#1ef#1analyzer.py:458observed
flows_toef#1eid#1analyzer.py:459observed
flows_tonodes#1expr@460analyzer.py:460observed
flows_toeid#1expr@460analyzer.py:460observed
flows_toef#1expr@460analyzer.py:460observed
flows_toedges#1expr@461analyzer.py:461observed
flows_toowner_id#1expr@461analyzer.py:461observed
flows_toeid#1expr@461analyzer.py:461observed
flows_toef#1expr@461analyzer.py:461observed
flows_toeid#1expr@461analyzer.py:462observed
flows_toef#1expr@461analyzer.py:462observed
flows_torel#5expr@461analyzer.py:463observed
flows_toef#1expr@461analyzer.py:463observed
flows_toh#5expr@461analyzer.py:463observed
flows_tofeature#1expr@464analyzer.py:464observed
flows_toef#1expr@464analyzer.py:464observed
phi_inputef#1ef#2analyzer.py:458strongly_inferred
phi_inputef:undefinedef#2analyzer.py:458unresolved
phi_inputeid#1eid#2analyzer.py:458strongly_inferred
phi_inputeid:undefinedeid#2analyzer.py:458unresolved
guardsscan#1for_loopanalyzer.py:466observed
flows_toscan#1call#1analyzer.py:466observed
flows_tocall#1callee#1analyzer.py:467observed
guardscallee#1branchanalyzer.py:468observed
guardsmod#7branchanalyzer.py:469observed
guardscallee#1branchanalyzer.py:469observed
guardsdefinitions#1branchanalyzer.py:469observed
flows_todefinitions#1target_id#2analyzer.py:470observed
flows_tomod#7target_id#2analyzer.py:470observed
flows_tocallee#1target_id#2analyzer.py:470observed
guardscallee#1branchanalyzer.py:471observed
guardsimport_map#3branchanalyzer.py:471observed
flows_toimport_map#3im#1analyzer.py:472observed
flows_tocallee#1im#1analyzer.py:472observed
flows_toimport_map#3sym#1analyzer.py:472observed
flows_tocallee#1sym#1analyzer.py:472observed
guardssym#1branchanalyzer.py:473observed
guardsim#1branchanalyzer.py:473observed
guardsdefinitions#1branchanalyzer.py:473observed
flows_todefinitions#1target_id#3analyzer.py:474observed
flows_toim#1target_id#3analyzer.py:474observed
flows_tosym#1target_id#3analyzer.py:474observed
phi_inputresolution#7resolution#10analyzer.py:473strongly_inferred
phi_inputresolution#9resolution#10analyzer.py:473strongly_inferred
phi_inputtarget_id#1target_id#4analyzer.py:473strongly_inferred
phi_inputtarget_id#3target_id#4analyzer.py:473strongly_inferred
phi_inputim#1im#2analyzer.py:471strongly_inferred
phi_inputim:undefinedim#2analyzer.py:471unresolved
phi_inputresolution#10resolution#11analyzer.py:471strongly_inferred
phi_inputresolution#7resolution#11analyzer.py:471strongly_inferred
phi_inputsym#1sym#2analyzer.py:471strongly_inferred
phi_inputsym:undefinedsym#2analyzer.py:471unresolved
phi_inputtarget_id#1target_id#5analyzer.py:471strongly_inferred
phi_inputtarget_id#4target_id#5analyzer.py:471strongly_inferred
phi_inputim#2im#3analyzer.py:469strongly_inferred
phi_inputim:undefinedim#3analyzer.py:469unresolved
phi_inputresolution#11resolution#12analyzer.py:469strongly_inferred
phi_inputresolution#8resolution#12analyzer.py:469strongly_inferred
phi_inputsym#2sym#3analyzer.py:469strongly_inferred
phi_inputsym:undefinedsym#3analyzer.py:469unresolved
phi_inputtarget_id#5target_id#6analyzer.py:469strongly_inferred
phi_inputtarget_id#2target_id#6analyzer.py:469strongly_inferred
flows_tocallee#1head#1analyzer.py:476observed
flows_tocallee#1tail#1analyzer.py:476observed
guardshead#1branchanalyzer.py:477observed
guardsimport_map#3branchanalyzer.py:477observed
flows_toimport_map#3im#4analyzer.py:478observed
flows_tohead#1im#4analyzer.py:478observed
flows_toimport_map#3sym#4analyzer.py:478observed
flows_tohead#1sym#4analyzer.py:478observed
flows_tosym#4candidate#1analyzer.py:479observed
flows_totail#1candidate#1analyzer.py:479observed
guardsim#4branchanalyzer.py:480observed
guardscandidate#1branchanalyzer.py:480observed
guardsdefinitions#1branchanalyzer.py:480observed
flows_todefinitions#1target_id#7analyzer.py:481observed
flows_toim#4target_id#7analyzer.py:481observed
flows_tocandidate#1target_id#7analyzer.py:481observed
phi_inputresolution#7resolution#14analyzer.py:480strongly_inferred
phi_inputresolution#13resolution#14analyzer.py:480strongly_inferred
phi_inputtarget_id#7target_id#8analyzer.py:480strongly_inferred
phi_inputtarget_id#1target_id#8analyzer.py:480strongly_inferred
phi_inputcandidate#1candidate#2analyzer.py:477strongly_inferred
phi_inputcandidate:undefinedcandidate#2analyzer.py:477unresolved
phi_inputim#4im#5analyzer.py:477strongly_inferred
phi_inputim:undefinedim#5analyzer.py:477unresolved
phi_inputresolution#14resolution#15analyzer.py:477strongly_inferred
phi_inputresolution#7resolution#15analyzer.py:477strongly_inferred
phi_inputsym#4sym#5analyzer.py:477strongly_inferred
phi_inputsym:undefinedsym#5analyzer.py:477unresolved
phi_inputtarget_id#1target_id#9analyzer.py:477strongly_inferred
phi_inputtarget_id#8target_id#9analyzer.py:477strongly_inferred
guardshead#1branchanalyzer.py:482observed
guardsclass_name#1branchanalyzer.py:482observed
guardsmod#7branchanalyzer.py:482observed
guardstail#1branchanalyzer.py:482observed
guardsdefinitions#1branchanalyzer.py:482observed
flows_todefinitions#1target_id#10analyzer.py:483observed
flows_tomod#7target_id#10analyzer.py:483observed
flows_toclass_name#1target_id#10analyzer.py:483observed
flows_totail#1target_id#10analyzer.py:483observed
phi_inputresolution#16resolution#17analyzer.py:482strongly_inferred
phi_inputresolution#15resolution#17analyzer.py:482strongly_inferred
phi_inputtarget_id#10target_id#11analyzer.py:482strongly_inferred
phi_inputtarget_id#9target_id#11analyzer.py:482strongly_inferred
phi_inputcandidate#2candidate#3analyzer.py:468strongly_inferred
phi_inputcandidate:undefinedcandidate#3analyzer.py:468unresolved
phi_inputhead#1head#2analyzer.py:468strongly_inferred
phi_inputhead:undefinedhead#2analyzer.py:468unresolved
phi_inputim#3im#6analyzer.py:468strongly_inferred
phi_inputim#5im#6analyzer.py:468strongly_inferred
phi_inputresolution#17resolution#18analyzer.py:468strongly_inferred
phi_inputresolution#12resolution#18analyzer.py:468strongly_inferred
phi_inputsym#5sym#6analyzer.py:468strongly_inferred
phi_inputsym#3sym#6analyzer.py:468strongly_inferred
phi_inputtail#1tail#2analyzer.py:468strongly_inferred
phi_inputtail:undefinedtail#2analyzer.py:468unresolved
phi_inputtarget_id#6target_id#12analyzer.py:468strongly_inferred
phi_inputtarget_id#11target_id#12analyzer.py:468strongly_inferred
guardstarget_id#12branchanalyzer.py:484observed
flows_tocallee#1target_id#13analyzer.py:485observed
flows_tonodes#1expr@486analyzer.py:486observed
flows_totarget_id#13expr@486analyzer.py:486observed
flows_tocallee#1expr@486analyzer.py:486observed
phi_inputtarget_id#12target_id#14analyzer.py:484strongly_inferred
phi_inputtarget_id#13target_id#14analyzer.py:484strongly_inferred
flows_toedges#1expr@491analyzer.py:491observed
flows_toowner_id#1expr@491analyzer.py:491observed
flows_totarget_id#14expr@491analyzer.py:491observed
flows_tocall#1expr@491analyzer.py:491observed
flows_totarget_id#14expr@491analyzer.py:492observed
flows_tocallee#1expr@491analyzer.py:492observed
flows_toresolution#18expr@491analyzer.py:492observed
flows_toresolution#18expr@491analyzer.py:493observed
flows_toresolution#18expr@491analyzer.py:494observed
flows_torel#5expr@491analyzer.py:495observed
flows_tocall#1expr@491analyzer.py:495observed
flows_toh#5expr@491analyzer.py:495observed
phi_inputcall#1call#2analyzer.py:466strongly_inferred
phi_inputcall:undefinedcall#2analyzer.py:466unresolved
phi_inputcallee#1callee#2analyzer.py:466strongly_inferred
phi_inputcallee:undefinedcallee#2analyzer.py:466unresolved
phi_inputcandidate#3candidate#4analyzer.py:466strongly_inferred
phi_inputcandidate:undefinedcandidate#4analyzer.py:466unresolved
phi_inputhead#2head#3analyzer.py:466strongly_inferred
phi_inputhead:undefinedhead#3analyzer.py:466unresolved
phi_inputim#6im#7analyzer.py:466strongly_inferred
phi_inputim:undefinedim#7analyzer.py:466unresolved
phi_inputresolution#18resolution#19analyzer.py:466strongly_inferred
phi_inputresolution#6resolution#19analyzer.py:466strongly_inferred
phi_inputsym#6sym#7analyzer.py:466strongly_inferred
phi_inputsym:undefinedsym#7analyzer.py:466unresolved
phi_inputtail#2tail#3analyzer.py:466strongly_inferred
phi_inputtail:undefinedtail#3analyzer.py:466unresolved
phi_inputtarget_id#14target_id#15analyzer.py:466strongly_inferred
phi_inputtarget_id:undefinedtarget_id#15analyzer.py:466unresolved
flows_tofeature#1sig#1analyzer.py:498observed
flows_tofeature#1coarse_sig#1analyzer.py:499observed
guardsfeature#1for_loopanalyzer.py:503observed
flows_tofeature#1m#1analyzer.py:503observed
flows_tomotifs#1expr@504analyzer.py:504observed
flows_toowner_id#1expr@504analyzer.py:504observed
flows_tom#1expr@504analyzer.py:504observed
flows_torel#5expr@504analyzer.py:505observed
flows_toqname#8expr@504analyzer.py:505observed
flows_tom#1expr@504analyzer.py:505observed
phi_inputm#1m#2analyzer.py:503strongly_inferred
phi_inputm:undefinedm#2analyzer.py:503unresolved
phi_inputcall#2call#3analyzer.py:414strongly_inferred
phi_inputcall:undefinedcall#3analyzer.py:414unresolved
phi_inputcallee#2callee#3analyzer.py:414strongly_inferred
phi_inputcallee:undefinedcallee#3analyzer.py:414unresolved
phi_inputcandidate#4candidate#5analyzer.py:414strongly_inferred
phi_inputcandidate:undefinedcandidate#5analyzer.py:414unresolved
phi_inputcid#7cid#8analyzer.py:414strongly_inferred
phi_inputcid#5cid#8analyzer.py:414strongly_inferred
phi_inputclass_name#1class_name#2analyzer.py:414strongly_inferred
phi_inputclass_name:undefinedclass_name#2analyzer.py:414unresolved
phi_inputclosure#1closure#2analyzer.py:414strongly_inferred
phi_inputclosure:undefinedclosure#2analyzer.py:414unresolved
phi_inputcoarse_sig#1coarse_sig#2analyzer.py:414strongly_inferred
phi_inputcoarse_sig:undefinedcoarse_sig#2analyzer.py:414unresolved
phi_inputcsum#1csum#2analyzer.py:414strongly_inferred
phi_inputcsum:undefinedcsum#2analyzer.py:414unresolved
phi_inputctrl#2ctrl#3analyzer.py:414strongly_inferred
phi_inputctrl:undefinedctrl#3analyzer.py:414unresolved
phi_inputd#2d#3analyzer.py:414strongly_inferred
phi_inputd:undefinedd#3analyzer.py:414unresolved
phi_inputdefaults#1defaults#2analyzer.py:414strongly_inferred
phi_inputdefaults:undefineddefaults#2analyzer.py:414unresolved
phi_inputef#2ef#3analyzer.py:414strongly_inferred
phi_inputef:undefinedef#3analyzer.py:414unresolved
phi_inputeid#2eid#3analyzer.py:414strongly_inferred
phi_inputeid:undefinedeid#3analyzer.py:414unresolved
phi_inputfeature#1feature#2analyzer.py:414strongly_inferred
phi_inputfeature:undefinedfeature#2analyzer.py:414unresolved
phi_inputfn#1fn#2analyzer.py:414strongly_inferred
phi_inputfn:undefinedfn#2analyzer.py:414unresolved
phi_inputh#5h#6analyzer.py:414strongly_inferred
phi_inputh#4h#6analyzer.py:414strongly_inferred
phi_inputhead#3head#4analyzer.py:414strongly_inferred
phi_inputhead:undefinedhead#4analyzer.py:414unresolved
phi_inputim#7im#8analyzer.py:414strongly_inferred
phi_inputim:undefinedim#8analyzer.py:414unresolved
phi_inputimport_map#3import_map#4analyzer.py:414strongly_inferred
phi_inputimport_map#2import_map#4analyzer.py:414strongly_inferred
phi_inputinfo#1info#2analyzer.py:414strongly_inferred
phi_inputinfo:undefinedinfo#2analyzer.py:414unresolved
phi_inputissue#2issue#3analyzer.py:414strongly_inferred
phi_inputissue:undefinedissue#3analyzer.py:414unresolved
phi_inputm#2m#3analyzer.py:414strongly_inferred
phi_inputm:undefinedm#3analyzer.py:414unresolved
phi_inputmod#6mod#8analyzer.py:414strongly_inferred
phi_inputmod#7mod#8analyzer.py:414strongly_inferred
phi_inputn#8n#11analyzer.py:414strongly_inferred
phi_inputn#10n#11analyzer.py:414strongly_inferred
phi_inputowner_id#1owner_id#2analyzer.py:414strongly_inferred
phi_inputowner_id:undefinedowner_id#2analyzer.py:414unresolved
phi_inputqname#7qname#9analyzer.py:414strongly_inferred
phi_inputqname#8qname#9analyzer.py:414strongly_inferred
phi_inputrel#5rel#6analyzer.py:414strongly_inferred
phi_inputrel#4rel#6analyzer.py:414strongly_inferred
phi_inputresolution#6resolution#20analyzer.py:414strongly_inferred
phi_inputresolution#19resolution#20analyzer.py:414strongly_inferred
phi_inputscan#1scan#2analyzer.py:414strongly_inferred
phi_inputscan:undefinedscan#2analyzer.py:414unresolved
phi_inputsig#1sig#2analyzer.py:414strongly_inferred
phi_inputsig:undefinedsig#2analyzer.py:414unresolved
phi_inputst#2st#3analyzer.py:414strongly_inferred
phi_inputst:undefinedst#3analyzer.py:414unresolved
phi_inputsym#7sym#8analyzer.py:414strongly_inferred
phi_inputsym:undefinedsym#8analyzer.py:414unresolved
phi_inputtail#3tail#4analyzer.py:414strongly_inferred
phi_inputtail:undefinedtail#4analyzer.py:414unresolved
phi_inputtarget_id#15target_id#16analyzer.py:414strongly_inferred
phi_inputtarget_id:undefinedtarget_id#16analyzer.py:414unresolved
guardsnodes#1for_loopanalyzer.py:510observed
flows_tonodes#1nid#1analyzer.py:510observed
flows_tonodes#1n#12analyzer.py:510observed
guardsn#12branchanalyzer.py:511observed
flows_toimport_g#1expr@511analyzer.py:511observed
flows_tonid#1expr@511analyzer.py:511observed
guardsn#12branchanalyzer.py:512observed
flows_tocall_g#1expr@512analyzer.py:512observed
flows_tonid#1expr@512analyzer.py:512observed
phi_inputn#11n#13analyzer.py:510strongly_inferred
phi_inputn#12n#13analyzer.py:510strongly_inferred
phi_inputnid#1nid#2analyzer.py:510strongly_inferred
phi_inputnid:undefinednid#2analyzer.py:510unresolved
guardsedges#1for_loopanalyzer.py:513observed
flows_toedges#1e#2analyzer.py:513observed
aliases_at_definitionedges#1e#2analyzer.py:513observed
guardse#2branchanalyzer.py:514observed
flows_toimport_g#1expr@514analyzer.py:514observed
flows_toe#2expr@514analyzer.py:514observed
guardse#2branchanalyzer.py:515observed
guardscall_g#1branchanalyzer.py:515observed
flows_tocall_g#1expr@516analyzer.py:516observed
flows_toe#2expr@516analyzer.py:516observed
phi_inpute#2e#3analyzer.py:513strongly_inferred
phi_inpute:undefinede#3analyzer.py:513unresolved
guardsimport_g#1for_loopanalyzer.py:518observed
flows_toimport_g#1cyc#1analyzer.py:518observed
flows_tofindings#1expr@519analyzer.py:519observed
flows_tocyc#1expr@519analyzer.py:519observed
phi_inputcyc#1cyc#2analyzer.py:518strongly_inferred
phi_inputcyc:undefinedcyc#2analyzer.py:518unresolved
guardscall_g#1for_loopanalyzer.py:521observed
flows_tocall_g#1cyc#3analyzer.py:521observed
flows_tofindings#1expr@522analyzer.py:522observed
flows_tocyc#3expr@522analyzer.py:522observed
phi_inputcyc#2cyc#4analyzer.py:521strongly_inferred
phi_inputcyc#3cyc#4analyzer.py:521strongly_inferred
flows_toedges#1out_calls#1analyzer.py:526observed
flows_toedges#1unresolved_calls#1analyzer.py:527observed
guardsout_calls#1for_loopanalyzer.py:528observed
flows_toout_calls#1nid#3analyzer.py:528observed
flows_toout_calls#1count#1analyzer.py:528observed
guardscount#1branchanalyzer.py:529observed
guardsnid#3branchanalyzer.py:529observed
guardsnodes#1branchanalyzer.py:529observed
flows_tonodes#1n#14analyzer.py:530observed
flows_tonid#3n#14analyzer.py:530observed
flows_tofindings#1expr@531analyzer.py:531observed
flows_ton#14expr@531analyzer.py:531observed
flows_ton#14expr@531analyzer.py:532observed
flows_tocount#1expr@531analyzer.py:532observed
phi_inputn#13n#15analyzer.py:529strongly_inferred
phi_inputn#14n#15analyzer.py:529strongly_inferred
guardsunresolved_calls#1branchanalyzer.py:534observed
guardsnid#3branchanalyzer.py:534observed
guardsnodes#1branchanalyzer.py:534observed
flows_tonodes#1n#16analyzer.py:535observed
flows_tonid#3n#16analyzer.py:535observed
flows_tofindings#1expr@536analyzer.py:536observed
flows_ton#16expr@536analyzer.py:536observed
flows_ton#16expr@536analyzer.py:537observed
flows_tounresolved_calls#1expr@536analyzer.py:537observed
flows_tonid#3expr@536analyzer.py:537observed
phi_inputn#16n#17analyzer.py:534strongly_inferred
phi_inputn#15n#17analyzer.py:534strongly_inferred
phi_inputcount#1count#2analyzer.py:528strongly_inferred
phi_inputcount:undefinedcount#2analyzer.py:528unresolved
phi_inputn#17n#18analyzer.py:528strongly_inferred
phi_inputn#13n#18analyzer.py:528strongly_inferred
phi_inputnid#3nid#4analyzer.py:528strongly_inferred
phi_inputnid#2nid#4analyzer.py:528strongly_inferred
guardsedges#1for_loopanalyzer.py:542observed
flows_toedges#1e#4analyzer.py:542observed
aliases_at_definitionedges#1e#4analyzer.py:542observed
guardse#4branchanalyzer.py:543observed
flows_tostate_writers#1expr@544analyzer.py:544observed
flows_toe#4expr@544analyzer.py:544observed
guardse#4branchanalyzer.py:545observed
flows_tostate_readers#1expr@546analyzer.py:546observed
flows_toe#4expr@546analyzer.py:546observed
phi_inpute#4e#5analyzer.py:542strongly_inferred
phi_inpute#3e#5analyzer.py:542strongly_inferred
guardsstate_writers#1for_loopanalyzer.py:547observed
flows_tostate_writers#1sid#5analyzer.py:547observed
flows_tostate_writers#1writers#1analyzer.py:547observed
guardswriters#1branchanalyzer.py:548observed
guardssid#5branchanalyzer.py:548observed
guardsnodes#1branchanalyzer.py:548observed
flows_tofindings#1expr@549analyzer.py:549observed
flows_tonodes#1expr@549analyzer.py:550observed
flows_tosid#5expr@549analyzer.py:550observed
flows_towriters#1expr@549analyzer.py:550observed
phi_inputsid#4sid#6analyzer.py:547strongly_inferred
phi_inputsid#5sid#6analyzer.py:547strongly_inferred
phi_inputwriters#1writers#2analyzer.py:547strongly_inferred
phi_inputwriters:undefinedwriters#2analyzer.py:547unresolved
guardsshapes#1for_loopanalyzer.py:555observed
flows_toshapes#1shape#1analyzer.py:555observed
flows_toshapes#1funcs#1analyzer.py:555observed
guardsfuncs#1branchanalyzer.py:556observed
flows_tofindings#1expr@557analyzer.py:557observed
flows_tofuncs#1expr@557analyzer.py:557observed
phi_inputfuncs#1funcs#2analyzer.py:555strongly_inferred
phi_inputfuncs:undefinedfuncs#2analyzer.py:555unresolved
phi_inputshape#1shape#2analyzer.py:555strongly_inferred
phi_inputshape:undefinedshape#2analyzer.py:555unresolved
guardsfunction_features#1for_loopanalyzer.py:562observed
flows_tofunction_features#1nid#5analyzer.py:562observed
flows_tofunction_features#1feat#1analyzer.py:562observed
flows_tosig_groups#1expr@563analyzer.py:563observed
flows_tofeat#1expr@563analyzer.py:563observed
flows_tonid#5expr@563analyzer.py:563observed
phi_inputfeat#1feat#2analyzer.py:562strongly_inferred
phi_inputfeat:undefinedfeat#2analyzer.py:562unresolved
phi_inputnid#4nid#6analyzer.py:562strongly_inferred
phi_inputnid#5nid#6analyzer.py:562strongly_inferred
guardssig_groups#1for_loopanalyzer.py:565observed
flows_tosig_groups#1sig#3analyzer.py:565observed
flows_tosig_groups#1members#1analyzer.py:565observed
guardsmembers#1branchanalyzer.py:566observed
flows_tomotif_clusters#1expr@568analyzer.py:568observed
flows_tosig#3expr@568analyzer.py:568observed
flows_tomembers#1expr@568analyzer.py:568observed
flows_tomembers#1expr@568analyzer.py:569observed
phi_inputmembers#1members#2analyzer.py:565strongly_inferred
phi_inputmembers:undefinedmembers#2analyzer.py:565unresolved
phi_inputsig#2sig#4analyzer.py:565strongly_inferred
phi_inputsig#3sig#4analyzer.py:565strongly_inferred
flows_tonodes#1type_counts#1analyzer.py:572observed
flows_toedges#1edge_counts#1analyzer.py:573observed
flows_tofindings#1category_counts#1analyzer.py:574observed
flows_tofindings#1severity_counts#1analyzer.py:575observed
flows_tofiles#1metrics#1analyzer.py:577observed
flows_tonodes#1metrics#1analyzer.py:577observed
flows_toedges#1metrics#1analyzer.py:577observed
flows_totype_counts#1metrics#1analyzer.py:578observed
flows_toedge_counts#1metrics#1analyzer.py:578observed
flows_toedges#1metrics#1analyzer.py:579observed
flows_toedges#1metrics#1analyzer.py:580observed
flows_tocategory_counts#1metrics#1analyzer.py:581observed
flows_toseverity_counts#1metrics#1analyzer.py:581observed
flows_tomotifs#1metrics#1analyzer.py:582observed
flows_tomotif_clusters#1metrics#1analyzer.py:582observed
flows_toclosure_summaries#1metrics#1analyzer.py:583observed
flows_toclosure_summaries#1metrics#1analyzer.py:584observed
flows_toclosure_summaries#1metrics#1analyzer.py:585observed
flows_toclosure_summaries#1metrics#1analyzer.py:586observed
flows_toedges#1metrics#1analyzer.py:587observed
flows_toedges#1metrics#1analyzer.py:588observed
flows_toedges#1metrics#1analyzer.py:589observed
flows_toedges#1metrics#1analyzer.py:590observed
flows_toclosure_summaries#1metrics#1analyzer.py:591observed
flows_toclosure_summaries#1metrics#1analyzer.py:592observed
flows_toclosure_summaries#1metrics#1analyzer.py:593observed
flows_towarnings#1metrics#1analyzer.py:594observed
returns_valueroot#1return@597analyzer.py:601observed
returns_valuefiles#1return@597analyzer.py:601observed
returns_valuesource_integrity#1return@597analyzer.py:602observed
returns_valuenodes#1return@597analyzer.py:603observed
returns_valueedges#1return@597analyzer.py:603observed
returns_valuefindings#1return@597analyzer.py:603observed
returns_valuemotifs#1return@597analyzer.py:604observed
returns_valuemotif_clusters#1return@597analyzer.py:604observed
returns_valuemetrics#1return@597analyzer.py:604observed
returns_valuewarnings#1return@597analyzer.py:604observed
flows_tovalue#0raw#1cache.py:18observed
returns_valueraw#1return@19cache.py:19observed
returns_valuemax_files#0return@23cache.py:26observed
returns_valuemax_bytes#0return@23cache.py:27observed
returns_valueconfig#0return@33cache.py:33observed
guardsroot#0for_loopcache.py:37observed
flows_toroot#0p#1cache.py:37observed
flows_top#1rel_parts#1cache.py:39observed
flows_toroot#0rel_parts#1cache.py:39observed
guardsrel_parts#1branchcache.py:42observed
flows_top#1expr@44cache.py:44observed
phi_inputp#1p#2cache.py:37strongly_inferred
phi_inputp:undefinedp#2cache.py:37unresolved
phi_inputrel_parts#1rel_parts#2cache.py:37strongly_inferred
phi_inputrel_parts:undefinedrel_parts#2cache.py:37unresolved
flows_toroot#0root#1cache.py:53observed
guardsroot#1for_loopcache.py:56observed
flows_toroot#1p#1cache.py:56observed
flows_top#1rel#1cache.py:57observed
flows_toroot#1rel#1cache.py:57observed
flows_top#1size#1cache.py:59observed
flows_top#1raw#1cache.py:60observed
flows_tomanifest#1expr@62cache.py:62observed
flows_torel#1expr@62cache.py:62observed
flows_toexc#1expr@62cache.py:62observed
guardssize#1branchcache.py:64observed
guardsmax_bytes#0branchcache.py:64observed
flows_tomanifest#1expr@65cache.py:65observed
flows_torel#1expr@65cache.py:65observed
flows_tosize#1expr@65cache.py:65observed
flows_toaccepted#1accepted#2cache.py:67observed
guardsaccepted#2branchcache.py:68observed
guardsmax_files#0branchcache.py:68observed
flows_tomanifest#1expr@69cache.py:69observed
flows_torel#1expr@69cache.py:69observed
flows_tosize#1expr@69cache.py:69observed
flows_tomanifest#1expr@71cache.py:71observed
flows_torel#1expr@71cache.py:72observed
flows_tosize#1expr@71cache.py:74observed
flows_toraw#1expr@71cache.py:75observed
phi_inputaccepted#2accepted#3cache.py:56strongly_inferred
phi_inputaccepted#1accepted#3cache.py:56strongly_inferred
phi_inputp#1p#2cache.py:56strongly_inferred
phi_inputp:undefinedp#2cache.py:56unresolved
phi_inputraw#1raw#2cache.py:56strongly_inferred
phi_inputraw:undefinedraw#2cache.py:56unresolved
phi_inputrel#1rel#2cache.py:56strongly_inferred
phi_inputrel:undefinedrel#2cache.py:56unresolved
phi_inputsize#1size#2cache.py:56strongly_inferred
phi_inputsize:undefinedsize#2cache.py:56unresolved
flows_tomax_files#0identity#1cache.py:78observed
flows_tomax_bytes#0identity#1cache.py:78observed
flows_tomanifest#1identity#1cache.py:79observed
returns_valuemanifest#1return@81cache.py:81observed
returns_valueidentity#1return@81cache.py:81observed
flows_topath#0expr@85cache.py:85observed
flows_topath#0tmp#1cache.py:86observed
flows_totmp#1expr@87cache.py:87observed
flows_todata#0expr@87cache.py:87observed
flows_totmp#1expr@88cache.py:88observed
flows_topath#0expr@88cache.py:88observed
flows_todata#0raw#1cache.py:92observed
flows_topath#0expr@93cache.py:93observed
flows_toraw#1expr@93cache.py:93observed
returns_valueself#0return@104cache.py:104observed
returns_valuesemantic_fingerprint#0return@104cache.py:104observed
returns_valueself#0return@107cache.py:107observed
returns_valueconfig_key#0return@107cache.py:107observed
returns_valuecommit_sha#0return@107cache.py:107observed
flows_toself#0p#1cache.py:110observed
flows_tosemantic_fingerprint#0p#1cache.py:110observed
guardsp#1branchcache.py:111observed
guardsp#1with_scopecache.py:114observed
flows_top#1fh#1cache.py:114observed
returns_valuefh#1return@115cache.py:115observed
flows_tograph#0raw#1cache.py:120observed
flows_toraw#1payload#1cache.py:121observed
flows_toself#0expr@122cache.py:122observed
flows_tosemantic_fingerprint#0expr@122cache.py:122observed
flows_topayload#1expr@122cache.py:122observed
returns_valuepayload#1return@123cache.py:123observed
flows_toself#0p#1cache.py:126observed
flows_toconfig_key#0p#1cache.py:126observed
flows_tocommit_sha#0p#1cache.py:126observed
guardsp#1branchcache.py:127observed
returns_valuep#1return@130cache.py:130observed
flows_toself#0expr@135cache.py:135observed
flows_toconfig_key#0expr@135cache.py:135observed
flows_tocommit_sha#0expr@135cache.py:135observed
flows_torecord#0expr@135cache.py:135observed
flows_toself#0p#1cache.py:138observed
flows_tofingerprint#0p#1cache.py:138observed
guardsp#1branchcache.py:140observed
flows_top#1old#2cache.py:142observed
phi_inputold#3old#4cache.py:141strongly_inferred
phi_inputold#2old#4cache.py:141strongly_inferred
phi_inputold#4old#5cache.py:140strongly_inferred
phi_inputold#1old#5cache.py:140strongly_inferred
flows_tofingerprint#0record#1cache.py:147observed
flows_toold#5record#1cache.py:148observed
flows_toold#5record#1cache.py:149observed
flows_topayload#0record#1cache.py:150observed
flows_top#1expr@152cache.py:152observed
flows_torecord#1expr@152cache.py:152observed
returns_valuerecord#1return@153cache.py:153observed
flows_tograph#0graph#1cache.py:157observed
returns_valuegraph#1return@159cache.py:159observed
flows_toroot#0root#1cache.py:171observed
flows_tocache_dir#0store#1cache.py:172observed
flows_tomax_files#0cfg#1cache.py:173observed
flows_tomax_bytes#0cfg#1cache.py:173observed
flows_tocfg#1cfg_key#1cache.py:174observed
guardsenabled#0branchcache.py:177observed
guardscommit_sha#0branchcache.py:177observed
flows_tostore#1rec#1cache.py:178observed
flows_tocfg_key#1rec#1cache.py:178observed
flows_tocommit_sha#0rec#1cache.py:178observed
guardsrec#1branchcache.py:179observed
flows_tostore#1graph#1cache.py:180observed
flows_torec#1graph#1cache.py:180observed
guardsgraph#1branchcache.py:181observed
flows_tostore#1info#1cache.py:185observed
flows_tocommit_sha#0info#1cache.py:186observed
flows_tocfg_key#1info#1cache.py:187observed
flows_torec#1info#1cache.py:188observed
flows_tostarted#1info#1cache.py:191observed
flows_tograph#1graph#2cache.py:193observed
flows_toroot#1graph#2cache.py:193observed
returns_valuegraph#2return@195cache.py:195observed
returns_valueinfo#1return@195cache.py:195observed
phi_inputgraph#1graph#3cache.py:179strongly_inferred
phi_inputgraph:undefinedgraph#3cache.py:179unresolved
phi_inputgraph#3graph#4cache.py:177strongly_inferred
phi_inputgraph:undefinedgraph#4cache.py:177unresolved
phi_inputrec#1rec#2cache.py:177strongly_inferred
phi_inputrec:undefinedrec#2cache.py:177unresolved
flows_toroot#1manifest#1cache.py:198observed
flows_tomax_files#0manifest#1cache.py:198observed
flows_tomax_bytes#0manifest#1cache.py:198observed
flows_toroot#1semantic_fp#1cache.py:198observed
flows_tomax_files#0semantic_fp#1cache.py:198observed
flows_tomax_bytes#0semantic_fp#1cache.py:198observed
flows_tomanifest_started#1manifest_elapsed#1cache.py:199observed
guardsenabled#0branchcache.py:201observed

State regions

AccessFunctionRegionKindEvidence
reads_stateinfer_effectanalyzer:global:EFFECT_PATTERNS[]module_global_containeranalyzer.py:33
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.file_relobject_fieldanalyzer.py:123
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.ownerobject_fieldanalyzer.py:124
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.callsobject_fieldanalyzer.py:125
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.controlsobject_fieldanalyzer.py:126
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.effectsobject_fieldanalyzer.py:127
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.state_writesobject_fieldanalyzer.py:128
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.state_readsobject_fieldanalyzer.py:129
writes_stateFunctionScanner.__init__analyzer:FunctionScanner:self.issuesobject_fieldanalyzer.py:130
reads_stateFunctionScanner._controlanalyzer:FunctionScanner:self.controlsobject_fieldanalyzer.py:133
reads_stateFunctionScanner.visit_Tryanalyzer:FunctionScanner:self.controlsobject_fieldanalyzer.py:145
reads_stateFunctionScanner.visit_Tryanalyzer:FunctionScanner:self.issuesobject_fieldanalyzer.py:148
reads_stateFunctionScanner.visit_Tryanalyzer:FunctionScanner:self.issuesobject_fieldanalyzer.py:151
reads_stateFunctionScanner.visit_Callanalyzer:FunctionScanner:self.callsobject_fieldanalyzer.py:157
reads_stateFunctionScanner.visit_Callanalyzer:FunctionScanner:self.effectsobject_fieldanalyzer.py:160
reads_stateFunctionScanner.visit_Attributeanalyzer:FunctionScanner:self.state_readsobject_fieldanalyzer.py:166
reads_stateFunctionScanner.visit_Assignanalyzer:FunctionScanner:self.state_writesobject_fieldanalyzer.py:172
reads_stateFunctionScanner.visit_AnnAssignanalyzer:FunctionScanner:self.state_writesobject_fieldanalyzer.py:177
reads_stateFunctionScanner.visit_AugAssignanalyzer:FunctionScanner:self.state_writesobject_fieldanalyzer.py:182
writes_stateCacheStore.__init__cache:CacheStore:self.rootobject_fieldcache.py:98
writes_stateCacheStore.__init__cache:CacheStore:self.graphsobject_fieldcache.py:99
reads_stateCacheStore.__init__cache:CacheStore:self.rootobject_fieldcache.py:99
writes_stateCacheStore.__init__cache:CacheStore:self.commitsobject_fieldcache.py:100
reads_stateCacheStore.__init__cache:CacheStore:self.rootobject_fieldcache.py:100
writes_stateCacheStore.__init__cache:CacheStore:self.reviewsobject_fieldcache.py:101
reads_stateCacheStore.__init__cache:CacheStore:self.rootobject_fieldcache.py:101
reads_stateCacheStore.graph_pathcache:CacheStore:self.graphsobject_fieldcache.py:104
reads_stateCacheStore.commit_pathcache:CacheStore:self.commitsobject_fieldcache.py:107
reads_stateCacheStore.register_reviewcache:CacheStore:self.reviewsobject_fieldcache.py:138
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:126
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:33
iter_python_filesanalyzer:binding:SKIP_DIRSanalyzer.py:105
analyzeanalyzer:binding:SCHEMAanalyzer.py:598
analyzeanalyzer:binding:ANALYZER_VERSIONanalyzer.py:599
analysis_configcache:binding:CACHE_VERSIONcache.py:24
analyze_with_cachecache:binding:CACHE_VERSIONcache.py:183
analyze_with_cachecache:binding:CACHE_VERSIONcache.py:211
analyze_with_cachecache:binding:CACHE_VERSIONcache.py:231
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
build_invalidation_planincremental:binding:FUNCTION_TYPESincremental.py:41
build_invalidation_planincremental:binding:FUNCTION_TYPESincremental.py:53
build_invalidation_planincremental:binding:INCREMENTAL_VERSIONincremental.py:114
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: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: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: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: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.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_changed_python_paths0.72five or more unresolved/external calls
boundary_orchestrationincremental.pybuild_invalidation_plan0.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_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_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_125fe4728a6b2name-independent coarse structural feature signature
motif_coarse_1d063c7b37b25name-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_69581341d26f7name-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_e3a6d82c57d013name-independent coarse structural feature signature
motif_coarse_ef5db5e5ba383name-independent coarse structural feature signature
motif_coarse_f373ee2a1d218name-independent coarse structural feature signature
motif_coarse_f4a86b4f0a935name-independent coarse structural feature signature
motif_coarse_fca123bd72d612name-independent coarse structural feature signature
motif_coarse_ff49519e01f17name-independent coarse structural feature signature

Per-file SHA-256

PathBytesSHA-256
__init__.py2245a00d19b46ee5ef…
analyzer.py34513cbc52645654f429d…
cache.py10652fb9e602678326058…
cli.py117467aaf293592cb5b63…
dataflow.py3918860b2e9a2d349647c…
diff_report.py11137e5491741ba988fa6…
git_adapter.py6707cc64d3adcf9b77ce…
impact.py205003221edce2184d0bd…
incremental.py561952acaa9296d74b4a…
pr_review.py1541948f4ea59dc7567db…
product_ui.py31255e26442d955e983a5…
report.py31778aad1527fe961823e…
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