{"nodes": [{"id": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "label": "frames.py", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L1"}, {"id": "frames_opcode", "label": "Opcode", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L38"}, {"id": "frames_closecode", "label": "CloseCode", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L56"}, {"id": "frames_frame", "label": "Frame", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L123"}, {"id": "frames_frame_str", "label": ".__str__()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L150"}, {"id": "frames_parse", "label": "parse()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L201"}, {"id": "frames_frame_serialize", "label": ".serialize()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L274"}, {"id": "frames_frame_check", "label": ".check()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L334"}, {"id": "frames_close", "label": "Close", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L353"}, {"id": "frames_close_str", "label": ".__str__()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L366"}, {"id": "frames_close_serialize", "label": ".serialize()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L410"}, {"id": "frames_close_check", "label": ".check()", "file_type": "code", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L418"}, {"id": "frames_rationale_39", "label": "Opcode values for WebSocket frames.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L39"}, {"id": "frames_rationale_57", "label": "Close code values for WebSocket close frames.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L57"}, {"id": "frames_rationale_124", "label": "WebSocket frame. Attributes: opcode: Opcode. data: Payload", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L124"}, {"id": "frames_rationale_151", "label": "Return a human-readable representation of a frame.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L151"}, {"id": "frames_rationale_209", "label": "Parse a WebSocket frame. This is a generator-based coroutine.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L209"}, {"id": "frames_rationale_280", "label": "Serialize a WebSocket frame. Args: mask: Whether the frame", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L280"}, {"id": "frames_rationale_335", "label": "Check that reserved bits and opcode have acceptable values. Raises:", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L335"}, {"id": "frames_rationale_354", "label": "Code and reason for WebSocket close frames. Attributes: code: Close", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L354"}, {"id": "frames_rationale_367", "label": "Return a human-readable representation of a close code and reason.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L367"}, {"id": "frames_rationale_386", "label": "Parse the payload of a close frame. Args: data: Payload of", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L386"}, {"id": "frames_rationale_411", "label": "Serialize the payload of a close frame.", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L411"}, {"id": "frames_rationale_419", "label": "Check that the close code has a valid value for a close frame. Raises:", "file_type": "rationale", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L419"}], "edges": [{"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "dataclasses", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L3", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "enum", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L4", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "io", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L5", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L6", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "secrets", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L7", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "struct", "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L8", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "collections_abc", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L9", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L10", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "backend_venv_lib_python3_12_site_packages_websockets_exceptions_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L12", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "backend_venv_lib_python3_12_site_packages_websockets_typing_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L13", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "backend_venv_lib_python3_12_site_packages_websockets_speedups_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L17", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "backend_venv_lib_python3_12_site_packages_websockets_utils_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L19", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "frames_opcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L38", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "frames_closecode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L56", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "frames_frame", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L123", "weight": 1.0}, {"source": "frames_frame", "target": "frames_frame_str", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L150", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "frames_parse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L201", "weight": 1.0}, {"source": "frames_frame", "target": "frames_frame_serialize", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L274", "weight": 1.0}, {"source": "frames_frame", "target": "frames_frame_check", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L334", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "frames_close", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L353", "weight": 1.0}, {"source": "frames_close", "target": "frames_close_str", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L366", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "frames_parse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L385", "weight": 1.0}, {"source": "frames_close", "target": "frames_close_serialize", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L410", "weight": 1.0}, {"source": "frames_close", "target": "frames_close_check", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L418", "weight": 1.0}, {"source": "backend_venv_lib_python3_12_site_packages_websockets_frames_py", "target": "backend_venv_lib_python3_12_site_packages_websockets_init_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L431", "weight": 1.0}, {"source": "frames_frame_str", "target": "frames_parse", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L172", "weight": 1.0}, {"source": "frames_parse", "target": "frames_opcode", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L239", "weight": 1.0}, {"source": "frames_parse", "target": "frames_close_check", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L270", "weight": 1.0}, {"source": "frames_frame_serialize", "target": "frames_close_check", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L292", "weight": 1.0}, {"source": "frames_close_serialize", "target": "frames_close_check", "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L415", "weight": 1.0}, {"source": "frames_rationale_39", "target": "frames_opcode", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L39", "weight": 1.0}, {"source": "frames_rationale_57", "target": "frames_closecode", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L57", "weight": 1.0}, {"source": "frames_rationale_124", "target": "frames_frame", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L124", "weight": 1.0}, {"source": "frames_rationale_151", "target": "frames_frame_str", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L151", "weight": 1.0}, {"source": "frames_rationale_209", "target": "frames_frame_parse", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L209", "weight": 1.0}, {"source": "frames_rationale_280", "target": "frames_frame_serialize", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L280", "weight": 1.0}, {"source": "frames_rationale_335", "target": "frames_frame_check", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L335", "weight": 1.0}, {"source": "frames_rationale_354", "target": "frames_close", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L354", "weight": 1.0}, {"source": "frames_rationale_367", "target": "frames_close_str", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L367", "weight": 1.0}, {"source": "frames_rationale_386", "target": "frames_close_parse", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L386", "weight": 1.0}, {"source": "frames_rationale_411", "target": "frames_close_serialize", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L411", "weight": 1.0}, {"source": "frames_rationale_419", "target": "frames_close_check", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L419", "weight": 1.0}], "raw_calls": [{"caller_nid": "frames_frame_str", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L156"}, {"caller_nid": "frames_frame_str", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L156"}, {"caller_nid": "frames_frame_str", "callee": "repr", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L162"}, {"caller_nid": "frames_frame_str", "callee": "decode", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L162"}, {"caller_nid": "frames_frame_str", "callee": "bytes", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L162"}, {"caller_nid": "frames_frame_str", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L167"}, {"caller_nid": "frames_frame_str", "callee": "join", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L169"}, {"caller_nid": "frames_frame_str", "callee": "join", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L170"}, {"caller_nid": "frames_frame_str", "callee": "str", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L172"}, {"caller_nid": "frames_frame_str", "callee": "repr", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L180"}, {"caller_nid": "frames_frame_str", "callee": "decode", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L180"}, {"caller_nid": "frames_frame_str", "callee": "bytes", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L180"}, {"caller_nid": "frames_frame_str", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L184"}, {"caller_nid": "frames_frame_str", "callee": "join", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L186"}, {"caller_nid": "frames_frame_str", "callee": "join", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L187"}, {"caller_nid": "frames_frame_str", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L192"}, {"caller_nid": "frames_frame_str", "callee": "join", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L196"}, {"caller_nid": "frames_frame_str", "callee": "filter", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L196"}, {"caller_nid": "frames_parse", "callee": "read_exact", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L229"}, {"caller_nid": "frames_parse", "callee": "unpack", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L230"}, {"caller_nid": "frames_parse", "callee": "ProtocolError", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L241"}, {"caller_nid": "frames_parse", "callee": "ProtocolError", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L244"}, {"caller_nid": "frames_parse", "callee": "read_exact", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L248"}, {"caller_nid": "frames_parse", "callee": "unpack", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L249"}, {"caller_nid": "frames_parse", "callee": "read_exact", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L251"}, {"caller_nid": "frames_parse", "callee": "unpack", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L252"}, {"caller_nid": "frames_parse", "callee": "PayloadTooBig", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L254"}, {"caller_nid": "frames_parse", "callee": "read_exact", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L256"}, {"caller_nid": "frames_parse", "callee": "read_exact", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L259"}, {"caller_nid": "frames_parse", "callee": "apply_mask", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L261"}, {"caller_nid": "frames_parse", "callee": "cls", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L263"}, {"caller_nid": "frames_parse", "callee": "reversed", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L267"}, {"caller_nid": "frames_parse", "callee": "decode", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L268"}, {"caller_nid": "frames_frame_serialize", "callee": "encode", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L297"}, {"caller_nid": "frames_frame_serialize", "callee": "BytesIO", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L299"}, {"caller_nid": "frames_frame_serialize", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L312"}, {"caller_nid": "frames_frame_serialize", "callee": "write", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L314"}, {"caller_nid": "frames_frame_serialize", "callee": "pack", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L314"}, {"caller_nid": "frames_frame_serialize", "callee": "write", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L316"}, {"caller_nid": "frames_frame_serialize", "callee": "pack", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L316"}, {"caller_nid": "frames_frame_serialize", "callee": "write", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L318"}, {"caller_nid": "frames_frame_serialize", "callee": "pack", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L318"}, {"caller_nid": "frames_frame_serialize", "callee": "token_bytes", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L321"}, {"caller_nid": "frames_frame_serialize", "callee": "write", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L322"}, {"caller_nid": "frames_frame_serialize", "callee": "apply_mask", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L327"}, {"caller_nid": "frames_frame_serialize", "callee": "write", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L330"}, {"caller_nid": "frames_frame_serialize", "callee": "getvalue", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L332"}, {"caller_nid": "frames_frame_check", "callee": "ProtocolError", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L343"}, {"caller_nid": "frames_frame_check", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L346"}, {"caller_nid": "frames_frame_check", "callee": "ProtocolError", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L347"}, {"caller_nid": "frames_frame_check", "callee": "ProtocolError", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L349"}, {"caller_nid": "frames_close_str", "callee": "get", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L376"}, {"caller_nid": "frames_parse", "callee": "isinstance", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L397"}, {"caller_nid": "frames_parse", "callee": "AssertionError", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L398"}, {"caller_nid": "frames_parse", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L399"}, {"caller_nid": "frames_parse", "callee": "unpack", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L400"}, {"caller_nid": "frames_parse", "callee": "decode", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L401"}, {"caller_nid": "frames_parse", "callee": "cls", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L402"}, {"caller_nid": "frames_parse", "callee": "len", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L405"}, {"caller_nid": "frames_parse", "callee": "cls", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L406"}, {"caller_nid": "frames_parse", "callee": "ProtocolError", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L408"}, {"caller_nid": "frames_close_serialize", "callee": "pack", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L416"}, {"caller_nid": "frames_close_serialize", "callee": "encode", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L416"}, {"caller_nid": "frames_close_check", "callee": "ProtocolError", "source_file": "backend/venv/lib/python3.12/site-packages/websockets/frames.py", "source_location": "L427"}]}