All classes:
- websockets.exceptions.WebSocketException
- websockets.exceptions.ConnectionClosed
- websockets.exceptions.ConnectionClosedOK
- websockets.exceptions.ConnectionClosedError
- websockets.exceptions.InvalidURI
- websockets.exceptions.InvalidProxy
- websockets.exceptions.InvalidHandshake
- websockets.exceptions.SecurityError
- websockets.exceptions.ProxyError
- websockets.exceptions.InvalidProxyMessage
- websockets.exceptions.InvalidProxyStatus
- websockets.exceptions.InvalidMessage
- websockets.exceptions.InvalidStatus
- websockets.exceptions.InvalidHeader
- websockets.exceptions.InvalidHeaderFormat
- websockets.exceptions.InvalidHeaderValue
- websockets.exceptions.InvalidOrigin
- websockets.exceptions.InvalidUpgrade
- websockets.exceptions.NegotiationError
- websockets.exceptions.DuplicateParameter
- websockets.exceptions.InvalidParameterName
- websockets.exceptions.InvalidParameterValue
- websockets.exceptions.ProtocolError
- websockets.exceptions.PayloadTooBig
- websockets.exceptions.InvalidState
- websockets.exceptions.ConcurrencyError
- websockets.frames.Opcode
- websockets.frames.CloseCode
- websockets.frames.Frame
- websockets.frames.Close
- websockets.extensions.base.Extension
- websockets.extensions.base.ClientExtensionFactory
- websockets.extensions.base.ServerExtensionFactory
- websockets.datastructures.MultipleValuesError
- websockets.datastructures.Headers
- websockets.datastructures.SupportsKeysAndGetItem
- websockets.http11.Request
- websockets.http11.Response
- websockets.streams.StreamReader
- websockets.protocol.Side
- websockets.protocol.State
- websockets.protocol.Protocol
- websockets.uri.WebSocketURI
- websockets.client.ClientProtocol
- websockets.client.ClientConnection
- websockets.extensions.permessage_deflate.PerMessageDeflate
- websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory
- websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory
- websockets.proxy.Proxy
- websockets.asyncio.async_timeout._State
- websockets.asyncio.async_timeout.Timeout
- websockets.asyncio.messages.SimpleQueue
- websockets.asyncio.messages.Assembler
- websockets.asyncio.connection.Connection
- websockets.asyncio.client.ClientConnection
- websockets.asyncio.client.connect
- websockets.asyncio.client.HTTPProxyConnection
- websockets.server.ServerProtocol
- websockets.server.ServerConnection
- websockets.asyncio.server.ServerConnection
- websockets.asyncio.server.Server
- websockets.asyncio.server.serve
- websockets.asyncio.router.Router
- websockets.legacy.exceptions.InvalidStatusCode
- websockets.legacy.exceptions.AbortHandshake
- websockets.legacy.exceptions.RedirectHandshake
- websockets.legacy.framing.Frame
- websockets.legacy.protocol.WebSocketCommonProtocol
- websockets.legacy.server.WebSocketServerProtocol
- websockets.legacy.server.WebSocketServer
- websockets.legacy.server.Serve
- websockets.legacy.auth.BasicAuthWebSocketServerProtocol
- websockets.cli.ReadLines
- websockets.trio.messages.Assembler
- websockets.legacy.client.WebSocketClientProtocol
- websockets.legacy.client.Connect
- websockets.sync.utils.Deadline
- websockets.sync.messages.Assembler
- websockets.sync.connection.Connection
- websockets.sync.server.ServerConnection
- websockets.sync.server.Server
- websockets.sync.router.Router
- websockets.sync.client.ClientConnection
- websockets.sync.client.SSLSSLSocket
All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser'
    functionSourceFile: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser'
    functionUses: 0
    functionsReached:
    - '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser.main'
    - atheris.instrument_imports
    - atheris.Fuzz
    - atheris.Setup
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: atheris.instrument_imports
    functionSourceFile: atheris
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - data
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 12
    functionName: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser.test_one_input'
    functionSourceFile: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser'
    functionUses: 0
    functionsReached:
    - headers.get
    - raw_chunk_size.decode
    - websockets.streams.StreamReader.feed_data
    - <builtin>.range
    - <builtin>.tuple
    - websockets.streams.StreamReader.read_line
    - <builtin>.super
    - chunk_size_line.split
    - websockets.streams.StreamReader.feed_eof
    - _value_re.fullmatch
    - status_line.split
    - <builtin>.next
    - <builtin>.int
    - raw_value.strip
    - websockets.http11.read_body
    - _token_re.fullmatch
    - line.endswith
    - <builtin>.bytearray
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.streams.StreamReader.read_to_eof
    - websockets.streams.StreamReader.__init__
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - websockets.http11.parse_headers
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - websockets.http11.Response.parse
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 16
    functionName: websockets.streams.StreamReader.__init__
    functionSourceFile: websockets.streams
    functionUses: 9
    functionsReached:
    - <builtin>.bytearray
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 115
    functionName: websockets.streams.StreamReader.feed_data
    functionSourceFile: ''
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 132
    functionName: websockets.streams.StreamReader.feed_eof
    functionSourceFile: ''
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 1
    IfCount: 6
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7fee671bdee0>
    argNames:
    - cls
    - read_line
    - read_exact
    - read_to_eof
    - proxy
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 211
    functionName: websockets.http11.Response.parse
    functionSourceFile: websockets.http11
    functionUses: 9
    functionsReached:
    - headers.get
    - raw_chunk_size.decode
    - <builtin>.range
    - <builtin>.tuple
    - websockets.streams.StreamReader.read_line
    - <builtin>.super
    - chunk_size_line.split
    - _value_re.fullmatch
    - status_line.split
    - <builtin>.int
    - raw_value.strip
    - websockets.http11.read_body
    - _token_re.fullmatch
    - line.endswith
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.streams.StreamReader.read_to_eof
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - websockets.http11.parse_headers
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.next
    functionSourceFile: <builtin>
    functionUses: 23
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.isinstance
    functionSourceFile: <builtin>
    functionUses: 108
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 38
    functionName: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser.main'
    functionSourceFile: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser'
    functionUses: 1
    functionsReached:
    - atheris.Fuzz
    - atheris.Setup
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: atheris.Setup
    functionSourceFile: atheris
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: atheris.Fuzz
    functionSourceFile: atheris
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: websockets
    functionSourceFile: websockets
    functionUses: 0
    functionsReached:
    - <builtin>.globals
    - websockets.imports.lazy_import
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.globals
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee6716f6a0>
    - <ast.Constant object at 0x7fee6716f8e0>
    argNames:
    - namespace
    - aliases
    - deprecated_aliases
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 32
    functionName: websockets.imports.lazy_import
    functionSourceFile: websockets.imports
    functionUses: 4
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.asyncio.client
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - os.environ.get
    - <builtin>.int
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.environ.get
    functionSourceFile: os
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.int
    functionSourceFile: <builtin>
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 7
    argDefaultValues: []
    argNames:
    - self
    - protocol
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_queue
    - write_limit
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 67
    functionName: websockets.asyncio.client.ClientConnection.__init__
    functionSourceFile: websockets.asyncio.client
    functionUses: 5
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.super
    functionSourceFile: <builtin>
    functionUses: 62
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 5
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67aab850>
    - <ast.Name object at 0x7fee67aab070>
    argNames:
    - self
    - additional_headers
    - user_agent_header
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 88
    functionName: websockets.asyncio.client.ClientConnection.handshake
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - asyncio.wait
    - asyncio.timeout_at
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 10
    IfCount: 8
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - expected_state
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 865
    functionName: websockets.asyncio.connection.Connection.send_context
    functionSourceFile: websockets.asyncio.connection
    functionUses: 12
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.wait
    functionSourceFile: asyncio
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - event
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 117
    functionName: websockets.asyncio.client.ClientConnection.process_event
    functionSourceFile: websockets.asyncio.client
    functionUses: 2
    functionsReached:
    - <builtin>.super
    - <builtin>.isinstance
    - asyncio.Protocol.response_rcvd.set_result
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.response_rcvd.set_result
    functionSourceFile: asyncio
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - exc
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 132
    functionName: websockets.asyncio.client.process_exception
    functionSourceFile: websockets.asyncio.client
    functionUses: 1
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 20
    argDefaultValues: []
    argNames:
    - self
    - uri
    - origin
    - extensions
    - subprotocols
    - compression
    - additional_headers
    - user_agent_header
    - proxy
    - process_exception
    - open_timeout
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_size
    - max_queue
    - write_limit
    - logger
    - create_connection
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 300
    functionName: websockets.asyncio.client.connect.__init__
    functionSourceFile: websockets.asyncio.client
    functionUses: 4
    functionsReached:
    - websockets.headers.validate_subprotocols
    - logging.getLogger
    - <builtin>.list
    - <builtin>.isinstance
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - <builtin>.any
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - _token_re.fullmatch
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - subprotocols
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 471
    functionName: websockets.headers.validate_subprotocols
    functionSourceFile: websockets.headers
    functionUses: 19
    functionsReached:
    - _token_re.fullmatch
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised:
    - TypeError
    - ValueError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - extensions
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 474
    functionName: websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 9
    functionsReached:
    - <builtin>.any
    - <builtin>.list
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.getLogger
    functionSourceFile: logging
    functionUses: 24
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - uri
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 346
    functionName: websockets.asyncio.client.connect.__init__.protocol_factory
    functionSourceFile: websockets.asyncio.client
    functionUses: 4
    functionsReached:
    - base64.b64encode
    - secrets.token_bytes
    - websockets.asyncio.client.ClientConnection.__init__
    - websockets.utils.generate_key
    - <builtin>.super
    - websockets.client.ClientProtocol.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 8
    argDefaultValues: []
    argNames:
    - self
    - uri
    - origin
    - extensions
    - subprotocols
    - state
    - max_size
    - logger
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 73
    functionName: websockets.client.ClientProtocol.__init__
    functionSourceFile: websockets.client
    functionUses: 7
    functionsReached:
    - base64.b64encode
    - websockets.utils.generate_key
    - secrets.token_bytes
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 18
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 26
    ICount: 8
    IfCount: 18
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 376
    functionName: websockets.asyncio.client.connect.create_connection
    functionSourceFile: websockets.asyncio.client
    functionUses: 2
    functionsReached:
    - websockets.asyncio.client.connect.create_connection.factory
    - loop.create_unix_connection
    - websockets.proxy.get_proxy
    - transport.close
    - transport.set_protocol
    - host.encode
    - websockets.asyncio.client.connect_socks_proxy
    - python_socks.async_.asyncio.Proxy.connect
    - ssl.create_default_context
    - websockets.asyncio.client.connect.__init__.protocol_factory
    - <builtin>.super
    - key.startswith
    - proxies.get
    - all_kwargs.items
    - kwargs.setdefault
    - websockets.asyncio.client.ClientConnection.__init__
    - urllib.parse.urlparse
    - urllib.request.getproxies
    - base64.b64encode
    - proxy_kwargs.get
    - urllib.parse.quote
    - proxy_kwargs.setdefault
    - uri.encode
    - connection.connection_made
    - proxy.encode
    - websockets.proxy.parse_proxy
    - loop.create_connection
    - kwargs.pop
    - asyncio.get_running_loop
    - proxy.startswith
    - websockets.client.ClientProtocol.__init__
    - urllib.request.proxy_bypass
    - websockets.uri.parse_uri
    - loop.start_tls
    - secrets.token_bytes
    - websockets.asyncio.client.connect_http_proxy
    - websockets.utils.generate_key
    - python_socks.async_.asyncio.Proxy
    - kwargs.get
    linkageType: pythonLinkage
    raised:
    - ValueError
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.get_running_loop
    functionSourceFile: asyncio
    functionUses: 62
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 2
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - uri
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 60
    functionName: websockets.uri.parse_uri
    functionSourceFile: websockets.uri
    functionUses: 11
    functionsReached:
    - uri.encode
    - host.encode
    - urllib.parse.urlparse
    - urllib.parse.quote
    linkageType: pythonLinkage
    raised:
    - InvalidURI
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: kwargs.get
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - uri
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 98
    functionName: websockets.proxy.get_proxy
    functionSourceFile: websockets.proxy
    functionUses: 5
    functionsReached:
    - proxies.get
    - urllib.request.proxy_bypass
    - urllib.request.getproxies
    - proxy.startswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 391
    functionName: websockets.asyncio.client.connect.create_connection.factory
    functionSourceFile: websockets.asyncio.client
    functionUses: 3
    functionsReached:
    - base64.b64encode
    - secrets.token_bytes
    - websockets.asyncio.client.ClientConnection.__init__
    - websockets.utils.generate_key
    - websockets.asyncio.client.connect.__init__.protocol_factory
    - <builtin>.super
    - websockets.client.ClientProtocol.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: kwargs.setdefault
    functionSourceFile: <builtin>
    functionUses: 17
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: kwargs.pop
    functionSourceFile: <builtin>
    functionUses: 17
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: loop.create_unix_connection
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 2
    IfCount: 7
    argCount: 1
    argDefaultValues: []
    argNames:
    - proxy
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 48
    functionName: websockets.proxy.parse_proxy
    functionSourceFile: websockets.proxy
    functionUses: 5
    functionsReached:
    - host.encode
    - proxy.encode
    - urllib.parse.urlparse
    - urllib.parse.quote
    linkageType: pythonLinkage
    raised:
    - InvalidProxy
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - proxy
    - ws_uri
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 700
    functionName: websockets.asyncio.client.connect_socks_proxy
    functionSourceFile: websockets.asyncio.client
    functionUses: 3
    functionsReached:
    - python_socks.async_.asyncio.Proxy
    - python_socks.async_.asyncio.Proxy.connect
    linkageType: pythonLinkage
    raised:
    - ProxyError
    - ImportError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: loop.create_connection
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: all_kwargs.items
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: key.startswith
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: proxy_kwargs.setdefault
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: proxy_kwargs.get
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee675901c0>
    argNames:
    - proxy
    - ws_uri
    - user_agent_header
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 784
    functionName: websockets.asyncio.client.connect_http_proxy
    functionSourceFile: websockets.asyncio.client
    functionUses: 3
    functionsReached:
    - transport.close
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: transport.set_protocol
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ssl.create_default_context
    functionSourceFile: ssl
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: loop.start_tls
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.connection_made
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 1
    IfCount: 6
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 473
    functionName: websockets.asyncio.client.connect.process_redirect
    functionSourceFile: websockets.asyncio.client
    functionUses: 2
    functionsReached:
    - urllib.parse.quote
    - <builtin>.isinstance
    - websockets.uri.parse_uri
    - uri.encode
    - host.encode
    - urllib.parse.urljoin
    - urllib.parse.urlparse
    - <builtin>.ValueError
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urljoin
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.ValueError
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 536
    functionName: websockets.asyncio.client.connect.__await__
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - websockets.asyncio.client.connect.create_connection.factory
    - loop.create_unix_connection
    - <builtin>.range
    - websockets.proxy.get_proxy
    - transport.set_protocol
    - host.encode
    - websockets.asyncio.client.connect_socks_proxy
    - websockets.asyncio.client.connect.create_connection
    - python_socks.async_.asyncio.Proxy.connect
    - websockets.asyncio.client.connect.__await_impl__
    - ssl.create_default_context
    - websockets.asyncio.client.connect.__init__.protocol_factory
    - <builtin>.super
    - <builtin>.ValueError
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - key.startswith
    - python_socks.async_.asyncio.Proxy
    - proxies.get
    - all_kwargs.items
    - kwargs.setdefault
    - websockets.asyncio.client.ClientConnection.__init__
    - asyncio.current_task
    - urllib.parse.urlparse
    - urllib.parse.urljoin
    - urllib.request.getproxies
    - websockets.asyncio.async_timeout.timeout
    - base64.b64encode
    - proxy_kwargs.get
    - urllib.parse.quote
    - proxy_kwargs.setdefault
    - websockets.asyncio.async_timeout.Timeout.__init__
    - uri.encode
    - connection.connection_made
    - proxy.encode
    - websockets.proxy.parse_proxy
    - loop.create_connection
    - loop.time
    - kwargs.pop
    - asyncio.get_running_loop
    - proxy.startswith
    - websockets.client.ClientProtocol.__init__
    - urllib.request.proxy_bypass
    - <builtin>.isinstance
    - websockets.uri.parse_uri
    - websockets.asyncio.client.connect.process_redirect
    - loop.start_tls
    - websockets.asyncio.async_timeout.Timeout.update
    - secrets.token_bytes
    - websockets.asyncio.client.connect_http_proxy
    - websockets.utils.generate_key
    - asyncio.timeout
    - transport.close
    - kwargs.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 540
    functionName: websockets.asyncio.client.connect.__await_impl__
    functionSourceFile: websockets.asyncio.client
    functionUses: 1
    functionsReached:
    - websockets.asyncio.client.connect.create_connection.factory
    - loop.create_unix_connection
    - <builtin>.range
    - websockets.proxy.get_proxy
    - transport.set_protocol
    - host.encode
    - websockets.asyncio.client.connect_socks_proxy
    - websockets.asyncio.client.connect.create_connection
    - python_socks.async_.asyncio.Proxy.connect
    - ssl.create_default_context
    - websockets.asyncio.client.connect.__init__.protocol_factory
    - <builtin>.super
    - <builtin>.ValueError
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - key.startswith
    - python_socks.async_.asyncio.Proxy
    - proxies.get
    - all_kwargs.items
    - kwargs.setdefault
    - websockets.asyncio.client.ClientConnection.__init__
    - asyncio.current_task
    - urllib.parse.urlparse
    - urllib.parse.urljoin
    - urllib.request.getproxies
    - websockets.asyncio.async_timeout.timeout
    - base64.b64encode
    - proxy_kwargs.get
    - urllib.parse.quote
    - proxy_kwargs.setdefault
    - websockets.asyncio.async_timeout.Timeout.__init__
    - uri.encode
    - connection.connection_made
    - proxy.encode
    - websockets.proxy.parse_proxy
    - loop.create_connection
    - loop.time
    - kwargs.pop
    - asyncio.get_running_loop
    - proxy.startswith
    - websockets.client.ClientProtocol.__init__
    - urllib.request.proxy_bypass
    - <builtin>.isinstance
    - websockets.uri.parse_uri
    - websockets.asyncio.client.connect.process_redirect
    - loop.start_tls
    - websockets.asyncio.async_timeout.Timeout.update
    - secrets.token_bytes
    - websockets.asyncio.client.connect_http_proxy
    - websockets.utils.generate_key
    - asyncio.timeout
    - transport.close
    - kwargs.get
    linkageType: pythonLinkage
    raised:
    - TimeoutError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - delay
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 72
    functionName: websockets.asyncio.async_timeout.timeout
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 43
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    - loop.time
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.timeout
    functionSourceFile: asyncio
    functionUses: 43
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.range
    functionSourceFile: <builtin>
    functionUses: 30
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 589
    functionName: websockets.asyncio.client.connect.__aenter__
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 592
    functionName: websockets.asyncio.client.connect.__aexit__
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 602
    functionName: websockets.asyncio.client.connect.__aiter__
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - <builtin>.isinstance
    - traceback.format_exception_only
    - websockets.asyncio.client.process_exception
    - <builtin>.next
    - websockets.client.backoff
    - random.random
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 4
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Name object at 0x7fee67bd3040>
    - <ast.Name object at 0x7fee67bd3790>
    - <ast.Name object at 0x7fee67bd3d90>
    - <ast.Name object at 0x7fee67bd3100>
    argNames:
    - initial_delay
    - min_delay
    - max_delay
    - factor
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 359
    functionName: websockets.client.backoff
    functionSourceFile: websockets.client
    functionUses: 1
    functionsReached:
    - random.random
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: traceback.format_exception_only
    functionSourceFile: traceback
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.sleep
    functionSourceFile: asyncio
    functionUses: 47
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee6716f0d0>
    - <ast.Constant object at 0x7fee6716f400>
    argNames:
    - path
    - uri
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 643
    functionName: websockets.asyncio.client.unix_connect
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - websockets.headers.validate_subprotocols
    - logging.getLogger
    - websockets.asyncio.client.connect.__init__
    - <builtin>.list
    - <builtin>.isinstance
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - <builtin>.any
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - _token_re.fullmatch
    - kwargs.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: python_socks.async_.asyncio.Proxy
    functionSourceFile: python_socks
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: python_socks.async_.asyncio.Proxy.connect
    functionSourceFile: python_socks
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee6718ea00>
    argNames:
    - self
    - ws_uri
    - proxy
    - user_agent_header
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 726
    functionName: websockets.asyncio.client.HTTPProxyConnection.__init__
    functionSourceFile: websockets.asyncio.client
    functionUses: 1
    functionsReached:
    - headers.get
    - raw_chunk_size.decode
    - <builtin>.range
    - <builtin>.tuple
    - websockets.streams.StreamReader.read_line
    - <builtin>.super
    - chunk_size_line.split
    - _value_re.fullmatch
    - status_line.split
    - <builtin>.int
    - raw_value.strip
    - websockets.http11.read_body
    - _token_re.fullmatch
    - line.endswith
    - <builtin>.bytearray
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.streams.StreamReader.read_to_eof
    - loop.create_future
    - websockets.streams.StreamReader.__init__
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - websockets.http11.parse_headers
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - asyncio.get_running_loop
    - <builtin>.isinstance
    - websockets.http11.Response.parse
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: loop.create_future
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 747
    functionName: websockets.asyncio.client.HTTPProxyConnection.run_parser
    functionSourceFile: websockets.asyncio.client
    functionUses: 2
    functionsReached:
    - websockets.exceptions.InvalidProxyStatus.__init__
    - <builtin>.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - response
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 231
    functionName: websockets.exceptions.InvalidProxyStatus.__init__
    functionSourceFile: ''
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - transport
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 763
    functionName: websockets.asyncio.client.HTTPProxyConnection.connection_made
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - base64.b64encode
    - asyncio.Protocol.write
    - <builtin>.str
    - websockets.proxy.prepare_connect_request
    - <builtin>.isinstance
    - typing.cast
    - ipaddress.ip_address
    - typing.cast.write
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - user_pass.encode
    - websockets.headers.build_authorization_basic
    - websockets.datastructures.Headers.__init__
    - websockets.headers.build_host
    - <builtin>.super
    - websockets.datastructures.Headers.serialize
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast
    functionSourceFile: typing
    functionUses: 46
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Name object at 0x7fee6735b3d0>
    argNames:
    - proxy
    - ws_uri
    - user_agent_header
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 134
    functionName: websockets.proxy.prepare_connect_request
    functionSourceFile: websockets.proxy
    functionUses: 4
    functionsReached:
    - base64.b64encode
    - <builtin>.str
    - <builtin>.isinstance
    - ipaddress.ip_address
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - user_pass.encode
    - websockets.headers.build_authorization_basic
    - websockets.datastructures.Headers.__init__
    - websockets.headers.build_host
    - <builtin>.super
    - websockets.datastructures.Headers.serialize
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.write
    functionSourceFile: asyncio
    functionUses: 40
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.write
    functionSourceFile: typing
    functionUses: 40
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 770
    functionName: websockets.asyncio.client.HTTPProxyConnection.data_received
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - websockets.asyncio.client.HTTPProxyConnection.run_parser
    - websockets.exceptions.InvalidProxyStatus.__init__
    - websockets.streams.StreamReader.feed_data
    - <builtin>.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 774
    functionName: websockets.asyncio.client.HTTPProxyConnection.eof_received
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.feed_eof
    - websockets.asyncio.client.HTTPProxyConnection.run_parser
    - websockets.exceptions.InvalidProxyStatus.__init__
    - <builtin>.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 778
    functionName: websockets.asyncio.client.HTTPProxyConnection.connection_lost
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.feed_eof
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: -1
    functionName: websockets.asyncio.client.connect_http_proxy.<lambda1>
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - headers.get
    - raw_chunk_size.decode
    - <builtin>.range
    - <builtin>.tuple
    - websockets.streams.StreamReader.read_line
    - <builtin>.super
    - chunk_size_line.split
    - _value_re.fullmatch
    - status_line.split
    - websockets.asyncio.client.HTTPProxyConnection.__init__
    - <builtin>.int
    - websockets.http11.read_body
    - raw_value.strip
    - _token_re.fullmatch
    - line.endswith
    - <builtin>.bytearray
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.streams.StreamReader.read_to_eof
    - loop.create_future
    - websockets.streams.StreamReader.__init__
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - websockets.http11.parse_headers
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - asyncio.get_running_loop
    - <builtin>.isinstance
    - websockets.http11.Response.parse
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: transport.close
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.extensions.base
    functionSourceFile: websockets.extensions.base
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - frame
    - max_size
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 21
    functionName: websockets.extensions.base.Extension.decode
    functionSourceFile: websockets.extensions.base
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 38
    functionName: websockets.extensions.base.Extension.encode
    functionSourceFile: websockets.extensions.base
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 61
    functionName: websockets.extensions.base.ClientExtensionFactory.get_request_params
    functionSourceFile: websockets.extensions.base
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - params
    - accepted_extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 71
    functionName: websockets.extensions.base.ClientExtensionFactory.process_response_params
    functionSourceFile: websockets.extensions.base
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - params
    - accepted_extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 102
    functionName: websockets.extensions.base.ServerExtensionFactory.process_request_params
    functionSourceFile: websockets.extensions.base
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.frames
    functionSourceFile: websockets.frames
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.frames.Frame
    functionSourceFile: websockets.frames
    functionUses: 0
    functionsReached:
    - os.environ.get
    - <builtin>.int
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 1
    IfCount: 7
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 150
    functionName: websockets.frames.Frame.__str__
    functionSourceFile: websockets.frames
    functionUses: 0
    functionsReached:
    - websockets.frames.Close.parse
    - <builtin>.str
    - <builtin>.isinstance
    - struct.unpack
    - <builtin>.bytes
    - <builtin>.len
    - close.check
    - <builtin>.repr
    - <builtin>.filter
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.len
    functionSourceFile: <builtin>
    functionUses: 109
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.bytes
    functionSourceFile: <builtin>
    functionUses: 29
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.repr
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - cls
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 385
    functionName: websockets.frames.Close.parse
    functionSourceFile: websockets.frames
    functionUses: 12
    functionsReached:
    - <builtin>.len
    - struct.unpack
    - close.check
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.str
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.filter
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 2
    IfCount: 7
    argCount: 5
    argDefaultValues: []
    argNames:
    - cls
    - read_exact
    - mask
    - max_size
    - extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 201
    functionName: websockets.frames.Frame.parse
    functionSourceFile: websockets.frames
    functionUses: 1
    functionsReached:
    - int.from_bytes
    - struct.unpack
    - websockets.utils.apply_mask
    - extension.decode
    - <builtin>.reversed
    - enum.IntEnum.__init__
    - frame.check
    - <builtin>.len
    - speedups.apply_mask
    - websockets.streams.StreamReader.read_exact
    linkageType: pythonLinkage
    raised:
    - PayloadTooBig
    - ProtocolError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - n
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 54
    functionName: websockets.streams.StreamReader.read_exact
    functionSourceFile: websockets.streams
    functionUses: 13
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: struct.unpack
    functionSourceFile: struct
    functionUses: 16
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: enum.IntEnum.__init__
    functionSourceFile: ''
    functionUses: 38
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: speedups.apply_mask
    functionSourceFile: speedups
    functionUses: 22
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - data
    - mask
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 38
    functionName: websockets.utils.apply_mask
    functionSourceFile: websockets.utils
    functionUses: 22
    functionsReached:
    - <builtin>.len
    - int.from_bytes
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.reversed
    functionSourceFile: <builtin>
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extension.decode
    functionSourceFile: <builtin>
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: frame.check
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 7
    IfCount: 5
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - mask
    - extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 274
    functionName: websockets.frames.Frame.serialize
    functionSourceFile: websockets.frames
    functionUses: 10
    functionsReached:
    - io.BytesIO
    - struct.pack
    - int.from_bytes
    - secrets.token_bytes
    - websockets.utils.apply_mask
    - output.write
    - extension.encode
    - <builtin>.len
    - speedups.apply_mask
    - output.getvalue
    - websockets.frames.Frame.check
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 334
    functionName: websockets.frames.Frame.check
    functionSourceFile: websockets.frames
    functionUses: 11
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extension.encode
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: io.BytesIO
    functionSourceFile: io
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: struct.pack
    functionSourceFile: struct
    functionUses: 50
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: output.write
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: secrets.token_bytes
    functionSourceFile: secrets
    functionUses: 22
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: output.getvalue
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 366
    functionName: websockets.frames.Close.__str__
    functionSourceFile: websockets.frames
    functionUses: 0
    functionsReached:
    - CLOSE_CODE_EXPLANATIONS.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: CLOSE_CODE_EXPLANATIONS.get
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: close.check
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 410
    functionName: websockets.frames.Close.serialize
    functionSourceFile: websockets.frames
    functionUses: 39
    functionsReached:
    - websockets.frames.Close.check
    - struct.pack
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 418
    functionName: websockets.frames.Close.check
    functionSourceFile: ''
    functionUses: 40
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.extensions
    functionSourceFile: websockets.extensions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 13
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.typing
    functionSourceFile: websockets.typing
    functionUses: 0
    functionsReached:
    - typing.NewType
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.NewType
    functionSourceFile: typing
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.utils
    functionSourceFile: websockets.utils
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 17
    functionName: websockets.utils.generate_key
    functionSourceFile: websockets.utils
    functionUses: 10
    functionsReached:
    - base64.b64encode
    - secrets.token_bytes
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: base64.b64encode
    functionSourceFile: base64
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - key
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 26
    functionName: websockets.utils.accept_key
    functionSourceFile: websockets.utils
    functionUses: 11
    functionsReached:
    - base64.b64encode
    - hashlib.sha1
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: hashlib.sha1
    functionSourceFile: hashlib
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: int.from_bytes
    functionSourceFile: <builtin>
    functionUses: 23
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.streams
    functionSourceFile: websockets.streams
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.bytearray
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - m
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 20
    functionName: websockets.streams.StreamReader.read_line
    functionSourceFile: websockets.streams
    functionUses: 17
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    - RuntimeError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - m
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 77
    functionName: websockets.streams.StreamReader.read_to_eof
    functionSourceFile: websockets.streams
    functionUses: 11
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 99
    functionName: websockets.streams.StreamReader.at_eof
    functionSourceFile: websockets.streams
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 146
    functionName: websockets.streams.StreamReader.discard
    functionSourceFile: websockets.streams
    functionUses: 9
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.datastructures
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 20
    functionName: websockets.datastructures.MultipleValuesError.__str__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - <builtin>.repr
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 68
    functionName: websockets.datastructures.Headers.__init__
    functionSourceFile: websockets.datastructures
    functionUses: 28
    functionsReached:
    - <builtin>.isinstance
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 132
    functionName: websockets.datastructures.Headers.update
    functionSourceFile: websockets.datastructures
    functionUses: 29
    functionsReached:
    - <builtin>.tuple
    - arg.raw_items
    - <builtin>.super
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 73
    functionName: websockets.datastructures.Headers.__str__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 76
    functionName: websockets.datastructures.Headers.__repr__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 79
    functionName: websockets.datastructures.Headers.copy
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 85
    functionName: websockets.datastructures.Headers.serialize
    functionSourceFile: websockets.datastructures
    functionUses: 5
    functionsReached:
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 91
    functionName: websockets.datastructures.Headers.__contains__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - key.lower
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: key.lower
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 94
    functionName: websockets.datastructures.Headers.__iter__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - <builtin>.iter
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.iter
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 97
    functionName: websockets.datastructures.Headers.__len__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 102
    functionName: websockets.datastructures.Headers.__getitem__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - key.lower
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - MultipleValuesError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - key
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 109
    functionName: websockets.datastructures.Headers.__setitem__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - key.lower
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 113
    functionName: websockets.datastructures.Headers.__delitem__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - key.lower
    - k.lower
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: k.lower
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 119
    functionName: websockets.datastructures.Headers.__eq__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 124
    functionName: websockets.datastructures.Headers.clear
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: arg.raw_items
    functionSourceFile: <builtin>
    functionUses: 30
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.tuple
    functionSourceFile: <builtin>
    functionUses: 30
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 144
    functionName: websockets.datastructures.Headers.get_all
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - key.lower
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 154
    functionName: websockets.datastructures.Headers.raw_items
    functionSourceFile: websockets.datastructures
    functionUses: 6
    functionsReached:
    - <builtin>.iter
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 169
    functionName: websockets.datastructures.SupportsKeysAndGetItem.keys
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 171
    functionName: websockets.datastructures.SupportsKeysAndGetItem.__getitem__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: websockets.client
    functionSourceFile: websockets.client
    functionUses: 0
    functionsReached:
    - websockets.imports.lazy_import
    - os.environ.get
    - <builtin>.set
    - <builtin>.globals
    - <builtin>.float
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 96
    functionName: websockets.client.ClientProtocol.connect
    functionSourceFile: websockets.client
    functionUses: 0
    functionsReached:
    - base64.b64encode
    - extension_factory.get_request_params
    - <builtin>.isinstance
    - websockets.headers.build_extension
    - ipaddress.ip_address
    - arg.raw_items
    - websockets.headers.build_extension_item
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - user_pass.encode
    - websockets.headers.build_subprotocol
    - websockets.headers.build_authorization_basic
    - websockets.datastructures.Headers.__init__
    - websockets.headers.build_host
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 4
    argDefaultValues: []
    argNames:
    - host
    - port
    - secure
    - always_include_port
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 39
    functionName: websockets.headers.build_host
    functionSourceFile: websockets.headers
    functionUses: 7
    functionsReached:
    - ipaddress.ip_address
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - username
    - password
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 575
    functionName: websockets.headers.build_authorization_basic
    functionSourceFile: websockets.headers
    functionUses: 7
    functionsReached:
    - base64.b64encode
    - user_pass.encode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extension_factory.get_request_params
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - extensions
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 411
    functionName: websockets.headers.build_extension
    functionSourceFile: websockets.headers
    functionUses: 9
    functionsReached:
    - websockets.headers.build_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - subprotocols
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 458
    functionName: websockets.headers.build_subprotocol
    functionSourceFile: ''
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - response
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 131
    functionName: websockets.client.ClientProtocol.process_response
    functionSourceFile: websockets.client
    functionUses: 2
    functionsReached:
    - websockets.headers.parse_list
    - websockets.utils.accept_key
    - websockets.headers.parse_OWS
    - websockets.client.ClientProtocol.process_subprotocol
    - websockets.client.ClientProtocol.process_extensions
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_extension
    - headers.get_all
    - extension_factory.process_response_params
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - websockets.headers.parse_upgrade
    - match.end
    - accepted_extensions.append
    - match.group
    - websockets.headers.parse_token
    - hashlib.sha1
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - value.lower
    - base64.b64encode
    - _token_re.match
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_connection
    - websockets.headers.parse_subprotocol_item
    - <builtin>.any
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - InvalidStatus
    - InvalidUpgrade
    - InvalidHeader
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - header
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 247
    functionName: websockets.headers.parse_connection
    functionSourceFile: websockets.headers
    functionUses: 11
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: headers.get_all
    functionSourceFile: <builtin>
    functionUses: 19
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.sum
    functionSourceFile: <builtin>
    functionUses: 19
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: value.lower
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.any
    functionSourceFile: <builtin>
    functionUses: 34
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - header
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 286
    functionName: websockets.headers.parse_upgrade
    functionSourceFile: websockets.headers
    functionUses: 11
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - headers
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 176
    functionName: websockets.client.ClientProtocol.process_extensions
    functionSourceFile: websockets.client
    functionUses: 3
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_extension
    - headers.get_all
    - extension_factory.process_response_params
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - accepted_extensions.append
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - NegotiationError
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - headers
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 249
    functionName: websockets.client.ClientProtocol.process_subprotocol
    functionSourceFile: websockets.client
    functionUses: 3
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - NegotiationError
    - InvalidHeader
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - header
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 363
    functionName: websockets.headers.parse_extension
    functionSourceFile: websockets.headers
    functionUses: 13
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extension_factory.process_response_params
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: accepted_extensions.append
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - header
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 442
    functionName: websockets.headers.parse_subprotocol
    functionSourceFile: websockets.headers
    functionUses: 13
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - request
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 285
    functionName: websockets.client.ClientProtocol.send_request
    functionSourceFile: websockets.client
    functionUses: 0
    functionsReached:
    - request.headers.raw_items
    - request.serialize
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: request.headers.raw_items
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: request.serialize
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 13
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 300
    functionName: websockets.client.ClientProtocol.parse
    functionSourceFile: websockets.client
    functionUses: 1
    functionsReached:
    - headers.get
    - websockets.utils.accept_key
    - websockets.headers.parse_list
    - websockets.protocol.Protocol.send_eof
    - websockets.client.ClientProtocol.process_subprotocol
    - websockets.client.ClientProtocol.process_extensions
    - raw_chunk_size.decode
    - websockets.headers.parse_subprotocol
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item_param
    - <builtin>.range
    - <builtin>.tuple
    - _OWS_re.match
    - _protocol_re.match
    - websockets.streams.StreamReader.read_line
    - websockets.headers.parse_extension
    - headers.get_all
    - <builtin>.super
    - extension_factory.process_response_params
    - chunk_size_line.split
    - websockets.streams.StreamReader.at_eof
    - _value_re.fullmatch
    - _quoted_string_re.match
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_upgrade
    - websockets.streams.StreamReader.discard
    - match.end
    - status_line.split
    - accepted_extensions.append
    - match.group
    - websockets.headers.parse_token
    - hashlib.sha1
    - <builtin>.next
    - _unquote_re.sub
    - items.append
    - <builtin>.int
    - websockets.client.ClientProtocol.process_response
    - websockets.http11.read_body
    - raw_value.strip
    - _token_re.fullmatch
    - value.lower
    - base64.b64encode
    - response.headers.raw_items
    - websockets.protocol.Protocol.discard
    - line.endswith
    - arg.raw_items
    - _token_re.match
    - websockets.datastructures.Headers.update
    - websockets.streams.StreamReader.read_to_eof
    - <builtin>.sum
    - websockets.headers.parse_connection_option
    - websockets.datastructures.Headers.__init__
    - websockets.http11.parse_headers
    - websockets.streams.StreamReader.read_exact
    - raw_name.decode
    - raw_value.decode
    - line.split
    - parameters.append
    - websockets.headers.parse_quoted_string
    - <builtin>.isinstance
    - typing.cast
    - websockets.headers.parse_connection
    - websockets.headers.parse_subprotocol_item
    - raw_reason.decode
    - <builtin>.any
    - websockets.http11.Response.parse
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.http11.parse_line
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 763
    functionName: websockets.protocol.Protocol.send_eof
    functionSourceFile: ''
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 641
    functionName: websockets.protocol.Protocol.discard
    functionSourceFile: websockets.protocol
    functionUses: 7
    functionsReached:
    - websockets.protocol.Protocol.send_eof
    - websockets.streams.StreamReader.discard
    - websockets.streams.StreamReader.at_eof
    linkageType: pythonLinkage
    raised:
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: response.headers.raw_items
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 345
    functionName: websockets.client.ClientConnection.__init__
    functionSourceFile: websockets.client
    functionUses: 0
    functionsReached:
    - warnings.warn
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: warnings.warn
    functionSourceFile: warnings
    functionUses: 34
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.float
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: random.random
    functionSourceFile: random
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.uri
    functionSourceFile: websockets.uri
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 43
    functionName: websockets.uri.WebSocketURI.resource_name
    functionSourceFile: websockets.uri
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 53
    functionName: websockets.uri.WebSocketURI.user_info
    functionSourceFile: websockets.uri
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.urlparse
    functionSourceFile: <builtin>
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: uri.encode
    functionSourceFile: <builtin>
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: host.encode
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.parse.quote
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.protocol
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.protocol.Side
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.range
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.protocol.State
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.range
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 5
    argDefaultValues: []
    argNames:
    - self
    - side
    - state
    - max_size
    - logger
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 89
    functionName: websockets.protocol.Protocol.__init__
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - websockets.utils.accept_key
    - websockets.client.ClientProtocol.process_extensions
    - raw_chunk_size.decode
    - _protocol_re.match
    - <builtin>.range
    - <builtin>.tuple
    - websockets.headers.parse_extension
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - status_line.split
    - uuid.uuid4
    - base64.b64encode
    - request_line.split
    - arg.raw_items
    - _token_re.match
    - parameters.append
    - <builtin>.isinstance
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item
    - websockets.protocol.Protocol.send_eof
    - websockets.http11.Request.parse
    - raw_path.decode
    - websockets.streams.StreamReader.discard
    - match.end
    - accepted_extensions.append
    - hashlib.sha1
    - _unquote_re.sub
    - websockets.http11.read_body
    - value.lower
    - request.headers.raw_items
    - websockets.client.ClientProtocol.parse
    - websockets.streams.StreamReader.read_to_eof
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_quoted_string
    - <builtin>.any
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.streams.StreamReader.read_line
    - <builtin>.super
    - websockets.streams.StreamReader.at_eof
    - chunk_size_line.split
    - _value_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.next
    - websockets.client.ClientProtocol.process_response
    - raw_value.strip
    - _token_re.fullmatch
    - response.headers.raw_items
    - line.endswith
    - <builtin>.bytearray
    - websockets.datastructures.Headers.update
    - <builtin>.sum
    - websockets.datastructures.Headers.__init__
    - websockets.http11.parse_headers
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - websockets.headers.parse_connection
    - websockets.http11.Response.parse
    - headers.get
    - websockets.client.ClientProtocol.process_subprotocol
    - websockets.headers.parse_subprotocol
    - extension_factory.process_response_params
    - logging.getLogger
    - websockets.headers.parse_upgrade
    - match.group
    - websockets.headers.parse_token
    - items.append
    - <builtin>.int
    - websockets.protocol.Protocol.discard
    - websockets.streams.StreamReader.__init__
    - websockets.server.ServerProtocol.parse
    - raw_name.decode
    - side.name.lower
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - logger.isEnabledFor
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: uuid.uuid4
    functionSourceFile: uuid
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: side.name.lower
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logger.isEnabledFor
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 544
    functionName: websockets.server.ServerProtocol.parse
    functionSourceFile: websockets.server
    functionUses: 1
    functionsReached:
    - websockets.protocol.Protocol.send_eof
    - <builtin>.range
    - <builtin>.tuple
    - websockets.http11.Request.parse
    - websockets.streams.StreamReader.read_line
    - raw_path.decode
    - <builtin>.super
    - websockets.streams.StreamReader.at_eof
    - _value_re.fullmatch
    - websockets.streams.StreamReader.discard
    - <builtin>.next
    - <builtin>.int
    - raw_value.strip
    - _token_re.fullmatch
    - request.headers.raw_items
    - websockets.protocol.Protocol.discard
    - request_line.split
    - line.endswith
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - websockets.http11.parse_headers
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - <builtin>.len
    - websockets.http11.parse_line
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - state
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 176
    functionName: websockets.protocol.Protocol.state
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.protocol.Protocol
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - enum.IntEnum.CLOSED.setter
    - enum.IntEnum.CLOSING.setter
    - enum.IntEnum.OPEN.setter
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: enum.IntEnum.CLOSED.setter
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: enum.IntEnum.CLOSING.setter
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: enum.IntEnum.OPEN.setter
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 182
    functionName: websockets.protocol.Protocol.close_code
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 201
    functionName: websockets.protocol.Protocol.close_reason
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 220
    functionName: websockets.protocol.Protocol.close_exc
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - websockets.exceptions.ConnectionClosed.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee673f8a30>
    argNames:
    - self
    - rcvd
    - sent
    - rcvd_then_sent
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 95
    functionName: websockets.exceptions.ConnectionClosed.__init__
    functionSourceFile: ''
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 257
    functionName: websockets.protocol.Protocol.receive_data
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.feed_data
    - <builtin>.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 273
    functionName: websockets.protocol.Protocol.receive_eof
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.feed_eof
    - <builtin>.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - data
    - fin
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 294
    functionName: websockets.protocol.Protocol.send_continuation
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - struct.pack
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - output.write
    - extension.encode
    - <builtin>.len
    - speedups.apply_mask
    - output.getvalue
    - websockets.frames.Frame.check
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - InvalidState
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 753
    functionName: websockets.protocol.Protocol.send_frame
    functionSourceFile: websockets.protocol
    functionUses: 9
    functionsReached:
    - io.BytesIO
    - struct.pack
    - int.from_bytes
    - secrets.token_bytes
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - output.write
    - extension.encode
    - <builtin>.len
    - speedups.apply_mask
    - output.getvalue
    - websockets.frames.Frame.check
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee672eadf0>
    argNames:
    - self
    - data
    - fin
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 318
    functionName: websockets.protocol.Protocol.send_text
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - struct.pack
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - output.write
    - extension.encode
    - <builtin>.len
    - speedups.apply_mask
    - output.getvalue
    - websockets.frames.Frame.check
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - InvalidState
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee672eaee0>
    argNames:
    - self
    - data
    - fin
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 341
    functionName: websockets.protocol.Protocol.send_binary
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - struct.pack
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - output.write
    - extension.encode
    - <builtin>.len
    - speedups.apply_mask
    - output.getvalue
    - websockets.frames.Frame.check
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - InvalidState
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67357b20>
    - <ast.Constant object at 0x7fee67357eb0>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 364
    functionName: websockets.protocol.Protocol.send_close
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - struct.pack
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - output.write
    - websockets.frames.Close.check
    - extension.encode
    - <builtin>.len
    - websockets.frames.Close.serialize
    - speedups.apply_mask
    - output.getvalue
    - websockets.frames.Frame.check
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - InvalidState
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 400
    functionName: websockets.protocol.Protocol.send_ping
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - struct.pack
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - output.write
    - extension.encode
    - <builtin>.len
    - speedups.apply_mask
    - output.getvalue
    - websockets.frames.Frame.check
    linkageType: pythonLinkage
    raised:
    - InvalidState
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 416
    functionName: websockets.protocol.Protocol.send_pong
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - struct.pack
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - output.write
    - extension.encode
    - <builtin>.len
    - speedups.apply_mask
    - output.getvalue
    - websockets.frames.Frame.check
    linkageType: pythonLinkage
    raised:
    - InvalidState
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 4
    IfCount: 4
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee6743f640>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 432
    functionName: websockets.protocol.Protocol.fail
    functionSourceFile: websockets.protocol
    functionUses: 1
    functionsReached:
    - io.BytesIO
    - websockets.protocol.Protocol.send_eof
    - struct.pack
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - websockets.frames.Frame.check
    - websockets.streams.StreamReader.at_eof
    - websockets.streams.StreamReader.discard
    - <builtin>.next
    - output.write
    - websockets.protocol.Protocol.discard
    - speedups.apply_mask
    - output.getvalue
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - websockets.frames.Close.check
    - extension.encode
    - <builtin>.len
    - websockets.frames.Close.serialize
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 481
    functionName: websockets.protocol.Protocol.events_received
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 497
    functionName: websockets.protocol.Protocol.data_to_send
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 517
    functionName: websockets.protocol.Protocol.close_expected
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 12
    IfCount: 7
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 562
    functionName: websockets.protocol.Protocol.parse
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - websockets.frames.Close.parse
    - io.BytesIO
    - websockets.protocol.Protocol.send_eof
    - struct.pack
    - struct.unpack
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - websockets.protocol.Protocol.recv_frame
    - websockets.protocol.Protocol.fail
    - exc.set_current_size
    - close.check
    - websockets.streams.StreamReader.at_eof
    - websockets.frames.Frame.check
    - websockets.streams.StreamReader.discard
    - <builtin>.next
    - output.write
    - <builtin>.reversed
    - enum.IntEnum.__init__
    - websockets.protocol.Protocol.discard
    - extension.decode
    - frame.check
    - websockets.frames.Frame.parse
    - speedups.apply_mask
    - output.getvalue
    - websockets.streams.StreamReader.read_exact
    - <builtin>.min
    - <builtin>.str
    - <builtin>.isinstance
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - websockets.frames.Close.check
    - extension.encode
    - <builtin>.len
    - websockets.frames.Close.serialize
    linkageType: pythonLinkage
    raised:
    - EOFError
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.min
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 19
    ICount: 6
    IfCount: 13
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 671
    functionName: websockets.protocol.Protocol.recv_frame
    functionSourceFile: websockets.protocol
    functionUses: 1
    functionsReached:
    - websockets.frames.Close.parse
    - io.BytesIO
    - websockets.protocol.Protocol.send_eof
    - struct.pack
    - struct.unpack
    - websockets.utils.apply_mask
    - websockets.frames.Frame.serialize
    - close.check
    - websockets.streams.StreamReader.at_eof
    - websockets.frames.Frame.check
    - websockets.streams.StreamReader.discard
    - <builtin>.next
    - output.write
    - websockets.protocol.Protocol.discard
    - speedups.apply_mask
    - output.getvalue
    - <builtin>.isinstance
    - int.from_bytes
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - extension.encode
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: exc.set_current_size
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.headers
    functionSourceFile: websockets.headers
    functionUses: 0
    functionsReached:
    - re.compile
    - typing.TypeVar
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.TypeVar
    functionSourceFile: typing
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ipaddress.ip_address
    functionSourceFile: ipaddress
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - header
    - pos
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 73
    functionName: websockets.headers.peek_ahead
    functionSourceFile: websockets.headers
    functionUses: 30
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: re.compile
    functionSourceFile: re
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - header
    - pos
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 88
    functionName: websockets.headers.parse_OWS
    functionSourceFile: websockets.headers
    functionUses: 26
    functionsReached:
    - _OWS_re.match
    - match.end
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _OWS_re.match
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: match.end
    functionSourceFile: <builtin>
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 106
    functionName: websockets.headers.parse_token
    functionSourceFile: websockets.headers
    functionUses: 32
    functionsReached:
    - match.group
    - _token_re.match
    - match.end
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _token_re.match
    functionSourceFile: <builtin>
    functionUses: 33
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: match.group
    functionSourceFile: <builtin>
    functionUses: 36
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 130
    functionName: websockets.headers.parse_quoted_string
    functionSourceFile: websockets.headers
    functionUses: 26
    functionsReached:
    - _unquote_re.sub
    - match.group
    - _quoted_string_re.match
    - match.end
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _quoted_string_re.match
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _unquote_re.sub
    functionSourceFile: <builtin>
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - value
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 152
    functionName: websockets.headers.build_quoted_string
    functionSourceFile: websockets.headers
    functionUses: 4
    functionsReached:
    - _quote_re.sub
    - _quotable_re.fullmatch
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _quotable_re.fullmatch
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _quote_re.sub
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 4
    argDefaultValues: []
    argNames:
    - parse_item
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 165
    functionName: websockets.headers.parse_list
    functionSourceFile: websockets.headers
    functionUses: 23
    functionsReached:
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 268
    functionName: websockets.headers.parse_upgrade_protocol
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - match.group
    - _protocol_re.match
    - typing.cast
    - match.end
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 426
    functionName: websockets.headers.parse_subprotocol_item
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - typing.cast
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _token_re.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 338
    functionName: websockets.headers.parse_extension_item
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - parameters.append
    - _quoted_string_re.match
    - websockets.headers.parse_OWS
    - websockets.headers.parse_quoted_string
    - match.end
    - typing.cast
    - match.group
    - websockets.headers.parse_token
    - websockets.headers.parse_extension_item_param
    - _token_re.match
    - _OWS_re.match
    - _unquote_re.sub
    - websockets.headers.peek_ahead
    - <builtin>.len
    - _token_re.fullmatch
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 231
    functionName: websockets.headers.parse_connection_option
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - typing.cast
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _token_re.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: items.append
    functionSourceFile: <builtin>
    functionUses: 24
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _protocol_re.match
    functionSourceFile: <builtin>
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 302
    functionName: websockets.headers.parse_extension_item_param
    functionSourceFile: websockets.headers
    functionUses: 25
    functionsReached:
    - _quoted_string_re.match
    - websockets.headers.parse_OWS
    - websockets.headers.parse_quoted_string
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _token_re.match
    - _OWS_re.match
    - _unquote_re.sub
    - websockets.headers.peek_ahead
    - <builtin>.len
    - _token_re.fullmatch
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _token_re.fullmatch
    functionSourceFile: <builtin>
    functionUses: 61
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: parameters.append
    functionSourceFile: <builtin>
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - name
    - parameters
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 392
    functionName: websockets.headers.build_extension_item
    functionSourceFile: websockets.headers
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - realm
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 485
    functionName: websockets.headers.build_www_authenticate_basic
    functionSourceFile: websockets.headers
    functionUses: 3
    functionsReached:
    - websockets.headers.build_quoted_string
    - _quote_re.sub
    - _quotable_re.fullmatch
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 502
    functionName: websockets.headers.parse_token68
    functionSourceFile: websockets.headers
    functionUses: 4
    functionsReached:
    - match.group
    - _token68_re.match
    - match.end
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _token68_re.match
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 518
    functionName: websockets.headers.parse_end
    functionSourceFile: websockets.headers
    functionUses: 4
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - header
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 527
    functionName: websockets.headers.parse_authorization_basic
    functionSourceFile: websockets.headers
    functionUses: 3
    functionsReached:
    - scheme.lower
    - user_pass.split
    - match.end
    - websockets.headers.peek_ahead
    - match.group
    - base64.b64decode
    - websockets.headers.parse_token
    - _token_re.match
    - basic_credentials.encode
    - websockets.headers.parse_end
    - websockets.headers.parse_token68
    - <builtin>.len
    - _token68_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: scheme.lower
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: basic_credentials.encode
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: base64.b64decode
    functionSourceFile: base64
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: user_pass.split
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: user_pass.encode
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.asyncio.connection
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    IfCount: 2
    argCount: 7
    argDefaultValues: []
    argNames:
    - self
    - protocol
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_queue
    - write_limit
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 52
    functionName: websockets.asyncio.connection.Connection.__init__
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - logging.LoggerAdapter
    - collections.deque
    - asyncio.get_running_loop
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: logging.LoggerAdapter
    functionSourceFile: logging
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: collections.deque
    functionSourceFile: collections
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 142
    functionName: websockets.asyncio.connection.Connection.local_address
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.get_extra_info
    - typing.cast.get_extra_info
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.get_extra_info
    functionSourceFile: asyncio
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.get_extra_info
    functionSourceFile: typing
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 155
    functionName: websockets.asyncio.connection.Connection.remote_address
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.get_extra_info
    - typing.cast.get_extra_info
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 168
    functionName: websockets.asyncio.connection.Connection.state
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 181
    functionName: websockets.asyncio.connection.Connection.subprotocol
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 191
    functionName: websockets.asyncio.connection.Connection.close_code
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 203
    functionName: websockets.asyncio.connection.Connection.close_reason
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 216
    functionName: websockets.asyncio.connection.Connection.__aenter__
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 11
    functionLinenumber: 219
    functionName: websockets.asyncio.connection.Connection.__aexit__
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.asyncio.connection.Connection.close
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Attribute object at 0x7fee672e83a0>
    - <ast.Constant object at 0x7fee672e8b20>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 619
    functionName: websockets.asyncio.connection.Connection.close
    functionSourceFile: websockets.asyncio.connection
    functionUses: 1
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 11
    functionLinenumber: 230
    functionName: websockets.asyncio.connection.Connection.__aiter__
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.asyncio.connection.Connection.recv
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - typing.cast.resume_reading
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.asyncio.messages.Assembler.<lambda2>
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - data.decode
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - frames.append
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.messages.Assembler.maybe_resume
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - loop.time
    - asyncio.shield
    - websockets.asyncio.messages.Assembler.get
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.resume_reading
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee673eeb80>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 257
    functionName: websockets.asyncio.connection.Connection.recv
    functionSourceFile: websockets.asyncio.connection
    functionUses: 1
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - typing.cast.resume_reading
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.asyncio.messages.Assembler.<lambda2>
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - data.decode
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - frames.append
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.messages.Assembler.maybe_resume
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - loop.time
    - asyncio.shield
    - websockets.asyncio.messages.Assembler.get
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.resume_reading
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.asyncio.connection.Connection
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - contextlib.asynccontextmanager
    - typing.overload
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.overload
    functionSourceFile: ''
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 5
    IfCount: 3
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee6727e1f0>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 127
    functionName: websockets.asyncio.messages.Assembler.get
    functionSourceFile: websockets.asyncio.messages
    functionUses: 2
    functionsReached:
    - asyncio.Protocol.resume_reading
    - frames.append
    - websockets.asyncio.messages.Assembler.maybe_resume
    - data.decode
    - typing.cast.resume_reading
    - websockets.asyncio.messages.Assembler.<lambda2>
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.shield
    functionSourceFile: asyncio
    functionUses: 47
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 4
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee6747e640>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 335
    functionName: websockets.asyncio.connection.Connection.recv_streaming
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - websockets.asyncio.messages.Assembler.get_iter
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.is_closing
    - typing.cast.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - <builtin>.bytes
    - typing.cast.resume_reading
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.asyncio.messages.Assembler.<lambda2>
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.messages.Assembler.maybe_resume
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - decoder.decode
    - asyncio.shield
    - loop.time
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.resume_reading
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 7
    IfCount: 4
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee672d2610>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 197
    functionName: websockets.asyncio.messages.Assembler.get_iter
    functionSourceFile: websockets.asyncio.messages
    functionUses: 1
    functionsReached:
    - decoder.decode
    - asyncio.Protocol.resume_reading
    - <builtin>.bytes
    - websockets.asyncio.messages.Assembler.maybe_resume
    - typing.cast.resume_reading
    - websockets.asyncio.messages.Assembler.<lambda2>
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    returnType: N/A
  - BBCount: 19
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 11
    EdgeCount: 28
    ICount: 24
    IfCount: 19
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67990bb0>
    argNames:
    - self
    - message
    - text
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 403
    functionName: websockets.asyncio.connection.Connection.send
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - <builtin>.next
    - websockets.asyncio.compatibility.anext
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - message.encode
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.compatibility.aiter
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - <builtin>.type
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - chunk.encode
    - <builtin>.iter
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: message.encode
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: chunk.encode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - async_iterable
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 21
    functionName: websockets.asyncio.compatibility.aiter
    functionSourceFile: websockets.asyncio.compatibility
    functionUses: 1
    functionsReached:
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - async_iterator
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 24
    functionName: websockets.asyncio.compatibility.anext
    functionSourceFile: websockets.asyncio.compatibility
    functionUses: 1
    functionsReached:
    - <builtin>.type
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 654
    functionName: websockets.asyncio.connection.Connection.wait_closed
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.shield
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee66fccfa0>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 664
    functionName: websockets.asyncio.connection.Connection.ping
    functionSourceFile: websockets.asyncio.connection
    functionUses: 2
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - random.getrandbits
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - data.encode
    - asyncio.TimeoutError
    - asyncio.shield
    - loop.time
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: data.encode
    functionSourceFile: <builtin>
    functionUses: 19
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: random.getrandbits
    functionSourceFile: random
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee6718e220>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 717
    functionName: websockets.asyncio.connection.Connection.pong
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - data.encode
    - asyncio.TimeoutError
    - asyncio.shield
    - loop.time
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - event
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 744
    functionName: websockets.asyncio.connection.Connection.process_event
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - websockets.asyncio.connection.Connection.acknowledge_pings
    - typing.cast.pause_reading
    - <builtin>.len
    - websockets.asyncio.messages.Assembler.maybe_pause
    - <builtin>.isinstance
    - asyncio.Protocol.pong_waiters.items
    - websockets.asyncio.messages.Assembler.put
    - <builtin>.bytes
    - ping_ids.append
    - websockets.asyncio.messages.Assembler.<lambda1>
    - asyncio.Protocol.pause_reading
    - pong_waiter.set_result
    - pong_waiter.done
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 266
    functionName: websockets.asyncio.messages.Assembler.put
    functionSourceFile: websockets.asyncio.messages
    functionUses: 1
    functionsReached:
    - typing.cast.pause_reading
    - websockets.asyncio.messages.Assembler.maybe_pause
    - websockets.asyncio.messages.Assembler.<lambda1>
    - asyncio.Protocol.pause_reading
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 758
    functionName: websockets.asyncio.connection.Connection.acknowledge_pings
    functionSourceFile: websockets.asyncio.connection
    functionUses: 1
    functionsReached:
    - pong_waiter.set_result
    - ping_ids.append
    - pong_waiter.done
    - asyncio.Protocol.pong_waiters.items
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.pong_waiters.items
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ping_ids.append
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pong_waiter.done
    functionSourceFile: <builtin>
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pong_waiter.set_result
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 788
    functionName: websockets.asyncio.connection.Connection.abort_pings
    functionSourceFile: websockets.asyncio.connection
    functionUses: 1
    functionsReached:
    - asyncio.Protocol.pong_waiters.clear
    - asyncio.Protocol.pong_waiters.values
    - pong_waiter.set_exception
    - pong_waiter.done
    - pong_waiter.cancel
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.pong_waiters.values
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pong_waiter.set_exception
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pong_waiter.cancel
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.pong_waiters.clear
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 7
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 11
    functionLinenumber: 809
    functionName: websockets.asyncio.connection.Connection.keepalive
    functionSourceFile: websockets.asyncio.connection
    functionUses: 1
    functionsReached:
    - websockets.asyncio.connection.Connection.ping
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - random.getrandbits
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - data.encode
    - asyncio.TimeoutError
    - asyncio.shield
    - loop.time
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.logger.debug
    functionSourceFile: asyncio
    functionUses: 43
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.logger.error
    functionSourceFile: asyncio
    functionUses: 20
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 856
    functionName: websockets.asyncio.connection.Connection.start_keepalive
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - websockets.asyncio.connection.Connection.ping
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - random.getrandbits
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.timeout_at
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - data.encode
    - asyncio.TimeoutError
    - asyncio.shield
    - loop.time
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.asyncio.connection.Connection.keepalive
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: contextlib.asynccontextmanager
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 6
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 965
    functionName: websockets.asyncio.connection.Connection.send_data
    functionSourceFile: websockets.asyncio.connection
    functionUses: 15
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - typing.cast.is_closing
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1060
    functionName: websockets.asyncio.connection.Connection.drain
    functionSourceFile: websockets.asyncio.connection
    functionUses: 13
    functionsReached:
    - asyncio.sleep
    - asyncio.Protocol.is_closing
    - typing.cast.is_closing
    - asyncio.Protocol.drain_waiters.remove
    - asyncio.Protocol.drain_waiters.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.timeout_at
    functionSourceFile: asyncio
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - deadline
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 93
    functionName: websockets.asyncio.async_timeout.timeout_at
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 13
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.TimeoutError
    functionSourceFile: asyncio
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 993
    functionName: websockets.asyncio.connection.Connection.set_recv_exc
    functionSourceFile: ''
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.abort
    functionSourceFile: typing
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.abort
    functionSourceFile: asyncio
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.can_write_eof
    functionSourceFile: asyncio
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.can_write_eof
    functionSourceFile: typing
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.write_eof
    functionSourceFile: typing
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.write_eof
    functionSourceFile: asyncio
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.close
    functionSourceFile: typing
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 5
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Attribute object at 0x7fee672e0c70>
    - <ast.Constant object at 0x7fee672e0100>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 723
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - transport
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1005
    functionName: websockets.asyncio.connection.Connection.connection_made
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - websockets.asyncio.messages.SimpleQueue.__init__
    - typing.cast
    - collections.deque
    - websockets.asyncio.messages.Assembler.__init__
    - typing.cast.set_write_buffer_limits
    - asyncio.Protocol.set_write_buffer_limits
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 0
    IfCount: 5
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7fee67357730>
    - <ast.Constant object at 0x7fee67357190>
    - <ast.Lambda object at 0x7fee67357520>
    - <ast.Lambda object at 0x7fee67357760>
    argNames:
    - self
    - high
    - low
    - pause
    - resume
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 84
    functionName: websockets.asyncio.messages.Assembler.__init__
    functionSourceFile: websockets.asyncio.messages
    functionUses: 1
    functionsReached:
    - websockets.asyncio.messages.SimpleQueue.__init__
    - collections.deque
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.set_write_buffer_limits
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.set_write_buffer_limits
    functionSourceFile: typing
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 8
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1015
    functionName: websockets.asyncio.connection.Connection.connection_lost
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.pong_waiters.clear
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.pong_waiters.values
    - asyncio.Protocol.drain_waiters.set_exception
    - websockets.asyncio.messages.Assembler.close
    - websockets.asyncio.connection.Connection.abort_pings
    - asyncio.Protocol.drain_waiters.done
    - asyncio.Protocol.drain_waiters.set_result
    - asyncio.Protocol.connection_lost_waiter.set_result
    - pong_waiter.set_exception
    - pong_waiter.done
    - pong_waiter.cancel
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 302
    functionName: websockets.asyncio.messages.Assembler.close
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.connection_lost_waiter.set_result
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.drain_waiters.done
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.drain_waiters.set_result
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.drain_waiters.set_exception
    functionSourceFile: asyncio
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1047
    functionName: websockets.asyncio.connection.Connection.pause_writing
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1052
    functionName: websockets.asyncio.connection.Connection.resume_writing
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.drain_waiters.done
    - asyncio.Protocol.drain_waiters.set_result
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.is_closing
    functionSourceFile: asyncio
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.is_closing
    functionSourceFile: typing
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.drain_waiters.append
    functionSourceFile: asyncio
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.drain_waiters.remove
    functionSourceFile: asyncio
    functionUses: 14
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 5
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 1080
    functionName: websockets.asyncio.connection.Connection.data_received
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.request_rcvd.set_result
    - typing.cast.is_closing
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - <builtin>.super
    - websockets.asyncio.client.ClientConnection.process_event
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - asyncio.Protocol.response_rcvd.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.asyncio.server.ServerConnection.process_event
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - event
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 209
    functionName: websockets.asyncio.server.ServerConnection.process_event
    functionSourceFile: websockets.asyncio.server
    functionUses: 2
    functionsReached:
    - <builtin>.super
    - <builtin>.isinstance
    - asyncio.Protocol.request_rcvd.set_result
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 1106
    functionName: websockets.asyncio.connection.Connection.eof_received
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.request_rcvd.set_result
    - typing.cast.is_closing
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - <builtin>.super
    - websockets.asyncio.client.ClientConnection.process_event
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - asyncio.Protocol.response_rcvd.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.asyncio.server.ServerConnection.process_event
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 7
    IfCount: 9
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67300a00>
    argNames:
    - connections
    - message
    - raise_exceptions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1139
    functionName: websockets.asyncio.connection.broadcast
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - <builtin>.getattr
    - traceback.format_exception_only
    - connection.send_data
    - connection.logger.warning
    - <builtin>.RuntimeError
    - exceptions.append
    - message.encode
    linkageType: pythonLinkage
    raised:
    - ExceptionGroup
    - TypeError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: exceptions.append
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.logger.warning
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.getattr
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.send_data
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.RuntimeError
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.asyncio.messages
    functionSourceFile: websockets.asyncio.messages
    functionUses: 0
    functionsReached:
    - codecs.getincrementaldecoder
    - typing.TypeVar
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: codecs.getincrementaldecoder
    functionSourceFile: codecs
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 29
    functionName: websockets.asyncio.messages.SimpleQueue.__init__
    functionSourceFile: websockets.asyncio.messages
    functionUses: 3
    functionsReached:
    - collections.deque
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 34
    functionName: websockets.asyncio.messages.SimpleQueue.__len__
    functionSourceFile: websockets.asyncio.messages
    functionUses: 0
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - item
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 37
    functionName: websockets.asyncio.messages.SimpleQueue.put
    functionSourceFile: websockets.asyncio.messages
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee6703eb50>
    argNames:
    - self
    - block
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 43
    functionName: websockets.asyncio.messages.SimpleQueue.get
    functionSourceFile: websockets.asyncio.messages
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - items
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 57
    functionName: websockets.asyncio.messages.SimpleQueue.reset
    functionSourceFile: websockets.asyncio.messages
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 63
    functionName: websockets.asyncio.messages.SimpleQueue.abort
    functionSourceFile: websockets.asyncio.messages
    functionUses: 0
    functionsReached:
    - <builtin>.EOFError
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.EOFError
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.asyncio.messages.Assembler
    functionSourceFile: websockets.asyncio.messages
    functionUses: 0
    functionsReached:
    - typing.overload
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 291
    functionName: websockets.asyncio.messages.Assembler.maybe_resume
    functionSourceFile: websockets.asyncio.messages
    functionUses: 5
    functionsReached:
    - <builtin>.len
    - typing.cast.resume_reading
    - websockets.asyncio.messages.Assembler.<lambda2>
    - asyncio.Protocol.resume_reading
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: frames.append
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: data.decode
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: decoder.decode
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 280
    functionName: websockets.asyncio.messages.Assembler.maybe_pause
    functionSourceFile: websockets.asyncio.messages
    functionUses: 2
    functionsReached:
    - <builtin>.len
    - typing.cast.pause_reading
    - websockets.asyncio.messages.Assembler.<lambda1>
    - asyncio.Protocol.pause_reading
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.pause_reading
    functionSourceFile: typing
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.asyncio.messages.Assembler.<lambda1>
    functionSourceFile: ''
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.pause_reading
    functionSourceFile: asyncio
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.resume_reading
    functionSourceFile: asyncio
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.resume_reading
    functionSourceFile: typing
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.asyncio.messages.Assembler.<lambda2>
    functionSourceFile: ''
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: websockets.exceptions
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached:
    - <builtin>.globals
    - websockets.imports.lazy_import
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 0
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 106
    functionName: websockets.exceptions.ConnectionClosed.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 124
    functionName: websockets.exceptions.ConnectionClosed.code
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 135
    functionName: websockets.exceptions.ConnectionClosed.reason
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - uri
    - msg
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 172
    functionName: websockets.exceptions.InvalidURI.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 176
    functionName: websockets.exceptions.InvalidURI.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - proxy
    - msg
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 186
    functionName: websockets.exceptions.InvalidProxy.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 190
    functionName: websockets.exceptions.InvalidProxy.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 234
    functionName: websockets.exceptions.InvalidProxyStatus.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - response
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 251
    functionName: websockets.exceptions.InvalidStatus.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 254
    functionName: websockets.exceptions.InvalidStatus.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67380640>
    argNames:
    - self
    - name
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 266
    functionName: websockets.exceptions.InvalidHeader.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 270
    functionName: websockets.exceptions.InvalidHeader.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 5
    argDefaultValues: []
    argNames:
    - self
    - name
    - error
    - header
    - pos
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 287
    functionName: websockets.exceptions.InvalidHeaderFormat.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - origin
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 306
    functionName: websockets.exceptions.InvalidOrigin.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 330
    functionName: websockets.exceptions.DuplicateParameter.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 333
    functionName: websockets.exceptions.DuplicateParameter.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 343
    functionName: websockets.exceptions.InvalidParameterName.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 346
    functionName: websockets.exceptions.InvalidParameterName.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - name
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 356
    functionName: websockets.exceptions.InvalidParameterValue.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 360
    functionName: websockets.exceptions.InvalidParameterValue.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee67bd3af0>
    - <ast.Constant object at 0x7fee67bd3100>
    argNames:
    - self
    - size_or_message
    - max_size
    - current_size
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 393
    functionName: websockets.exceptions.PayloadTooBig.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached:
    - warnings.warn
    - <builtin>.isinstance
    - websockets.exceptions.PayloadTooBig.set_current_size
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - current_size
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 428
    functionName: websockets.exceptions.PayloadTooBig.set_current_size
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 416
    functionName: websockets.exceptions.PayloadTooBig.__str__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.imports
    functionSourceFile: websockets.imports
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - name
    - source
    - namespace
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 11
    functionName: websockets.imports.import_name
    functionSourceFile: websockets.imports
    functionUses: 1
    functionsReached:
    - <builtin>.len
    - <builtin>.getattr
    - <builtin>.__import__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.__import__
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.set
    functionSourceFile: <builtin>
    functionUses: 17
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - name
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 71
    functionName: websockets.imports.lazy_import.__getattr__
    functionSourceFile: websockets.imports
    functionUses: 0
    functionsReached:
    - warnings.warn
    - <builtin>.getattr
    - websockets.imports.import_name
    - <builtin>.len
    - <builtin>.__import__
    linkageType: pythonLinkage
    raised:
    - AttributeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 97
    functionName: websockets.imports.lazy_import.__dir__
    functionSourceFile: websockets.imports
    functionUses: 0
    functionsReached:
    - <builtin>.sorted
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.sorted
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.http11
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached:
    - os.environ.get
    - re.compile
    - <builtin>.int
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - value
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 50
    functionName: websockets.http11.d
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached:
    - value.decode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: value.decode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 95
    functionName: websockets.http11.Request.exception
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 2
    argDefaultValues: []
    argNames:
    - cls
    - read_line
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 103
    functionName: websockets.http11.Request.parse
    functionSourceFile: websockets.http11
    functionUses: 2
    functionsReached:
    - <builtin>.tuple
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - raw_path.decode
    - <builtin>.super
    - _value_re.fullmatch
    - <builtin>.int
    - raw_value.strip
    - _token_re.fullmatch
    - request_line.split
    - line.endswith
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - websockets.http11.parse_headers
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - <builtin>.len
    - websockets.http11.parse_line
    linkageType: pythonLinkage
    raised:
    - EOFError
    - NotImplementedError
    - ValueError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - read_line
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 302
    functionName: websockets.http11.parse_line
    functionSourceFile: websockets.http11
    functionUses: 14
    functionsReached:
    - <builtin>.len
    - line.endswith
    - websockets.streams.StreamReader.read_line
    linkageType: pythonLinkage
    raised:
    - EOFError
    - SecurityError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: request_line.split
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: raw_path.decode
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - read_line
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 329
    functionName: websockets.http11.parse_headers
    functionSourceFile: websockets.http11
    functionUses: 13
    functionsReached:
    - raw_value.decode
    - line.split
    - _value_re.fullmatch
    - <builtin>.len
    - <builtin>.isinstance
    - _token_re.fullmatch
    - line.endswith
    - arg.raw_items
    - <builtin>.tuple
    - <builtin>.range
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - websockets.streams.StreamReader.read_line
    - raw_value.strip
    - websockets.http11.parse_line
    - <builtin>.super
    - raw_name.decode
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 169
    functionName: websockets.http11.Request.serialize
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 202
    functionName: websockets.http11.Response.exception
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: status_line.split
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: _value_re.fullmatch
    functionSourceFile: <builtin>
    functionUses: 23
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: raw_reason.decode
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 1
    IfCount: 10
    argCount: 5
    argDefaultValues: []
    argNames:
    - status_code
    - headers
    - read_line
    - read_exact
    - read_to_eof
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 380
    functionName: websockets.http11.read_body
    functionSourceFile: websockets.http11
    functionUses: 10
    functionsReached:
    - headers.get
    - raw_chunk_size.decode
    - <builtin>.range
    - <builtin>.tuple
    - websockets.streams.StreamReader.read_line
    - <builtin>.super
    - chunk_size_line.split
    - _value_re.fullmatch
    - <builtin>.int
    - raw_value.strip
    - _token_re.fullmatch
    - line.endswith
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.streams.StreamReader.read_to_eof
    - websockets.datastructures.Headers.__init__
    - websockets.http11.parse_headers
    - raw_name.decode
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - <builtin>.len
    - websockets.http11.parse_line
    linkageType: pythonLinkage
    raised:
    - SecurityError
    - NotImplementedError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 289
    functionName: websockets.http11.Response.serialize
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: line.endswith
    functionSourceFile: <builtin>
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: line.split
    functionSourceFile: <builtin>
    functionUses: 23
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: raw_value.strip
    functionSourceFile: <builtin>
    functionUses: 23
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: raw_name.decode
    functionSourceFile: <builtin>
    functionUses: 23
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: raw_value.decode
    functionSourceFile: <builtin>
    functionUses: 23
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: headers.get
    functionSourceFile: <builtin>
    functionUses: 18
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: chunk_size_line.split
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: raw_chunk_size.decode
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: websockets.version
    functionSourceFile: websockets.version
    functionUses: 0
    functionsReached:
    - pathlib.Path
    - importlib.metadata.files
    - subprocess.run
    - importlib.metadata.version
    - re.fullmatch
    - version_file.locate
    - websockets.version.get_version
    - remainder.replace
    - websockets.version.get_commit
    - match.groups
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 0
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - tag
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 31
    functionName: websockets.version.get_version
    functionSourceFile: websockets.version
    functionUses: 1
    functionsReached:
    - pathlib.Path
    - importlib.metadata.files
    - importlib.metadata.version
    - re.fullmatch
    - version_file.locate
    - subprocess.run
    - remainder.replace
    - match.groups
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pathlib.Path
    functionSourceFile: pathlib
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: importlib.metadata.version
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: importlib.metadata.files
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: version_file.locate
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: subprocess.run
    functionSourceFile: subprocess
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: re.fullmatch
    functionSourceFile: re
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: match.groups
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: remainder.replace
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - tag
    - version
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 83
    functionName: websockets.version.get_commit
    functionSourceFile: websockets.version
    functionUses: 1
    functionsReached:
    - re.fullmatch
    - match.groups
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.extensions.permessage_deflate
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - <builtin>.str
    - <builtin>.range
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - typing.NewType
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 6
    argDefaultValues:
    - <ast.Constant object at 0x7fee66ff7850>
    argNames:
    - self
    - remote_no_context_takeover
    - local_no_context_takeover
    - remote_max_window_bits
    - local_max_window_bits
    - compress_settings
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 41
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate.__init__
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 2
    functionsReached:
    - zlib.compressobj
    - zlib.decompressobj
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zlib.decompressobj
    functionSourceFile: zlib
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: zlib.compressobj
    functionSourceFile: zlib
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 83
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate.__repr__
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 16
    ICount: 2
    IfCount: 11
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - frame
    - max_size
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 92
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate.decode
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - frames.Frame
    - zlib.decompressobj
    - <builtin>.bytes
    linkageType: pythonLinkage
    raised:
    - PayloadTooBig
    - ProtocolError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: frames.Frame
    functionSourceFile: <builtin>
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 1
    IfCount: 6
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 165
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate.encode
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - zlib.compressobj
    - frames.Frame
    - <builtin>.memoryview
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.memoryview
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 6
    IfCount: 5
    argCount: 4
    argDefaultValues: []
    argNames:
    - server_no_context_takeover
    - client_no_context_takeover
    - server_max_window_bits
    - client_max_window_bits
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 213
    functionName: websockets.extensions.permessage_deflate._build_parameters
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 2
    functionsReached:
    - params.append
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: params.append
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 19
    ICount: 1
    IfCount: 13
    argCount: 2
    argDefaultValues: []
    argNames:
    - params
    - is_server
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 237
    functionName: websockets.extensions.permessage_deflate._extract_parameters
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 2
    functionsReached:
    - <builtin>.int
    linkageType: pythonLinkage
    raised:
    - InvalidParameterValue
    - DuplicateParameter
    - InvalidParameterName
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - typing.NewType
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 6
    argDefaultValues:
    - <ast.Constant object at 0x7fee674921c0>
    - <ast.Constant object at 0x7fee67492d60>
    - <ast.Constant object at 0x7fee674926d0>
    - <ast.Constant object at 0x7fee67492400>
    - <ast.Constant object at 0x7fee67492520>
    argNames:
    - self
    - server_no_context_takeover
    - client_no_context_takeover
    - server_max_window_bits
    - client_max_window_bits
    - compress_settings
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 324
    functionName: websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 356
    functionName: websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.get_request_params
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - params.append
    - websockets.extensions.permessage_deflate._build_parameters
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 19
    ICount: 1
    IfCount: 13
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - params
    - accepted_extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 368
    functionName: websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.process_response_params
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - zlib.decompressobj
    - websockets.extensions.permessage_deflate._extract_parameters
    - <builtin>.any
    - <builtin>.int
    - websockets.extensions.permessage_deflate.PerMessageDeflate.__init__
    - zlib.compressobj
    linkageType: pythonLinkage
    raised:
    - NegotiationError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.list
    functionSourceFile: <builtin>
    functionUses: 24
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - typing.NewType
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 7
    argDefaultValues:
    - <ast.Constant object at 0x7fee674f3a90>
    - <ast.Constant object at 0x7fee674f3e80>
    - <ast.Constant object at 0x7fee674f38b0>
    - <ast.Constant object at 0x7fee674f3550>
    - <ast.Constant object at 0x7fee674f3970>
    - <ast.Constant object at 0x7fee674f3d90>
    argNames:
    - self
    - server_no_context_takeover
    - client_no_context_takeover
    - server_max_window_bits
    - client_max_window_bits
    - compress_settings
    - require_client_max_window_bits
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 527
    functionName: websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 21
    ICount: 1
    IfCount: 14
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - params
    - accepted_extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 562
    functionName: websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.process_request_params
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - <builtin>.str
    - zlib.decompressobj
    - websockets.extensions.permessage_deflate._extract_parameters
    - params.append
    - <builtin>.any
    - <builtin>.int
    - websockets.extensions.permessage_deflate.PerMessageDeflate.__init__
    - zlib.compressobj
    - websockets.extensions.permessage_deflate._build_parameters
    linkageType: pythonLinkage
    raised:
    - NegotiationError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - extensions
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 676
    functionName: websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 10
    functionsReached:
    - <builtin>.any
    - <builtin>.list
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.proxy
    functionSourceFile: websockets.proxy
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 41
    functionName: websockets.proxy.Proxy.user_info
    functionSourceFile: websockets.proxy
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: proxy.encode
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.proxy_bypass
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: urllib.request.getproxies
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: proxies.get
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: proxy.startswith
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.asyncio.compatibility
    functionSourceFile: websockets.asyncio.compatibility
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.type
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.asyncio.async_timeout
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - f
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 21
    functionName: websockets.asyncio.async_timeout.final
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - task
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 62
    functionName: websockets.asyncio.async_timeout._uncancel_task
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 3
    functionsReached:
    - task.uncancel
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: task.uncancel
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: loop.time
    functionSourceFile: <builtin>
    functionUses: 44
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - deadline
    - loop
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 140
    functionName: websockets.asyncio.async_timeout.Timeout.__init__
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 45
    functionsReached:
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.async_timeout.Timeout.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - deadline
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 219
    functionName: websockets.asyncio.async_timeout.Timeout.update
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 47
    functionsReached:
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout._reschedule
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 153
    functionName: websockets.asyncio.async_timeout.Timeout.__enter__
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._do_enter
    - warnings.warn
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout._reschedule
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 256
    functionName: websockets.asyncio.async_timeout.Timeout._do_enter
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 2
    functionsReached:
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout._reschedule
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_val
    - exc_tb
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 162
    functionName: websockets.asyncio.async_timeout.Timeout.__exit__
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached:
    - task.uncancel
    - websockets.asyncio.async_timeout.Timeout._reject
    - websockets.asyncio.async_timeout._uncancel_task
    - websockets.asyncio.async_timeout.Timeout._do_exit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 262
    functionName: websockets.asyncio.async_timeout.Timeout._do_exit
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 2
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._reject
    - websockets.asyncio.async_timeout._uncancel_task
    - task.uncancel
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 171
    functionName: websockets.asyncio.async_timeout.Timeout.__aenter__
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._do_enter
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.current_task
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_val
    - exc_tb
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 175
    functionName: websockets.asyncio.async_timeout.Timeout.__aexit__
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached:
    - task.uncancel
    - websockets.asyncio.async_timeout.Timeout._reject
    - websockets.asyncio.async_timeout._uncancel_task
    - websockets.asyncio.async_timeout.Timeout._do_exit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 185
    functionName: websockets.asyncio.async_timeout.Timeout.expired
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 190
    functionName: websockets.asyncio.async_timeout.Timeout.deadline
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 193
    functionName: websockets.asyncio.async_timeout.Timeout.reject
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._reject
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 201
    functionName: websockets.asyncio.async_timeout.Timeout._reject
    functionSourceFile: ''
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - delay
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 207
    functionName: websockets.asyncio.async_timeout.Timeout.shift
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached:
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.async_timeout.Timeout.update
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 240
    functionName: websockets.asyncio.async_timeout.Timeout._reschedule
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 51
    functionsReached:
    - asyncio.current_task
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.current_task
    functionSourceFile: asyncio
    functionUses: 52
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 274
    functionName: websockets.asyncio.async_timeout.Timeout._on_timeout
    functionSourceFile: websockets.asyncio.async_timeout
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.asyncio
    functionSourceFile: websockets.asyncio
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.asyncio.router
    functionSourceFile: websockets.asyncio.router
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 6
    argDefaultValues: []
    argNames:
    - url_map
    - args
    - server_name
    - ssl
    - create_router
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 40
    functionName: websockets.asyncio.router.route
    functionSourceFile: websockets.asyncio.router
    functionUses: 1
    functionsReached:
    - websockets.asyncio.server.serve.__init__
    - loop.create_unix_server
    - websockets.headers.validate_subprotocols
    - logging.getLogger
    - <builtin>.list
    - <builtin>.isinstance
    - kwargs.setdefault
    - websockets.asyncio.server.Server.__init__
    - websockets.asyncio.router.Router.__init__
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - loop.create_server
    - kwargs.pop
    - _token_re.fullmatch
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - asyncio.get_running_loop
    - kwargs.get
    linkageType: pythonLinkage
    raised:
    - ImportError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67380250>
    argNames:
    - url_map
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 148
    functionName: websockets.asyncio.router.unix_route
    functionSourceFile: websockets.asyncio.router
    functionUses: 0
    functionsReached:
    - websockets.asyncio.server.serve.__init__
    - loop.create_unix_server
    - websockets.headers.validate_subprotocols
    - logging.getLogger
    - <builtin>.list
    - <builtin>.isinstance
    - websockets.asyncio.router.route
    - kwargs.setdefault
    - websockets.asyncio.server.Server.__init__
    - websockets.asyncio.router.Router.__init__
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - loop.create_server
    - kwargs.pop
    - _token_re.fullmatch
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - asyncio.get_running_loop
    - kwargs.get
    linkageType: pythonLinkage
    raised:
    - ImportError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee673800a0>
    - <ast.Constant object at 0x7fee67380430>
    argNames:
    - self
    - url_map
    - server_name
    - url_scheme
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 170
    functionName: websockets.asyncio.router.Router.__init__
    functionSourceFile: ''
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - connection
    - request
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 136
    functionName: websockets.asyncio.router.route.process_request
    functionSourceFile: websockets.asyncio.router
    functionUses: 0
    functionsReached:
    - router.route_request
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: router.route_request
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 3
    IfCount: 7
    argCount: 22
    argDefaultValues:
    - <ast.Constant object at 0x7fee679908e0>
    - <ast.Constant object at 0x7fee67990460>
    argNames:
    - self
    - handler
    - host
    - port
    - origins
    - extensions
    - subprotocols
    - select_subprotocol
    - compression
    - process_request
    - process_response
    - server_header
    - open_timeout
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_size
    - max_queue
    - write_limit
    - logger
    - create_connection
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 698
    functionName: websockets.asyncio.server.serve.__init__
    functionSourceFile: websockets.asyncio.server
    functionUses: 3
    functionsReached:
    - websockets.headers.validate_subprotocols
    - loop.create_unix_server
    - <builtin>.list
    - logging.getLogger
    - <builtin>.isinstance
    - kwargs.setdefault
    - websockets.asyncio.server.Server.__init__
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - loop.create_server
    - kwargs.pop
    - _token_re.fullmatch
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - asyncio.get_running_loop
    - kwargs.get
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - connection
    - request
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 182
    functionName: websockets.asyncio.router.Router.get_server_name
    functionSourceFile: websockets.asyncio.router
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - connection
    - url
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 188
    functionName: websockets.asyncio.router.Router.redirect
    functionSourceFile: websockets.asyncio.router
    functionUses: 1
    functionsReached:
    - connection.respond
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.respond
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - connection
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 193
    functionName: websockets.asyncio.router.Router.not_found
    functionSourceFile: websockets.asyncio.router
    functionUses: 1
    functionsReached:
    - connection.respond
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - connection
    - request
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 196
    functionName: websockets.asyncio.router.Router.route_request
    functionSourceFile: websockets.asyncio.router
    functionUses: 0
    functionsReached:
    - url_map_adapter.match
    - websockets.asyncio.router.Router.get_server_name
    - websockets.asyncio.router.Router.redirect
    - urllib.parse.urlparse
    - connection.respond
    - websockets.asyncio.router.Router.not_found
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: url_map_adapter.match
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - connection
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 217
    functionName: websockets.asyncio.router.Router.handler
    functionSourceFile: websockets.asyncio.router
    functionUses: 0
    functionsReached:
    - connection.handler
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.handler
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.asyncio.server
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 8
    argDefaultValues: []
    argNames:
    - self
    - protocol
    - server
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_queue
    - write_limit
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 67
    functionName: websockets.asyncio.server.ServerConnection.__init__
    functionSourceFile: websockets.asyncio.server
    functionUses: 1
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - status
    - text
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 93
    functionName: websockets.asyncio.server.ServerConnection.respond
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 3
    IfCount: 10
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee675c3a00>
    - <ast.Constant object at 0x7fee675c3e80>
    - <ast.Name object at 0x7fee675c3ac0>
    argNames:
    - self
    - process_request
    - process_response
    - server_header
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 114
    functionName: websockets.asyncio.server.ServerConnection.handshake
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.set_recv_exc
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - asyncio.wait
    - asyncio.timeout_at
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - asyncio.Protocol.drain_waiters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.send_data
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - websockets.asyncio.connection.Connection.drain
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.async_timeout.timeout_at
    - asyncio.TimeoutError
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.asyncio.server.Server.is_serving
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 517
    functionName: websockets.asyncio.server.Server.is_serving
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.request_rcvd.set_result
    functionSourceFile: asyncio
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - transport
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 223
    functionName: websockets.asyncio.server.ServerConnection.connection_made
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - connection.start_keepalive
    - connection.transport.abort
    - websockets.asyncio.async_timeout.Timeout.__init__
    - connection.close
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    - websockets.asyncio.server.Server.start_connection_handler
    - asyncio.timeout
    - loop.time
    - websockets.asyncio.server.Server.conn_handler
    - connection.handshake
    - connection.logger.error
    - websockets.asyncio.async_timeout.timeout
    - <builtin>.super
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - connection
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 397
    functionName: websockets.asyncio.server.Server.start_connection_handler
    functionSourceFile: websockets.asyncio.server
    functionUses: 1
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - connection.start_keepalive
    - connection.transport.abort
    - websockets.asyncio.async_timeout.Timeout.__init__
    - connection.close
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    - asyncio.timeout
    - loop.time
    - websockets.asyncio.server.Server.conn_handler
    - connection.handshake
    - connection.logger.error
    - websockets.asyncio.async_timeout.timeout
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 7
    argDefaultValues: []
    argNames:
    - self
    - handler
    - process_request
    - process_response
    - server_header
    - open_timeout
    - logger
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 262
    functionName: websockets.asyncio.server.Server.__init__
    functionSourceFile: websockets.asyncio.server
    functionUses: 4
    functionsReached:
    - logging.getLogger
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 304
    functionName: websockets.asyncio.server.Server.connections
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - server
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 315
    functionName: websockets.asyncio.server.Server.wrap
    functionSourceFile: websockets.asyncio.server
    functionUses: 2
    functionsReached:
    - sock.getsockname
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sock.getsockname
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 12
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - connection
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 343
    functionName: websockets.asyncio.server.Server.conn_handler
    functionSourceFile: websockets.asyncio.server
    functionUses: 2
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - connection.start_keepalive
    - connection.transport.abort
    - websockets.asyncio.async_timeout.Timeout.__init__
    - connection.close
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    - asyncio.timeout
    - loop.time
    - connection.handshake
    - connection.logger.error
    - websockets.asyncio.async_timeout.timeout
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.handshake
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.transport.abort
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.logger.error
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.start_keepalive
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.close
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee675905e0>
    - <ast.Attribute object at 0x7fee67590b80>
    - <ast.Constant object at 0x7fee67376460>
    argNames:
    - self
    - close_connections
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 408
    functionName: websockets.asyncio.server.Server.close
    functionSourceFile: websockets.asyncio.server
    functionUses: 2
    functionsReached:
    - asyncio.wait
    - asyncio.sleep
    - websockets.asyncio.server.Server._close
    - connection.close
    - websockets.asyncio.server.Server.get_loop
    - asyncio.create_task
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 9
    IfCount: 3
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee67376310>
    - <ast.Attribute object at 0x7fee67376c40>
    - <ast.Constant object at 0x7fee67376cd0>
    argNames:
    - self
    - close_connections
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 438
    functionName: websockets.asyncio.server.Server._close
    functionSourceFile: websockets.asyncio.server
    functionUses: 3
    functionsReached:
    - connection.close
    - asyncio.wait
    - asyncio.sleep
    - asyncio.create_task
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 510
    functionName: websockets.asyncio.server.Server.get_loop
    functionSourceFile: ''
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.create_task
    functionSourceFile: asyncio
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 489
    functionName: websockets.asyncio.server.Server.wait_closed
    functionSourceFile: websockets.asyncio.server
    functionUses: 2
    functionsReached:
    - asyncio.shield
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 524
    functionName: websockets.asyncio.server.Server.start_serving
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 538
    functionName: websockets.asyncio.server.Server.serve_forever
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 557
    functionName: websockets.asyncio.server.Server.sockets
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 564
    functionName: websockets.asyncio.server.Server.__aenter__
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 567
    functionName: websockets.asyncio.server.Server.__aexit__
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - asyncio.wait
    - asyncio.sleep
    - websockets.asyncio.server.Server.close
    - websockets.asyncio.server.Server._close
    - connection.close
    - websockets.asyncio.server.Server.get_loop
    - websockets.asyncio.server.Server.wait_closed
    - asyncio.create_task
    - asyncio.shield
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 773
    functionName: websockets.asyncio.server.serve.__init__.factory
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - websockets.server.ServerProtocol.__init__
    - <builtin>.setattr
    - <builtin>.super
    - websockets.asyncio.server.ServerConnection.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - protocol
    - subprotocols
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 788
    functionName: websockets.asyncio.server.serve.__init__.factory.protocol_select_subprotocol
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 8
    argDefaultValues: []
    argNames:
    - self
    - origins
    - extensions
    - subprotocols
    - select_subprotocol
    - state
    - max_size
    - logger
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 78
    functionName: websockets.server.ServerProtocol.__init__
    functionSourceFile: websockets.server
    functionUses: 2
    functionsReached:
    - <builtin>.setattr
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: loop.create_unix_server
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: loop.create_server
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 828
    functionName: websockets.asyncio.server.serve.__aenter__
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 831
    functionName: websockets.asyncio.server.serve.__aexit__
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - asyncio.wait
    - asyncio.sleep
    - websockets.asyncio.server.Server.close
    - websockets.asyncio.server.Server._close
    - connection.close
    - websockets.asyncio.server.Server.get_loop
    - websockets.asyncio.server.Server.wait_closed
    - asyncio.create_task
    - asyncio.shield
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 842
    functionName: websockets.asyncio.server.serve.__await__
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - <builtin>.str
    - sock.getsockname
    - websockets.asyncio.server.Server.wrap
    - websockets.asyncio.server.serve.__await_impl__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 846
    functionName: websockets.asyncio.server.serve.__await_impl__
    functionSourceFile: websockets.asyncio.server
    functionUses: 1
    functionsReached:
    - sock.getsockname
    - <builtin>.str
    - websockets.asyncio.server.Server.wrap
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67033a60>
    argNames:
    - handler
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 856
    functionName: websockets.asyncio.server.unix_serve
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - websockets.asyncio.server.serve.__init__
    - loop.create_unix_server
    - websockets.headers.validate_subprotocols
    - <builtin>.list
    - logging.getLogger
    - <builtin>.isinstance
    - kwargs.setdefault
    - websockets.asyncio.server.Server.__init__
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - loop.create_server
    - kwargs.pop
    - _token_re.fullmatch
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - asyncio.get_running_loop
    - kwargs.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - credentials
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 878
    functionName: websockets.asyncio.server.is_credentials
    functionSourceFile: websockets.asyncio.server
    functionUses: 1
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee6747e1c0>
    - <ast.Constant object at 0x7fee6747e310>
    - <ast.Constant object at 0x7fee6747ec10>
    argNames:
    - realm
    - credentials
    - check_credentials
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 887
    functionName: websockets.asyncio.server.basic_auth
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - websockets.asyncio.server.is_credentials
    - <builtin>.list
    - <builtin>.isinstance
    - typing.cast
    - <builtin>.dict
    - <builtin>.all
    linkageType: pythonLinkage
    raised:
    - TypeError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.all
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.dict
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - username
    - password
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 942
    functionName: websockets.asyncio.server.basic_auth.check_credentials
    functionSourceFile: websockets.asyncio.server
    functionUses: 1
    functionsReached:
    - hmac.compare_digest
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: hmac.compare_digest
    functionSourceFile: hmac
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - connection
    - request
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 951
    functionName: websockets.asyncio.server.basic_auth.process_request
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - base64.b64decode
    - basic_credentials.encode
    - websockets.headers.parse_token68
    - websockets.headers.parse_authorization_basic
    - hmac.compare_digest
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _token68_re.match
    - user_pass.split
    - _quote_re.sub
    - websockets.headers.build_quoted_string
    - _token_re.match
    - connection.respond
    - scheme.lower
    - <builtin>.isinstance
    - websockets.asyncio.server.basic_auth.check_credentials
    - websockets.headers.parse_end
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.build_www_authenticate_basic
    - _quotable_re.fullmatch
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: -1
    functionName: websockets.server
    functionSourceFile: websockets.server
    functionUses: 0
    functionsReached:
    - <builtin>.globals
    - websockets.imports.lazy_import
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.setattr
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 5
    IfCount: 5
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - request
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 113
    functionName: websockets.server.ServerProtocol.accept
    functionSourceFile: websockets.server
    functionUses: 0
    functionsReached:
    - ext_factory.process_request_params
    - websockets.headers.parse_list
    - websockets.utils.accept_key
    - websockets.headers.parse_OWS
    - headers.get
    - base64.b64decode
    - _protocol_re.match
    - websockets.headers.parse_subprotocol
    - <builtin>.tuple
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - http.HTTPStatus
    - key.encode
    - websockets.headers.parse_extension
    - headers.get_all
    - <builtin>.super
    - websockets.server.ServerProtocol.process_request
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - websockets.headers.parse_upgrade
    - match.end
    - accepted_extensions.append
    - extension_headers.append
    - match.group
    - websockets.headers.build_extension_item
    - websockets.headers.parse_token
    - hashlib.sha1
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - websockets.server.ServerProtocol.process_subprotocol
    - value.lower
    - websockets.server.ServerProtocol.process_origin
    - base64.b64encode
    - websockets.headers.build_extension
    - origin_or_regex.fullmatch
    - websockets.server.ServerProtocol.reject
    - arg.raw_items
    - _token_re.match
    - websockets.datastructures.Headers.update
    - <builtin>.set
    - <builtin>.sum
    - websockets.datastructures.Headers.__init__
    - websockets.headers.parse_connection_option
    - websockets.server.ServerProtocol.process_extensions
    - parameters.append
    - <builtin>.str
    - websockets.headers.parse_quoted_string
    - <builtin>.isinstance
    - typing.cast
    - websockets.headers.parse_connection
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - text.encode
    - websockets.server.ServerProtocol.select_subprotocol
    - <builtin>.any
    - email.utils.formatdate
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - request
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 205
    functionName: websockets.server.ServerProtocol.process_request
    functionSourceFile: websockets.server
    functionUses: 1
    functionsReached:
    - ext_factory.process_request_params
    - websockets.headers.parse_list
    - websockets.utils.accept_key
    - websockets.headers.parse_OWS
    - headers.get
    - base64.b64decode
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - key.encode
    - websockets.headers.parse_extension
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - websockets.headers.parse_upgrade
    - match.end
    - accepted_extensions.append
    - extension_headers.append
    - match.group
    - websockets.headers.build_extension_item
    - websockets.headers.parse_token
    - hashlib.sha1
    - _unquote_re.sub
    - items.append
    - websockets.server.ServerProtocol.process_subprotocol
    - _token_re.fullmatch
    - value.lower
    - websockets.server.ServerProtocol.process_origin
    - base64.b64encode
    - websockets.headers.build_extension
    - origin_or_regex.fullmatch
    - _token_re.match
    - <builtin>.set
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.server.ServerProtocol.process_extensions
    - parameters.append
    - websockets.headers.parse_quoted_string
    - <builtin>.isinstance
    - typing.cast
    - websockets.headers.parse_connection
    - websockets.headers.parse_subprotocol_item
    - websockets.server.ServerProtocol.select_subprotocol
    - <builtin>.any
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - InvalidUpgrade
    - InvalidHeader
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - status
    - text
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 477
    functionName: websockets.server.ServerProtocol.reject
    functionSourceFile: websockets.server
    functionUses: 1
    functionsReached:
    - <builtin>.str
    - <builtin>.isinstance
    - arg.raw_items
    - text.encode
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - http.HTTPStatus
    - email.utils.formatdate
    - <builtin>.len
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: email.utils.formatdate
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: key.encode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - headers
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 277
    functionName: websockets.server.ServerProtocol.process_origin
    functionSourceFile: websockets.server
    functionUses: 2
    functionsReached:
    - origin_or_regex.fullmatch
    - headers.get
    - <builtin>.isinstance
    - typing.cast
    linkageType: pythonLinkage
    raised:
    - InvalidHeader
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - headers
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 312
    functionName: websockets.server.ServerProtocol.process_extensions
    functionSourceFile: websockets.server
    functionUses: 2
    functionsReached:
    - ext_factory.process_request_params
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_extension
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - accepted_extensions.append
    - extension_headers.append
    - websockets.headers.build_extension_item
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - websockets.headers.build_extension
    - _token_re.match
    - <builtin>.sum
    - websockets.headers.parse_connection_option
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - headers
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 393
    functionName: websockets.server.ServerProtocol.process_subprotocol
    functionSourceFile: websockets.server
    functionUses: 2
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - <builtin>.set
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.server.ServerProtocol.select_subprotocol
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: origin_or_regex.fullmatch
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ext_factory.process_request_params
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extension_headers.append
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - subprotocols
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 417
    functionName: websockets.server.ServerProtocol.select_subprotocol
    functionSourceFile: websockets.server
    functionUses: 3
    functionsReached:
    - <builtin>.set
    linkageType: pythonLinkage
    raised:
    - NegotiationError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: http.HTTPStatus
    functionSourceFile: http
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: text.encode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 9
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - response
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 510
    functionName: websockets.server.ServerProtocol.send_response
    functionSourceFile: websockets.server
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.discard
    - websockets.protocol.Protocol.send_eof
    - websockets.protocol.Protocol.discard
    - response.serialize
    - response.headers.raw_items
    - <builtin>.next
    - <builtin>.len
    - websockets.streams.StreamReader.at_eof
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: response.serialize
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 571
    functionName: websockets.server.ServerConnection.__init__
    functionSourceFile: websockets.server
    functionUses: 0
    functionsReached:
    - warnings.warn
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.http
    functionSourceFile: websockets.http
    functionUses: 0
    functionsReached:
    - warnings.warn
    - warnings.filterwarnings
    - warnings.catch_warnings
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: warnings.catch_warnings
    functionSourceFile: warnings
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: warnings.filterwarnings
    functionSourceFile: warnings
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.legacy.http
    functionSourceFile: websockets.legacy.http
    functionUses: 0
    functionsReached:
    - os.environ.get
    - re.compile
    - <builtin>.int
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - value
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 17
    functionName: websockets.legacy.http.d
    functionSourceFile: websockets.legacy.http
    functionUses: 0
    functionsReached:
    - value.decode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - stream
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 45
    functionName: websockets.legacy.http.read_request
    functionSourceFile: websockets.legacy.http
    functionUses: 4
    functionsReached:
    - websockets.legacy.http.read_headers
    - <builtin>.range
    - <builtin>.tuple
    - raw_path.decode
    - <builtin>.super
    - _value_re.fullmatch
    - raw_value.strip
    - _token_re.fullmatch
    - websockets.legacy.http.read_line
    - request_line.split
    - line.endswith
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - stream.readline
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - stream
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 186
    functionName: websockets.legacy.http.read_line
    functionSourceFile: websockets.legacy.http
    functionUses: 9
    functionsReached:
    - <builtin>.len
    - line.endswith
    - stream.readline
    linkageType: pythonLinkage
    raised:
    - EOFError
    - SecurityError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - stream
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 146
    functionName: websockets.legacy.http.read_headers
    functionSourceFile: websockets.legacy.http
    functionUses: 8
    functionsReached:
    - raw_value.decode
    - line.split
    - _value_re.fullmatch
    - <builtin>.len
    - <builtin>.isinstance
    - line.endswith
    - arg.raw_items
    - <builtin>.tuple
    - <builtin>.range
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - stream.readline
    - raw_value.strip
    - _token_re.fullmatch
    - <builtin>.super
    - websockets.legacy.http.read_line
    - raw_name.decode
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - stream
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 94
    functionName: websockets.legacy.http.read_response
    functionSourceFile: websockets.legacy.http
    functionUses: 2
    functionsReached:
    - websockets.legacy.http.read_headers
    - stream.readline
    - <builtin>.range
    - <builtin>.tuple
    - <builtin>.super
    - _value_re.fullmatch
    - status_line.split
    - <builtin>.int
    - raw_value.strip
    - _token_re.fullmatch
    - websockets.legacy.http.read_line
    - line.endswith
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - raw_reason.decode
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: stream.readline
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.legacy
    functionSourceFile: websockets.legacy
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.auth
    functionSourceFile: websockets.auth
    functionUses: 0
    functionsReached:
    - warnings.warn
    - warnings.filterwarnings
    - warnings.catch_warnings
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.legacy.auth
    functionSourceFile: websockets.legacy.auth
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - value
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 20
    functionName: websockets.legacy.auth.is_credentials
    functionSourceFile: websockets.legacy.auth
    functionUses: 1
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 5
    argDefaultValues: []
    argNames:
    - self
    - args
    - realm
    - check_credentials
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 46
    functionName: websockets.legacy.auth.BasicAuthWebSocketServerProtocol.__init__
    functionSourceFile: websockets.legacy.auth
    functionUses: 0
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - username
    - password
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 58
    functionName: websockets.legacy.auth.BasicAuthWebSocketServerProtocol.check_credentials
    functionSourceFile: websockets.legacy.auth
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - path
    - request_headers
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 79
    functionName: websockets.legacy.auth.BasicAuthWebSocketServerProtocol.process_request
    functionSourceFile: websockets.legacy.auth
    functionUses: 0
    functionsReached:
    - base64.b64decode
    - basic_credentials.encode
    - websockets.headers.parse_token68
    - <builtin>.super
    - websockets.headers.parse_authorization_basic
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _token68_re.match
    - user_pass.split
    - _quote_re.sub
    - websockets.headers.build_quoted_string
    - websockets.legacy.auth.BasicAuthWebSocketServerProtocol.check_credentials
    - _token_re.match
    - scheme.lower
    - websockets.headers.parse_end
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.build_www_authenticate_basic
    - _quotable_re.fullmatch
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 1
    IfCount: 6
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee6703e730>
    - <ast.Constant object at 0x7fee6703e9d0>
    - <ast.Constant object at 0x7fee6703e520>
    - <ast.Constant object at 0x7fee6703edf0>
    argNames:
    - realm
    - credentials
    - check_credentials
    - create_protocol
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 118
    functionName: websockets.legacy.auth.basic_auth_protocol_factory
    functionSourceFile: websockets.legacy.auth
    functionUses: 0
    functionsReached:
    - <builtin>.list
    - websockets.legacy.auth.is_credentials
    - <builtin>.isinstance
    - typing.cast
    - functools.partial
    - <builtin>.dict
    - <builtin>.all
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - username
    - password
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 171
    functionName: websockets.legacy.auth.basic_auth_protocol_factory.check_credentials
    functionSourceFile: websockets.legacy.auth
    functionUses: 0
    functionsReached:
    - hmac.compare_digest
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: functools.partial
    functionSourceFile: functools
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.legacy.server
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 13
    argDefaultValues: []
    argNames:
    - self
    - ws_handler
    - ws_server
    - logger
    - origins
    - extensions
    - subprotocols
    - extra_headers
    - server_header
    - process_request
    - select_subprotocol
    - open_timeout
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 91
    functionName: websockets.legacy.server.WebSocketServerProtocol.__init__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - logging.getLogger
    - warnings.warn
    - typing.cast
    - inspect.signature
    - websockets.legacy.server.remove_path_argument
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - ws_handler
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1162
    functionName: websockets.legacy.server.remove_path_argument
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - warnings.warn
    - typing.cast
    - inspect.signature
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - transport
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 14
    functionLinenumber: 136
    functionName: websockets.legacy.server.WebSocketServerProtocol.connection_made
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.utils.accept_key
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - typing.cast.is_closing
    - struct.pack
    - _protocol_re.match
    - <builtin>.tuple
    - <builtin>.bytes
    - <builtin>.range
    - <builtin>.callable
    - websockets.headers.parse_extension
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - frames.Frame
    - headers.get_all
    - close.check
    - websockets.headers.parse_upgrade_protocol
    - new_frame.check
    - typing.cast.write
    - <builtin>.reversed
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - typing.cast.write_eof
    - pong_waiter.done
    - base64.b64encode
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - headers.setdefault
    - websockets.legacy.framing.Frame.read
    - request_line.split
    - typing.cast.abort
    - arg.raw_items
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - _token_re.match
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - response_headers.setdefault
    - websockets.datastructures.Headers.raw_items
    - parameters.append
    - warnings.warn
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - websockets.headers.peek_ahead
    - stream.readline
    - websockets.headers.parse_extension_item
    - websockets.legacy.http.read_headers
    - websockets.frames.Close.parse
    - typing.cast.close
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - asyncio.Protocol.pings.items
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - raw_path.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - email.utils.formatdate
    - match.end
    - accepted_extensions.append
    - hashlib.sha1
    - ping_ids.append
    - _unquote_re.sub
    - value.lower
    - asyncio.Protocol.write_eof
    - websockets.legacy.server.WebSocketServerProtocol.handler
    - s_w_key.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.server.remove_path_argument._ws_handler
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - <builtin>.set
    - websockets.headers.parse_connection_option
    - data.encode
    - asyncio.get_running_loop
    - websockets.legacy.handshake.check_request
    - websockets.headers.parse_quoted_string
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - <builtin>.any
    - asyncio.Protocol.logger.info
    - time.perf_counter
    - <builtin>.len
    - frame.data.decode
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - ext_factory.process_request_params
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - waiter.cancelled
    - struct.unpack
    - base64.b64decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - random.getrandbits
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - <builtin>.super
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - _quoted_string_re.match
    - _value_re.fullmatch
    - extension_headers.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - enum.IntEnum.__init__
    - pong_waiter.set_result
    - frames.Opcode
    - _token_re.fullmatch
    - raw_value.strip
    - websockets.legacy.http.read_line
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - websockets.headers.build_extension
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - line.endswith
    - headers.raw_items
    - websockets.datastructures.Headers.update
    - asyncio.Protocol.messages.append
    - <builtin>.sum
    - asyncio.shield
    - websockets.datastructures.Headers.__init__
    - response.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - raw_value.decode
    - asyncio.Protocol.write
    - line.split
    - codecs.getincrementaldecoder
    - websockets.headers.parse_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.handshake.build_response
    - headers.get
    - websockets.headers.parse_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.utils.apply_mask
    - websockets.legacy.framing.prepare_ctrl
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - asyncio.Protocol.logger.error
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - websockets.headers.parse_upgrade
    - match.group
    - websockets.headers.parse_token
    - websockets.headers.build_extension_item
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - fragments.append
    - typing.cast.can_write_eof
    - items.append
    - websockets.asyncio.async_timeout.timeout
    - asyncio.Protocol.abort
    - extension.decode
    - loop.time
    - <builtin>.sorted
    - decoder.decode
    - speedups.apply_mask
    - raw_name.decode
    - asyncio.Protocol.can_write_eof
    - <builtin>.str
    - websockets.legacy.framing.Frame.write
    - typing.cast
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - websockets.legacy.server.WebSocketServerProtocol.handshake
    - int.from_bytes
    - websockets.headers.parse_subprotocol_item
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - websockets.frames.Close.check
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - asyncio.timeout
    - <builtin>.iter
    - websockets.legacy.http.read_request
    - websockets.frames.Close.serialize
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 22
    IfCount: 9
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 149
    functionName: websockets.legacy.server.WebSocketServerProtocol.handler
    functionSourceFile: websockets.legacy.server
    functionUses: 1
    functionsReached:
    - asyncio.sleep
    - websockets.utils.accept_key
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - typing.cast.is_closing
    - struct.pack
    - _protocol_re.match
    - <builtin>.tuple
    - <builtin>.bytes
    - <builtin>.range
    - <builtin>.callable
    - websockets.headers.parse_extension
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - frames.Frame
    - headers.get_all
    - close.check
    - websockets.headers.parse_upgrade_protocol
    - new_frame.check
    - typing.cast.write
    - <builtin>.reversed
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - typing.cast.write_eof
    - pong_waiter.done
    - base64.b64encode
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - headers.setdefault
    - websockets.legacy.framing.Frame.read
    - request_line.split
    - typing.cast.abort
    - arg.raw_items
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - _token_re.match
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - response_headers.setdefault
    - websockets.datastructures.Headers.raw_items
    - parameters.append
    - warnings.warn
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - websockets.headers.peek_ahead
    - stream.readline
    - websockets.headers.parse_extension_item
    - websockets.legacy.http.read_headers
    - websockets.frames.Close.parse
    - typing.cast.close
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - asyncio.Protocol.pings.items
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - raw_path.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - email.utils.formatdate
    - match.end
    - accepted_extensions.append
    - hashlib.sha1
    - ping_ids.append
    - _unquote_re.sub
    - value.lower
    - asyncio.Protocol.write_eof
    - s_w_key.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.server.remove_path_argument._ws_handler
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - <builtin>.set
    - websockets.headers.parse_connection_option
    - data.encode
    - asyncio.get_running_loop
    - websockets.legacy.handshake.check_request
    - websockets.headers.parse_quoted_string
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - <builtin>.any
    - asyncio.Protocol.logger.info
    - time.perf_counter
    - <builtin>.len
    - frame.data.decode
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - ext_factory.process_request_params
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - waiter.cancelled
    - struct.unpack
    - base64.b64decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - random.getrandbits
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - <builtin>.super
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - _quoted_string_re.match
    - _value_re.fullmatch
    - extension_headers.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - enum.IntEnum.__init__
    - pong_waiter.set_result
    - frames.Opcode
    - _token_re.fullmatch
    - raw_value.strip
    - websockets.legacy.http.read_line
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - websockets.headers.build_extension
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - line.endswith
    - headers.raw_items
    - websockets.datastructures.Headers.update
    - asyncio.Protocol.messages.append
    - <builtin>.sum
    - asyncio.shield
    - websockets.datastructures.Headers.__init__
    - response.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - raw_value.decode
    - asyncio.Protocol.write
    - line.split
    - codecs.getincrementaldecoder
    - websockets.headers.parse_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.handshake.build_response
    - headers.get
    - websockets.headers.parse_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.utils.apply_mask
    - websockets.legacy.framing.prepare_ctrl
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - asyncio.Protocol.logger.error
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - websockets.headers.parse_upgrade
    - match.group
    - websockets.headers.parse_token
    - websockets.headers.build_extension_item
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - fragments.append
    - typing.cast.can_write_eof
    - items.append
    - websockets.asyncio.async_timeout.timeout
    - asyncio.Protocol.abort
    - extension.decode
    - loop.time
    - <builtin>.sorted
    - decoder.decode
    - speedups.apply_mask
    - raw_name.decode
    - asyncio.Protocol.can_write_eof
    - <builtin>.str
    - websockets.legacy.framing.Frame.write
    - typing.cast
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - websockets.legacy.server.WebSocketServerProtocol.handshake
    - int.from_bytes
    - websockets.headers.parse_subprotocol_item
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - websockets.frames.Close.check
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - asyncio.timeout
    - <builtin>.iter
    - websockets.legacy.http.read_request
    - websockets.frames.Close.serialize
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 9
    IfCount: 9
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7fee671bbca0>
    - <ast.Constant object at 0x7fee671bb7c0>
    - <ast.Constant object at 0x7fee671bb940>
    - <ast.Constant object at 0x7fee671bbac0>
    argNames:
    - self
    - origins
    - available_extensions
    - available_subprotocols
    - extra_headers
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 15
    functionLinenumber: 554
    functionName: websockets.legacy.server.WebSocketServerProtocol.handshake
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - asyncio.sleep
    - websockets.utils.accept_key
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - struct.pack
    - _protocol_re.match
    - <builtin>.tuple
    - <builtin>.bytes
    - <builtin>.range
    - <builtin>.callable
    - websockets.headers.parse_extension
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - frames.Frame
    - headers.get_all
    - close.check
    - websockets.headers.parse_upgrade_protocol
    - new_frame.check
    - typing.cast.write
    - <builtin>.reversed
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - typing.cast.write_eof
    - pong_waiter.done
    - base64.b64encode
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.framing.Frame.read
    - request_line.split
    - typing.cast.abort
    - arg.raw_items
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - _token_re.match
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - response_headers.setdefault
    - websockets.datastructures.Headers.raw_items
    - parameters.append
    - warnings.warn
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - websockets.headers.peek_ahead
    - stream.readline
    - websockets.headers.parse_extension_item
    - websockets.legacy.http.read_headers
    - websockets.frames.Close.parse
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - typing.cast.close
    - asyncio.Protocol.pings.items
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - raw_path.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - match.end
    - accepted_extensions.append
    - hashlib.sha1
    - ping_ids.append
    - <builtin>.iter
    - _unquote_re.sub
    - value.lower
    - asyncio.Protocol.write_eof
    - s_w_key.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - <builtin>.set
    - websockets.headers.parse_connection_option
    - data.encode
    - asyncio.get_running_loop
    - websockets.legacy.handshake.check_request
    - websockets.headers.parse_quoted_string
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - <builtin>.any
    - asyncio.Protocol.logger.info
    - time.perf_counter
    - <builtin>.len
    - frame.data.decode
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - ext_factory.process_request_params
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - waiter.cancelled
    - struct.unpack
    - base64.b64decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - random.getrandbits
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - <builtin>.super
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - _quoted_string_re.match
    - _value_re.fullmatch
    - extension_headers.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - enum.IntEnum.__init__
    - pong_waiter.set_result
    - frames.Opcode
    - _token_re.fullmatch
    - raw_value.strip
    - websockets.legacy.http.read_line
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - websockets.headers.build_extension
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - line.endswith
    - headers.raw_items
    - websockets.datastructures.Headers.update
    - asyncio.Protocol.messages.append
    - <builtin>.sum
    - websockets.datastructures.Headers.__init__
    - asyncio.shield
    - response.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - raw_value.decode
    - asyncio.Protocol.write
    - line.split
    - codecs.getincrementaldecoder
    - websockets.headers.parse_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.handshake.build_response
    - headers.get
    - websockets.headers.parse_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.utils.apply_mask
    - websockets.legacy.framing.prepare_ctrl
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - asyncio.Protocol.logger.error
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - websockets.headers.parse_upgrade
    - match.group
    - websockets.headers.parse_token
    - websockets.headers.build_extension_item
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - fragments.append
    - typing.cast.can_write_eof
    - items.append
    - websockets.asyncio.async_timeout.timeout
    - asyncio.Protocol.abort
    - extension.decode
    - loop.time
    - <builtin>.sorted
    - decoder.decode
    - speedups.apply_mask
    - raw_name.decode
    - asyncio.Protocol.can_write_eof
    - <builtin>.str
    - websockets.legacy.framing.Frame.write
    - typing.cast
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - int.from_bytes
    - websockets.headers.parse_subprotocol_item
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - asyncio.timeout
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - websockets.frames.Close.check
    - email.utils.formatdate
    - websockets.legacy.http.read_request
    - websockets.frames.Close.serialize
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - AbortHandshake
    - BrokenPipeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: headers.setdefault
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 6
    IfCount: 3
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee67a02d00>
    argNames:
    - self
    - status
    - headers
    - body
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 294
    functionName: websockets.legacy.server.WebSocketServerProtocol.write_http_response
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - asyncio.Protocol.write
    - <builtin>.str
    - typing.cast.write
    - <builtin>.iter
    - <builtin>.len
    - response.encode
    - websockets.datastructures.Headers.raw_items
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.logger.info
    functionSourceFile: asyncio
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 7
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 1317
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.abort
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - websocket
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1180
    functionName: websockets.legacy.server.remove_path_argument._ws_handler
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - typing.cast
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 5
    IfCount: 5
    argCount: 3
    argDefaultValues:
    - <ast.Attribute object at 0x7fee67bbfc10>
    - <ast.Constant object at 0x7fee67bbf790>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 1365
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 265
    functionName: websockets.legacy.server.WebSocketServerProtocol.read_http_request
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - websockets.legacy.http.read_headers
    - <builtin>.range
    - <builtin>.tuple
    - raw_path.decode
    - <builtin>.super
    - _value_re.fullmatch
    - raw_value.strip
    - _token_re.fullmatch
    - websockets.legacy.http.read_line
    - request_line.split
    - line.endswith
    - arg.raw_items
    - headers.raw_items
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - stream.readline
    - <builtin>.len
    - websockets.legacy.http.read_request
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - InvalidMessage
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: headers.raw_items
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: response.encode
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - path
    - request_headers
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 322
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_request
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - warnings.warn
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee67376580>
    argNames:
    - headers
    - origins
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 372
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_origin
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - headers.get
    - typing.cast
    linkageType: pythonLinkage
    raised:
    - InvalidOrigin
    - InvalidHeader
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - headers
    - available_extensions
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 400
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_extensions
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - ext_factory.process_request_params
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_extension
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - accepted_extensions.append
    - extension_headers.append
    - websockets.headers.build_extension_item
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - websockets.headers.build_extension
    - _token_re.match
    - <builtin>.sum
    - websockets.headers.parse_connection_option
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - headers
    - available_subprotocols
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 482
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - <builtin>.set
    - websockets.headers.parse_connection_option
    - <builtin>.sorted
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - client_subprotocols
    - server_subprotocols
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 514
    functionName: websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    functionSourceFile: websockets.legacy.server
    functionUses: 4
    functionsReached:
    - <builtin>.set
    - <builtin>.sorted
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.legacy.server.WebSocketServerProtocol.select_subprotocol.<lambda1>
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - server_subprotocols.index
    - client_subprotocols.index
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: client_subprotocols.index
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: server_subprotocols.index
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - headers
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 37
    functionName: websockets.legacy.handshake.check_request
    functionSourceFile: websockets.legacy.handshake
    functionUses: 3
    functionsReached:
    - websockets.headers.parse_OWS
    - websockets.headers.parse_list
    - base64.b64decode
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - websockets.headers.parse_upgrade
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - value.lower
    - s_w_key.encode
    - _token_re.match
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_connection
    - websockets.headers.parse_subprotocol_item
    - <builtin>.any
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - InvalidUpgrade
    - InvalidHeader
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - headers
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 101
    functionName: websockets.legacy.handshake.build_response
    functionSourceFile: websockets.legacy.handshake
    functionUses: 3
    functionsReached:
    - base64.b64encode
    - hashlib.sha1
    - websockets.utils.accept_key
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.callable
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: response_headers.setdefault
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 14
    functionLinenumber: 330
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    functionSourceFile: websockets.legacy.protocol
    functionUses: 4
    functionsReached:
    - asyncio.sleep
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - struct.pack
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - frames.Frame
    - close.check
    - new_frame.check
    - typing.cast.write
    - <builtin>.reversed
    - pong_waiter.done
    - typing.cast.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.framing.Frame.read
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.frames.Close.parse
    - typing.cast.close
    - asyncio.Protocol.pings.items
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - ping_ids.append
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - data.encode
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - time.perf_counter
    - <builtin>.len
    - frame.data.decode
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    - waiter.cancelled
    - struct.unpack
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - random.getrandbits
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - enum.IntEnum.__init__
    - pong_waiter.set_result
    - frames.Opcode
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.messages.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - codecs.getincrementaldecoder
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.utils.apply_mask
    - websockets.legacy.framing.prepare_ctrl
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.error
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - fragments.append
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - asyncio.Protocol.abort
    - extension.decode
    - loop.time
    - decoder.decode
    - speedups.apply_mask
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.framing.Frame.write
    - int.from_bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee66ea8e20>
    argNames:
    - self
    - logger
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 665
    functionName: websockets.legacy.server.WebSocketServer.__init__
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - logging.getLogger
    - <builtin>.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - server
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 679
    functionName: websockets.legacy.server.WebSocketServer.wrap
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - sock.getsockname
    - <builtin>.str
    - server.get_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: server.get_loop
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - protocol
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 712
    functionName: websockets.legacy.server.WebSocketServer.register
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - protocol
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 719
    functionName: websockets.legacy.server.WebSocketServer.unregister
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee67bbf9d0>
    argNames:
    - self
    - close_connections
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 726
    functionName: websockets.legacy.server.WebSocketServer.close
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - websockets.legacy.server.WebSocketServer._close
    - asyncio.wait
    - asyncio.sleep
    - asyncio.create_task
    - websockets.legacy.server.WebSocketServer.get_loop
    - websocket.close
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 9
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - close_connections
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 749
    functionName: websockets.legacy.server.WebSocketServer._close
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - websocket.close
    - asyncio.sleep
    - asyncio.create_task
    - asyncio.wait
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 816
    functionName: websockets.legacy.server.WebSocketServer.get_loop
    functionSourceFile: ''
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websocket.close
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 795
    functionName: websockets.legacy.server.WebSocketServer.wait_closed
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - asyncio.shield
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 823
    functionName: websockets.legacy.server.WebSocketServer.is_serving
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 830
    functionName: websockets.legacy.server.WebSocketServer.start_serving
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 844
    functionName: websockets.legacy.server.WebSocketServer.serve_forever
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 863
    functionName: websockets.legacy.server.WebSocketServer.sockets
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 870
    functionName: websockets.legacy.server.WebSocketServer.__aenter__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 873
    functionName: websockets.legacy.server.WebSocketServer.__aexit__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - websockets.legacy.server.WebSocketServer._close
    - asyncio.wait
    - asyncio.sleep
    - websockets.legacy.server.WebSocketServer.wait_closed
    - asyncio.create_task
    - websockets.legacy.server.WebSocketServer.get_loop
    - asyncio.shield
    - websocket.close
    - websockets.legacy.server.WebSocketServer.close
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 4
    IfCount: 9
    argCount: 23
    argDefaultValues:
    - <ast.Constant object at 0x7fee674f3d00>
    - <ast.Constant object at 0x7fee674f3f40>
    argNames:
    - self
    - ws_handler
    - host
    - port
    - create_protocol
    - logger
    - compression
    - origins
    - extensions
    - subprotocols
    - extra_headers
    - server_header
    - process_request
    - select_subprotocol
    - open_timeout
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_size
    - max_queue
    - read_limit
    - write_limit
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 976
    functionName: websockets.legacy.server.Serve.__init__
    functionSourceFile: websockets.legacy.server
    functionUses: 1
    functionsReached:
    - websockets.headers.validate_subprotocols
    - warnings.warn
    - logging.getLogger
    - <builtin>.list
    - <builtin>.isinstance
    - typing.cast
    - websockets.legacy.server.WebSocketServer.__init__
    - functools.partial
    - inspect.signature
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - <builtin>.set
    - kwargs.pop
    - _token_re.fullmatch
    - asyncio.get_event_loop
    - websockets.legacy.server.remove_path_argument
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - kwargs.get
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.get_event_loop
    functionSourceFile: asyncio
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1104
    functionName: websockets.legacy.server.Serve.__aenter__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1107
    functionName: websockets.legacy.server.Serve.__aexit__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - websockets.legacy.server.WebSocketServer._close
    - asyncio.wait
    - asyncio.sleep
    - websockets.legacy.server.WebSocketServer.wait_closed
    - asyncio.create_task
    - websockets.legacy.server.WebSocketServer.get_loop
    - asyncio.shield
    - websocket.close
    - websockets.legacy.server.WebSocketServer.close
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1118
    functionName: websockets.legacy.server.Serve.__await__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - <builtin>.str
    - websockets.legacy.server.Serve.__await_impl__
    - sock.getsockname
    - websockets.legacy.server.WebSocketServer.wrap
    - server.get_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1122
    functionName: websockets.legacy.server.Serve.__await_impl__
    functionSourceFile: websockets.legacy.server
    functionUses: 1
    functionsReached:
    - sock.getsockname
    - <builtin>.str
    - websockets.legacy.server.WebSocketServer.wrap
    - server.get_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67aab640>
    argNames:
    - ws_handler
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1135
    functionName: websockets.legacy.server.unix_serve
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - websockets.headers.validate_subprotocols
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - logging.getLogger
    - _token_re.fullmatch
    - websockets.legacy.server.WebSocketServer.__init__
    - inspect.signature
    - <builtin>.set
    - websockets.legacy.server.remove_path_argument
    - kwargs.pop
    - websockets.legacy.server.Serve.__init__
    - warnings.warn
    - <builtin>.isinstance
    - typing.cast
    - functools.partial
    - <builtin>.any
    - asyncio.get_event_loop
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - kwargs.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: inspect.signature
    functionSourceFile: inspect
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.legacy.protocol
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 11
    IfCount: 6
    argCount: 15
    argDefaultValues: []
    argNames:
    - self
    - logger
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_size
    - max_queue
    - read_limit
    - write_limit
    - host
    - port
    - secure
    - legacy_recv
    - loop
    - timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 158
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.__init__
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - warnings.warn
    - logging.getLogger
    - asyncio.StreamReader
    - collections.deque
    - logger.isEnabledFor
    - loop.create_future
    - asyncio.get_event_loop
    - logging.LoggerAdapter
    - uuid.uuid4
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.StreamReader
    functionSourceFile: asyncio
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 302
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    functionSourceFile: websockets.legacy.protocol
    functionUses: 36
    functionsReached:
    - waiter.cancelled
    - asyncio.Protocol.connection_lost_waiter.done
    linkageType: pythonLinkage
    raised:
    - ConnectionResetError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.connection_lost_waiter.done
    functionSourceFile: asyncio
    functionUses: 38
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: waiter.cancelled
    functionSourceFile: <builtin>
    functionUses: 37
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 314
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol._drain
    functionSourceFile: websockets.legacy.protocol
    functionUses: 35
    functionsReached:
    - asyncio.sleep
    - asyncio.Protocol.is_closing
    - typing.cast.is_closing
    - waiter.cancelled
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 10
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 934
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    functionSourceFile: websockets.legacy.protocol
    functionUses: 5
    functionsReached:
    - websockets.frames.Close.parse
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - waiter.cancelled
    - struct.unpack
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - asyncio.Protocol.pings.items
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.utils.apply_mask
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.prepare_ctrl
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - frames.Frame
    - close.check
    - asyncio.Protocol.logger.error
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - new_frame.check
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - <builtin>.reversed
    - fragments.append
    - enum.IntEnum.__init__
    - pong_waiter.set_result
    - frames.Opcode
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - pong_waiter.done
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - extension.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.messages.append
    - loop.time
    - data.encode
    - decoder.decode
    - asyncio.shield
    - speedups.apply_mask
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - <builtin>.isinstance
    - int.from_bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - codecs.getincrementaldecoder
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.frames.Close.check
    - asyncio.timeout
    - time.perf_counter
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - frame.data.decode
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 8
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 11
    functionLinenumber: 1216
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    functionSourceFile: websockets.legacy.protocol
    functionUses: 5
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - random.getrandbits
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.prepare_ctrl
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.logger.error
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - data.encode
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - websockets.legacy.framing.Frame.write
    - <builtin>.isinstance
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - time.perf_counter
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 8
    IfCount: 9
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 1263
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 350
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.host
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 356
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.port
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 362
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.secure
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 369
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.local_address
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.get_extra_info
    - typing.cast.get_extra_info
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 389
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.remote_address
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.get_extra_info
    - typing.cast.get_extra_info
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 409
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.open
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 423
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.closed
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 434
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close_code
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 452
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close_reason
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 469
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.__aiter__
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - asyncio.wait
    - websockets.legacy.protocol.WebSocketCommonProtocol.recv
    - pop_message_waiter.done
    - asyncio.shield
    - asyncio.Protocol.messages.popleft
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 4
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 486
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.recv
    functionSourceFile: websockets.legacy.protocol
    functionUses: 1
    functionsReached:
    - asyncio.wait
    - pop_message_waiter.done
    - asyncio.shield
    - asyncio.Protocol.messages.popleft
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pop_message_waiter.done
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 900
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    functionSourceFile: websockets.legacy.protocol
    functionUses: 37
    functionsReached:
    - asyncio.shield
    linkageType: pythonLinkage
    raised:
    - InvalidState
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.messages.popleft
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 14
    IfCount: 6
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - message
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 564
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.send
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.prepare_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - <builtin>.next
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - typing.cast.encode
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - <builtin>.type
    - asyncio.Protocol.can_write_eof
    - <builtin>.isinstance
    - typing.cast
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - <builtin>.iter
    - asyncio.Protocol.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - data
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 149
    functionName: websockets.legacy.framing.prepare_data
    functionSourceFile: websockets.legacy.framing
    functionUses: 2
    functionsReached:
    - asyncio.Protocol.encode
    - typing.cast.encode
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 5
    argDefaultValues: []
    argNames:
    - self
    - fin
    - opcode
    - data
    - _state
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 9
    functionLinenumber: 1178
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - InvalidState
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee672d7c10>
    argNames:
    - self
    - close
    - data
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 1189
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.frames.Close.check
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 778
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.wait_closed
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - asyncio.shield
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee671339a0>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 791
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.ping
    functionSourceFile: websockets.legacy.protocol
    functionUses: 6
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - random.getrandbits
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.prepare_ctrl
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - data.encode
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - <builtin>.isinstance
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - time.perf_counter
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - data
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 173
    functionName: websockets.legacy.framing.prepare_ctrl
    functionSourceFile: websockets.legacy.framing
    functionUses: 11
    functionsReached:
    - <builtin>.isinstance
    - data.encode
    - <builtin>.bytes
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: time.perf_counter
    functionSourceFile: time
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee672ea520>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 850
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.pong
    functionSourceFile: websockets.legacy.protocol
    functionUses: 8
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.prepare_ctrl
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - data.encode
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.framing.Frame.write
    - <builtin>.isinstance
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 877
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc
    functionSourceFile: websockets.legacy.protocol
    functionUses: 2
    functionsReached:
    - websockets.exceptions.ConnectionClosed.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 3
    IfCount: 10
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 1004
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    functionSourceFile: websockets.legacy.protocol
    functionUses: 6
    functionsReached:
    - websockets.frames.Close.parse
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - waiter.cancelled
    - struct.unpack
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - asyncio.Protocol.pings.items
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.utils.apply_mask
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.prepare_ctrl
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - frames.Frame
    - close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - new_frame.check
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - <builtin>.reversed
    - fragments.append
    - enum.IntEnum.__init__
    - pong_waiter.set_result
    - frames.Opcode
    - typing.cast.can_write_eof
    - websockets.asyncio.async_timeout.timeout
    - pong_waiter.done
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - extension.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - data.encode
    - decoder.decode
    - asyncio.shield
    - speedups.apply_mask
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - <builtin>.isinstance
    - int.from_bytes
    - codecs.getincrementaldecoder
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.frames.Close.check
    - asyncio.timeout
    - time.perf_counter
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - frame.data.decode
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.messages.append
    functionSourceFile: asyncio
    functionUses: 6
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 5
    IfCount: 8
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - max_size
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 11
    functionLinenumber: 1079
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 7
    functionsReached:
    - websockets.frames.Close.parse
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - struct.pack
    - waiter.cancelled
    - struct.unpack
    - asyncio.Protocol.pings.items
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - websockets.utils.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.prepare_ctrl
    - <builtin>.bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - frames.Frame
    - close.check
    - new_frame.check
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - <builtin>.reversed
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - pong_waiter.set_result
    - frames.Opcode
    - websockets.asyncio.async_timeout.timeout
    - pong_waiter.done
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - extension.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - data.encode
    - asyncio.shield
    - speedups.apply_mask
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - asyncio.Protocol.can_write_eof
    - <builtin>.isinstance
    - int.from_bytes
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.frames.Close.check
    - asyncio.timeout
    - time.perf_counter
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: frame.data.decode
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - frame
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1061
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    functionSourceFile: websockets.legacy.protocol
    functionUses: 7
    functionsReached:
    - <builtin>.len
    - fragments.append
    - <builtin>.isinstance
    - decoder.decode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: fragments.append
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - max_size
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1142
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 8
    functionsReached:
    - new_frame.check
    - typing.NamedTuple.__init__
    - int.from_bytes
    - websockets.legacy.framing.Frame.read
    - struct.unpack
    - websockets.utils.apply_mask
    - extension.decode
    - <builtin>.reversed
    - <builtin>.len
    - frames.Opcode
    - frames.Frame
    - speedups.apply_mask
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.pings.items
    functionSourceFile: asyncio
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 2
    IfCount: 7
    argCount: 5
    argDefaultValues: []
    argNames:
    - cls
    - reader
    - mask
    - max_size
    - extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 44
    functionName: websockets.legacy.framing.Frame.read
    functionSourceFile: websockets.legacy.framing
    functionUses: 9
    functionsReached:
    - new_frame.check
    - typing.NamedTuple.__init__
    - int.from_bytes
    - struct.unpack
    - websockets.utils.apply_mask
    - extension.decode
    - <builtin>.reversed
    - <builtin>.len
    - frames.Opcode
    - frames.Frame
    - speedups.apply_mask
    linkageType: pythonLinkage
    raised:
    - PayloadTooBig
    - ProtocolError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - fin
    - opcode
    - data
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1157
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    functionSourceFile: websockets.legacy.protocol
    functionUses: 35
    functionsReached:
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - typing.cast.write
    - enum.IntEnum.__init__
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.NamedTuple.__init__
    functionSourceFile: ''
    functionUses: 38
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - write
    - mask
    - extensions
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 122
    functionName: websockets.legacy.framing.Frame.write
    functionSourceFile: websockets.legacy.framing
    functionUses: 36
    functionsReached:
    - asyncio.Protocol.write
    - typing.cast.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 1167
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.drain
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.sleep
    - typing.cast.close
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - waiter.cancelled
    - struct.pack
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - typing.cast.can_write_eof
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.timeout
    - typing.cast.write_eof
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.abort
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - loop.time
    - asyncio.shield
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - asyncio.Protocol.write
    - asyncio.Protocol.can_write_eof
    - typing.NamedTuple.__init__
    - websockets.legacy.framing.Frame.write
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.timeout
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.serialize
    - <builtin>.hasattr
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.hasattr
    functionSourceFile: <builtin>
    functionUses: 35
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 1346
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    functionSourceFile: websockets.legacy.protocol
    functionUses: 35
    functionsReached:
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.async_timeout.Timeout.__init__
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    - asyncio.timeout
    - loop.time
    - asyncio.shield
    - websockets.asyncio.async_timeout.timeout
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1427
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.abort_pings
    functionSourceFile: websockets.legacy.protocol
    functionUses: 1
    functionsReached:
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc
    - asyncio.Protocol.pings.values
    - websockets.exceptions.ConnectionClosed.__init__
    - pong_waiter.set_exception
    - pong_waiter.cancel
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.pings.values
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - transport
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1447
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.connection_made
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.set_write_buffer_limits
    - typing.cast.set_write_buffer_limits
    - typing.cast
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 8
    IfCount: 8
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1468
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.connection_lost
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.abort_pings
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc
    - waiter.set_result
    - asyncio.Protocol.pings.values
    - websockets.exceptions.ConnectionClosed.__init__
    - waiter.set_exception
    - pong_waiter.set_exception
    - pong_waiter.cancel
    - asyncio.Protocol.logger.debug
    - asyncio.Protocol.connection_lost_waiter.set_result
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: waiter.done
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: waiter.set_result
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: waiter.set_exception
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1507
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.pause_writing
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1511
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.resume_writing
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - waiter.done
    - waiter.set_result
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1521
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.data_received
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1524
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.eof_received
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 6
    IfCount: 8
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67376520>
    argNames:
    - websockets
    - message
    - raise_exceptions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1546
    functionName: websockets.legacy.protocol.broadcast
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - typing.cast.encode
    - <builtin>.isinstance
    - websocket.write_frame_sync
    - traceback.format_exception_only
    - websocket.logger.warning
    - websockets.legacy.framing.prepare_data
    - asyncio.Protocol.encode
    - exceptions.append
    - <builtin>.RuntimeError
    linkageType: pythonLinkage
    raised:
    - ExceptionGroup
    - TypeError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websocket.logger.warning
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websocket.write_frame_sync
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.legacy.framing
    functionSourceFile: websockets.legacy.framing
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 27
    functionName: websockets.legacy.framing.Frame.new_frame
    functionSourceFile: websockets.legacy.framing
    functionUses: 0
    functionsReached:
    - frames.Frame
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 37
    functionName: websockets.legacy.framing.Frame.__str__
    functionSourceFile: websockets.legacy.framing
    functionUses: 0
    functionsReached:
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 40
    functionName: websockets.legacy.framing.Frame.check
    functionSourceFile: websockets.legacy.framing
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: frames.Opcode
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: new_frame.check
    functionSourceFile: <builtin>
    functionUses: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.encode
    functionSourceFile: asyncio
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.encode
    functionSourceFile: typing
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - data
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 203
    functionName: websockets.legacy.framing.parse_close
    functionSourceFile: websockets.legacy.framing
    functionUses: 0
    functionsReached:
    - websockets.frames.Close.parse
    - <builtin>.isinstance
    - struct.unpack
    - <builtin>.len
    - close.check
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 219
    functionName: websockets.legacy.framing.serialize_close
    functionSourceFile: websockets.legacy.framing
    functionUses: 0
    functionsReached:
    - websockets.frames.Close.serialize
    - websockets.frames.Close.check
    - struct.pack
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.legacy.handshake
    functionSourceFile: websockets.legacy.handshake
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - headers
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 16
    functionName: websockets.legacy.handshake.build_request
    functionSourceFile: websockets.legacy.handshake
    functionUses: 1
    functionsReached:
    - base64.b64encode
    - websockets.utils.generate_key
    - secrets.token_bytes
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: s_w_key.encode
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - headers
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 117
    functionName: websockets.legacy.handshake.check_response
    functionSourceFile: websockets.legacy.handshake
    functionUses: 1
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - websockets.utils.accept_key
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - websockets.headers.parse_upgrade
    - match.end
    - match.group
    - websockets.headers.parse_token
    - hashlib.sha1
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - value.lower
    - base64.b64encode
    - _token_re.match
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_connection
    - websockets.headers.parse_subprotocol_item
    - <builtin>.any
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - InvalidUpgrade
    - InvalidHeader
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.legacy.exceptions
    functionSourceFile: websockets.legacy.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - status_code
    - headers
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 19
    functionName: websockets.legacy.exceptions.InvalidStatusCode.__init__
    functionSourceFile: websockets.legacy.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 23
    functionName: websockets.legacy.exceptions.InvalidStatusCode.__str__
    functionSourceFile: websockets.legacy.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee672fd940>
    argNames:
    - self
    - status
    - headers
    - body
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 42
    functionName: websockets.legacy.exceptions.AbortHandshake.__init__
    functionSourceFile: websockets.legacy.exceptions
    functionUses: 0
    functionsReached:
    - datastructures.Headers
    - http.HTTPStatus
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: datastructures.Headers
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 53
    functionName: websockets.legacy.exceptions.AbortHandshake.__str__
    functionSourceFile: websockets.legacy.exceptions
    functionUses: 0
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - uri
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 67
    functionName: websockets.legacy.exceptions.RedirectHandshake.__init__
    functionSourceFile: websockets.legacy.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 70
    functionName: websockets.legacy.exceptions.RedirectHandshake.__str__
    functionSourceFile: websockets.legacy.exceptions
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.cli
    functionSourceFile: websockets.cli
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - string
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 20
    functionName: websockets.cli.print_during_input
    functionSourceFile: websockets.cli
    functionUses: 4
    functionsReached:
    - sys.stdout.flush
    - sys.stdout.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.stdout.write
    functionSourceFile: sys
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.stdout.flush
    functionSourceFile: sys
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - string
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 40
    functionName: websockets.cli.print_over_input
    functionSourceFile: websockets.cli
    functionUses: 3
    functionsReached:
    - sys.stdout.flush
    - sys.stdout.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 53
    functionName: websockets.cli.ReadLines.__init__
    functionSourceFile: websockets.cli
    functionUses: 0
    functionsReached:
    - websockets.asyncio.messages.SimpleQueue.__init__
    - <builtin>.bytearray
    - collections.deque
    - websockets.streams.StreamReader.__init__
    - asyncio.get_running_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 57
    functionName: websockets.cli.ReadLines.parse
    functionSourceFile: websockets.cli
    functionUses: 1
    functionsReached:
    - sys.stdout.write
    - asyncio.Protocol.messages.put
    - websockets.streams.StreamReader.read_line
    - line.decode
    - <builtin>.len
    - sys.stdout.flush
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: line.decode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.messages.put
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - transport
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 64
    functionName: websockets.cli.ReadLines.connection_made
    functionSourceFile: websockets.cli
    functionUses: 0
    functionsReached:
    - sys.stdout.write
    - <builtin>.next
    - asyncio.Protocol.messages.put
    - websockets.streams.StreamReader.read_line
    - line.decode
    - <builtin>.len
    - websockets.cli.ReadLines.parse
    - sys.stdout.flush
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 68
    functionName: websockets.cli.ReadLines.data_received
    functionSourceFile: websockets.cli
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.feed_data
    - <builtin>.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 72
    functionName: websockets.cli.ReadLines.eof_received
    functionSourceFile: websockets.cli
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.feed_eof
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 76
    functionName: websockets.cli.ReadLines.connection_lost
    functionSourceFile: websockets.cli
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.messages.abort
    - websockets.streams.StreamReader.discard
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.messages.abort
    functionSourceFile: asyncio
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - websocket
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 81
    functionName: websockets.cli.print_incoming_messages
    functionSourceFile: websockets.cli
    functionUses: 3
    functionsReached:
    - websockets.cli.print_during_input
    - <builtin>.isinstance
    - sys.stdout.write
    - message.hex
    - sys.stdout.flush
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: message.hex
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - websocket
    - messages
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 89
    functionName: websockets.cli.send_outgoing_messages
    functionSourceFile: websockets.cli
    functionUses: 3
    functionsReached:
    - messages.get
    - websocket.send
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: messages.get
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websocket.send
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 9
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - uri
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 104
    functionName: websockets.cli.interactive_client
    functionSourceFile: websockets.cli
    functionUses: 2
    functionsReached:
    - websockets.headers.validate_subprotocols
    - <builtin>.list
    - websockets.cli.print_during_input
    - asyncio.wait
    - logging.getLogger
    - sys.stdout.write
    - <builtin>.print
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - asyncio.create_task
    - loop.connect_read_pipe
    - outgoing.cancel
    - _token_re.fullmatch
    - websockets.cli.print_over_input
    - websocket.close
    - incoming.cancel
    - websocket.send
    - sys.stdout.flush
    - websockets.asyncio.client.connect.__init__
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - asyncio.get_running_loop
    - <builtin>.isinstance
    - messages.get
    - websockets.cli.print_incoming_messages
    - websockets.cli.send_outgoing_messages
    - <builtin>.any
    - message.hex
    - transport.close
    - sys.exit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.print
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.exit
    functionSourceFile: sys
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: loop.connect_read_pipe
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: incoming.cancel
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: outgoing.cancel
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 7
    IfCount: 3
    argCount: 1
    argDefaultValues:
    - <ast.Constant object at 0x7fee67bdde80>
    argNames:
    - argv
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 145
    functionName: websockets.cli.main
    functionSourceFile: websockets.cli
    functionUses: 1
    functionsReached:
    - websockets.headers.validate_subprotocols
    - <builtin>.list
    - argparse.ArgumentParser
    - parser.add_mutually_exclusive_group
    - websockets.cli.interactive_client
    - asyncio.wait
    - logging.getLogger
    - websockets.cli.print_during_input
    - sys.stdout.write
    - <builtin>.print
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - asyncio.create_task
    - asyncio.run
    - loop.connect_read_pipe
    - outgoing.cancel
    - _token_re.fullmatch
    - websocket.close
    - websockets.cli.print_over_input
    - incoming.cancel
    - websocket.send
    - parser.parse_args
    - sys.stdout.flush
    - websockets.asyncio.client.connect.__init__
    - group.add_argument
    - os.system
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - asyncio.get_running_loop
    - <builtin>.isinstance
    - messages.get
    - websockets.cli.print_incoming_messages
    - websockets.cli.send_outgoing_messages
    - <builtin>.any
    - parser.print_usage
    - message.hex
    - transport.close
    - sys.exit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: argparse.ArgumentParser
    functionSourceFile: argparse
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: parser.add_mutually_exclusive_group
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: group.add_argument
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: parser.parse_args
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: parser.print_usage
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.system
    functionSourceFile: os
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.run
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.connection
    functionSourceFile: websockets.connection
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: -1
    functionName: websockets.__main__
    functionSourceFile: websockets.__main__
    functionUses: 0
    functionsReached:
    - websockets.headers.validate_subprotocols
    - <builtin>.list
    - argparse.ArgumentParser
    - parser.add_mutually_exclusive_group
    - websockets.cli.interactive_client
    - asyncio.wait
    - logging.getLogger
    - websockets.cli.print_during_input
    - sys.stdout.write
    - <builtin>.print
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - asyncio.create_task
    - asyncio.run
    - loop.connect_read_pipe
    - outgoing.cancel
    - _token_re.fullmatch
    - websocket.close
    - websockets.cli.print_over_input
    - incoming.cancel
    - websocket.send
    - parser.parse_args
    - sys.stdout.flush
    - websockets.asyncio.client.connect.__init__
    - group.add_argument
    - os.system
    - websockets.cli.main
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - asyncio.get_running_loop
    - <builtin>.isinstance
    - messages.get
    - websockets.cli.print_incoming_messages
    - websockets.cli.send_outgoing_messages
    - <builtin>.any
    - parser.print_usage
    - message.hex
    - transport.close
    - sys.exit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.trio.messages
    functionSourceFile: websockets.trio.messages
    functionUses: 0
    functionsReached:
    - codecs.getincrementaldecoder
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 0
    IfCount: 5
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7fee673de5e0>
    - <ast.Constant object at 0x7fee673dec10>
    - <ast.Lambda object at 0x7fee673de3a0>
    - <ast.Lambda object at 0x7fee673de730>
    argNames:
    - self
    - high
    - low
    - pause
    - resume
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 35
    functionName: websockets.trio.messages.Assembler.__init__
    functionSourceFile: websockets.trio.messages
    functionUses: 0
    functionsReached:
    - trio.open_memory_channel
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: trio.open_memory_channel
    functionSourceFile: trio
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.trio.messages.Assembler
    functionSourceFile: websockets.trio.messages
    functionUses: 0
    functionsReached:
    - typing.overload
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 5
    IfCount: 3
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee6720ad90>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 80
    functionName: websockets.trio.messages.Assembler.get
    functionSourceFile: websockets.trio.messages
    functionUses: 0
    functionsReached:
    - websockets.trio.messages.Assembler.<lambda2>
    - frames.append
    - websockets.trio.messages.Assembler.maybe_resume
    - data.decode
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ConcurrencyError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 260
    functionName: websockets.trio.messages.Assembler.maybe_resume
    functionSourceFile: websockets.trio.messages
    functionUses: 2
    functionsReached:
    - <builtin>.len
    - websockets.trio.messages.Assembler.<lambda2>
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 7
    IfCount: 4
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee670c3550>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 160
    functionName: websockets.trio.messages.Assembler.get_iter
    functionSourceFile: websockets.trio.messages
    functionUses: 0
    functionsReached:
    - websockets.trio.messages.Assembler.<lambda2>
    - <builtin>.bytes
    - websockets.trio.messages.Assembler.maybe_resume
    - decoder.decode
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ConcurrencyError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 234
    functionName: websockets.trio.messages.Assembler.put
    functionSourceFile: websockets.trio.messages
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - websockets.trio.messages.Assembler.<lambda1>
    - websockets.trio.messages.Assembler.maybe_pause
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 248
    functionName: websockets.trio.messages.Assembler.maybe_pause
    functionSourceFile: websockets.trio.messages
    functionUses: 1
    functionsReached:
    - <builtin>.len
    - websockets.trio.messages.Assembler.<lambda1>
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.trio.messages.Assembler.<lambda1>
    functionSourceFile: ''
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.trio.messages.Assembler.<lambda2>
    functionSourceFile: ''
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 272
    functionName: websockets.trio.messages.Assembler.close
    functionSourceFile: websockets.trio.messages
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.trio
    functionSourceFile: websockets.trio
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.trio.utils
    functionSourceFile: websockets.trio.utils
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - event
    - cancel_scope
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 16
    functionName: websockets.trio.utils.jockey
    functionSourceFile: websockets.trio.utils
    functionUses: 0
    functionsReached:
    - cancel_scope.cancel
    - event.wait
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: event.wait
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: cancel_scope.cancel
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - events
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 21
    functionName: websockets.trio.utils.race_events
    functionSourceFile: websockets.trio.utils
    functionUses: 0
    functionsReached:
    - trio.open_nursery
    - trio._util.raise_single_exception_from_group
    - nursery.start_soon
    linkageType: pythonLinkage
    raised:
    - ValueError
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: trio.open_nursery
    functionSourceFile: trio
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: nursery.start_soon
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: trio._util.raise_single_exception_from_group
    functionSourceFile: trio
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.legacy.client
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 8
    argDefaultValues: []
    argNames:
    - self
    - logger
    - origin
    - extensions
    - subprotocols
    - extra_headers
    - user_agent_header
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 77
    functionName: websockets.legacy.client.WebSocketClientProtocol.__init__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - logging.getLogger
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - path
    - headers
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 97
    functionName: websockets.legacy.client.WebSocketClientProtocol.write_http_request
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - asyncio.Protocol.write
    - <builtin>.str
    - typing.cast.write
    - request.encode
    - <builtin>.iter
    - websockets.datastructures.Headers.raw_items
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: request.encode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 117
    functionName: websockets.legacy.client.WebSocketClientProtocol.read_http_response
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - websockets.legacy.http.read_headers
    - stream.readline
    - <builtin>.range
    - <builtin>.tuple
    - <builtin>.super
    - _value_re.fullmatch
    - status_line.split
    - <builtin>.int
    - raw_value.strip
    - _token_re.fullmatch
    - websockets.legacy.http.read_line
    - websockets.legacy.http.read_response
    - line.endswith
    - arg.raw_items
    - headers.raw_items
    - websockets.datastructures.Headers.update
    - websockets.datastructures.Headers.__init__
    - raw_name.decode
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - raw_reason.decode
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - InvalidMessage
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - headers
    - available_extensions
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 144
    functionName: websockets.legacy.client.WebSocketClientProtocol.process_extensions
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - websockets.headers.parse_extension
    - headers.get_all
    - extension_factory.process_response_params
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - accepted_extensions.append
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - NegotiationError
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - headers
    - available_subprotocols
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 217
    functionName: websockets.legacy.client.WebSocketClientProtocol.process_subprotocol
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - _quoted_string_re.match
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _unquote_re.sub
    - items.append
    - _token_re.fullmatch
    - _token_re.match
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - parameters.append
    - websockets.headers.parse_quoted_string
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.parse_extension_item
    linkageType: pythonLinkage
    raised:
    - NegotiationError
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 6
    IfCount: 9
    argCount: 6
    argDefaultValues:
    - <ast.Constant object at 0x7fee673573d0>
    - <ast.Constant object at 0x7fee673578e0>
    - <ast.Constant object at 0x7fee67357f40>
    - <ast.Constant object at 0x7fee67357be0>
    argNames:
    - self
    - wsuri
    - origin
    - available_extensions
    - available_subprotocols
    - extra_headers
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 15
    functionLinenumber: 253
    functionName: websockets.legacy.client.WebSocketClientProtocol.handshake
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - asyncio.sleep
    - websockets.utils.accept_key
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - struct.pack
    - _protocol_re.match
    - <builtin>.range
    - <builtin>.tuple
    - <builtin>.bytes
    - websockets.headers.parse_extension
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - frames.Frame
    - headers.get_all
    - close.check
    - websockets.headers.parse_upgrade_protocol
    - new_frame.check
    - status_line.split
    - typing.cast.write
    - <builtin>.reversed
    - websockets.headers.build_authorization_basic
    - typing.cast.write_eof
    - pong_waiter.done
    - base64.b64encode
    - asyncio.Protocol.is_closing
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.framing.Frame.read
    - typing.cast.abort
    - arg.raw_items
    - _token_re.match
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.datastructures.Headers.raw_items
    - websockets.legacy.handshake.build_request
    - parameters.append
    - typing.NamedTuple.__init__
    - <builtin>.isinstance
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - stream.readline
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item
    - websockets.legacy.http.read_headers
    - websockets.frames.Close.parse
    - typing.cast.close
    - asyncio.Protocol.pings.items
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.handshake.check_response
    - request_headers.setdefault
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - match.end
    - accepted_extensions.append
    - hashlib.sha1
    - ping_ids.append
    - _unquote_re.sub
    - websockets.legacy.client.WebSocketClientProtocol.read_http_response
    - websockets.headers.build_host
    - value.lower
    - asyncio.Protocol.write_eof
    - websockets.legacy.http.read_response
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - data.encode
    - websockets.headers.parse_connection_option
    - asyncio.get_running_loop
    - websockets.headers.parse_quoted_string
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - <builtin>.any
    - time.perf_counter
    - raw_reason.decode
    - <builtin>.len
    - frame.data.decode
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - waiter.cancelled
    - struct.unpack
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - random.getrandbits
    - websockets.headers.parse_extension_item_param
    - _OWS_re.match
    - <builtin>.super
    - _value_re.fullmatch
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - _quoted_string_re.match
    - websockets.legacy.client.WebSocketClientProtocol.process_extensions
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - enum.IntEnum.__init__
    - raw_value.strip
    - _token_re.fullmatch
    - pong_waiter.set_result
    - frames.Opcode
    - websockets.legacy.http.read_line
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - websockets.legacy.client.WebSocketClientProtocol.process_subprotocol
    - websockets.headers.build_extension
    - ipaddress.ip_address
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - line.endswith
    - headers.raw_items
    - websockets.datastructures.Headers.update
    - asyncio.Protocol.messages.append
    - user_pass.encode
    - <builtin>.sum
    - websockets.datastructures.Headers.__init__
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - raw_value.decode
    - asyncio.Protocol.write
    - line.split
    - codecs.getincrementaldecoder
    - websockets.headers.parse_connection
    - secrets.token_bytes
    - websockets.utils.generate_key
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.headers.parse_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.utils.apply_mask
    - websockets.legacy.framing.prepare_ctrl
    - websockets.headers.build_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.error
    - extension_factory.process_response_params
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - websockets.headers.parse_upgrade
    - match.group
    - websockets.headers.build_extension_item
    - websockets.headers.parse_token
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.current_task
    - fragments.append
    - typing.cast.can_write_eof
    - items.append
    - <builtin>.int
    - websockets.asyncio.async_timeout.timeout
    - extension_factory.get_request_params
    - websockets.legacy.client.WebSocketClientProtocol.write_http_request
    - asyncio.Protocol.abort
    - extension.decode
    - request.encode
    - loop.time
    - decoder.decode
    - speedups.apply_mask
    - raw_name.decode
    - asyncio.Protocol.can_write_eof
    - <builtin>.str
    - websockets.legacy.framing.Frame.write
    - typing.cast
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - int.from_bytes
    - websockets.headers.parse_subprotocol_item
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - websockets.frames.Close.check
    - asyncio.timeout
    - <builtin>.iter
    - websockets.frames.Close.serialize
    - asyncio.Protocol.logger.debug
    linkageType: pythonLinkage
    raised:
    - RedirectHandshake
    - InvalidStatusCode
    - InvalidHeader
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: request_headers.setdefault
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.legacy.client.Connect
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - os.environ.get
    - <builtin>.float
    - <builtin>.int
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 21
    ICount: 6
    IfCount: 14
    argCount: 19
    argDefaultValues: []
    argNames:
    - self
    - uri
    - create_protocol
    - logger
    - compression
    - origin
    - extensions
    - subprotocols
    - extra_headers
    - user_agent_header
    - open_timeout
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_size
    - max_queue
    - read_limit
    - write_limit
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 419
    functionName: websockets.legacy.client.Connect.__init__
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - websockets.headers.validate_subprotocols
    - <builtin>.list
    - host.encode
    - logging.getLogger
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - kwargs.setdefault
    - urllib.parse.urlparse
    - _token_re.fullmatch
    - urllib.parse.quote
    - uri.encode
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - kwargs.pop
    - warnings.warn
    - websockets.uri.parse_uri
    - <builtin>.isinstance
    - typing.cast
    - functools.partial
    - <builtin>.any
    - asyncio.get_event_loop
    - kwargs.get
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - uri
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 546
    functionName: websockets.legacy.client.Connect.handle_redirect
    functionSourceFile: websockets.legacy.client
    functionUses: 2
    functionsReached:
    - urllib.parse.quote
    - websockets.uri.parse_uri
    - uri.encode
    - functools.partial
    - host.encode
    - urllib.parse.urljoin
    - <builtin>.dict
    - urllib.parse.urlparse
    linkageType: pythonLinkage
    raised:
    - SecurityError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 5
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 596
    functionName: websockets.legacy.client.Connect.__aiter__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - <builtin>.int
    - asyncio.sleep
    - <builtin>.min
    - traceback.format_exception_only
    - random.random
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 630
    functionName: websockets.legacy.client.Connect.__aenter__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 633
    functionName: websockets.legacy.client.Connect.__aexit__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 643
    functionName: websockets.legacy.client.Connect.__await__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - <builtin>.range
    - host.encode
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - protocol.fail_connection
    - asyncio.current_task
    - urllib.parse.urljoin
    - urllib.parse.urlparse
    - <builtin>.dict
    - websockets.legacy.client.Connect.__await_impl__
    - websockets.asyncio.async_timeout.timeout
    - urllib.parse.quote
    - websockets.asyncio.async_timeout.Timeout.__init__
    - uri.encode
    - loop.time
    - protocol.handshake
    - asyncio.get_running_loop
    - websockets.legacy.client.Connect.handle_redirect
    - websockets.uri.parse_uri
    - websockets.asyncio.async_timeout.Timeout.update
    - functools.partial
    - asyncio.timeout
    - protocol.wait_closed
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 6
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 647
    functionName: websockets.legacy.client.Connect.__await_impl__
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - <builtin>.range
    - host.encode
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - protocol.fail_connection
    - asyncio.current_task
    - urllib.parse.urljoin
    - urllib.parse.urlparse
    - <builtin>.dict
    - websockets.asyncio.async_timeout.timeout
    - urllib.parse.quote
    - websockets.asyncio.async_timeout.Timeout.__init__
    - uri.encode
    - loop.time
    - protocol.handshake
    - asyncio.get_running_loop
    - websockets.legacy.client.Connect.handle_redirect
    - websockets.uri.parse_uri
    - websockets.asyncio.async_timeout.Timeout.update
    - functools.partial
    - asyncio.timeout
    - protocol.wait_closed
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: protocol.handshake
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: protocol.fail_connection
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: protocol.wait_closed
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee675cd0d0>
    - <ast.Constant object at 0x7fee67376730>
    argNames:
    - path
    - uri
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 682
    functionName: websockets.legacy.client.unix_connect
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - websockets.headers.validate_subprotocols
    - <builtin>.list
    - host.encode
    - logging.getLogger
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - kwargs.setdefault
    - urllib.parse.urlparse
    - _token_re.fullmatch
    - urllib.parse.quote
    - websockets.legacy.client.Connect.__init__
    - uri.encode
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - kwargs.pop
    - warnings.warn
    - websockets.uri.parse_uri
    - <builtin>.isinstance
    - typing.cast
    - functools.partial
    - <builtin>.any
    - asyncio.get_event_loop
    - kwargs.get
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.sync.server
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 7
    argDefaultValues: []
    argNames:
    - self
    - socket
    - protocol
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_queue
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 64
    functionName: websockets.sync.server.ServerConnection.__init__
    functionSourceFile: websockets.sync.server
    functionUses: 1
    functionsReached:
    - <builtin>.super
    - threading.Event
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: threading.Event
    functionSourceFile: threading
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - status
    - text
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 88
    functionName: websockets.sync.server.ServerConnection.respond
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 12
    ICount: 2
    IfCount: 8
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7fee673de6d0>
    - <ast.Constant object at 0x7fee673de4c0>
    - <ast.Name object at 0x7fee673deac0>
    - <ast.Constant object at 0x7fee673deb80>
    argNames:
    - self
    - process_request
    - process_response
    - server_header
    - timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 109
    functionName: websockets.sync.server.ServerConnection.handshake
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - TimeoutError
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 9
    IfCount: 7
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - expected_state
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 911
    functionName: websockets.sync.connection.Connection.send_context
    functionSourceFile: websockets.sync.connection
    functionUses: 11
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.set_recv_exc
    - <builtin>.TimeoutError
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - event
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 191
    functionName: websockets.sync.server.ServerConnection.process_event
    functionSourceFile: websockets.sync.server
    functionUses: 1
    functionsReached:
    - <builtin>.super
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 205
    functionName: websockets.sync.server.ServerConnection.recv_events
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee670c3520>
    argNames:
    - self
    - socket
    - handler
    - logger
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 236
    functionName: websockets.sync.server.Server.__init__
    functionSourceFile: websockets.sync.server
    functionUses: 4
    functionsReached:
    - logging.getLogger
    - os.pipe
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.pipe
    functionSourceFile: os
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 5
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 250
    functionName: websockets.sync.server.Server.serve_forever
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - poller.register
    - poller.select
    - selectors.DefaultSelector
    - thread.start
    - threading.Thread
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: selectors.DefaultSelector
    functionSourceFile: selectors
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: poller.register
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: poller.select
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: threading.Thread
    functionSourceFile: threading
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: thread.start
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 288
    functionName: websockets.sync.server.Server.shutdown
    functionSourceFile: websockets.sync.server
    functionUses: 1
    functionsReached:
    - os.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.write
    functionSourceFile: os
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 297
    functionName: websockets.sync.server.Server.fileno
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 304
    functionName: websockets.sync.server.Server.__enter__
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 307
    functionName: websockets.sync.server.Server.__exit__
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - websockets.sync.server.Server.shutdown
    - os.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - name
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 316
    functionName: websockets.sync.server.__getattr__
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised:
    - AttributeError
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 4
    IfCount: 10
    argCount: 22
    argDefaultValues:
    - <ast.Constant object at 0x7fee67aabac0>
    - <ast.Constant object at 0x7fee67aab5e0>
    argNames:
    - handler
    - host
    - port
    - sock
    - ssl
    - origins
    - extensions
    - subprotocols
    - select_subprotocol
    - compression
    - process_request
    - process_response
    - server_header
    - open_timeout
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_size
    - max_queue
    - logger
    - create_connection
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 326
    functionName: websockets.sync.server.serve
    functionSourceFile: websockets.sync.server
    functionUses: 3
    functionsReached:
    - websockets.headers.validate_subprotocols
    - warnings.warn
    - socket.create_server
    - <builtin>.list
    - logging.getLogger
    - <builtin>.isinstance
    - websockets.sync.server.Server.__init__
    - kwargs.setdefault
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - ssl.wrap_socket
    - os.pipe
    - kwargs.pop
    - _token_re.fullmatch
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: socket.create_server
    functionSourceFile: socket
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ssl.wrap_socket
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 17
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - sock
    - addr
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 523
    functionName: websockets.sync.server.serve.conn_handler
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - connection.recv_events_thread.join
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.server.ServerConnection.__init__
    - sock.close
    - connection.handshake
    - <builtin>.super
    - sock.settimeout
    - threading.Event
    - connection.close
    - websockets.server.ServerProtocol.__init__
    - <builtin>.setattr
    - connection.logger.error
    - sock.setsockopt
    - websockets.sync.utils.Deadline.__init__
    - sock.do_handshake
    - connection.start_keepalive
    - <builtin>.isinstance
    - connection.close_socket
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - timeout
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 18
    functionName: websockets.sync.utils.Deadline.__init__
    functionSourceFile: websockets.sync.utils
    functionUses: 17
    functionsReached:
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sock.setsockopt
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - raise_if_elapsed
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 25
    functionName: websockets.sync.utils.Deadline.timeout
    functionSourceFile: websockets.sync.utils
    functionUses: 21
    functionsReached:
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - TimeoutError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sock.settimeout
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sock.do_handshake
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - protocol
    - subprotocols
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 554
    functionName: websockets.sync.server.serve.conn_handler.protocol_select_subprotocol
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sock.close
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.close_socket
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: connection.recv_events_thread.join
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee66ec0040>
    argNames:
    - handler
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 627
    functionName: websockets.sync.server.unix_serve
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - websockets.headers.validate_subprotocols
    - warnings.warn
    - socket.create_server
    - <builtin>.list
    - websockets.sync.server.serve
    - logging.getLogger
    - <builtin>.isinstance
    - websockets.sync.server.Server.__init__
    - kwargs.setdefault
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - ssl.wrap_socket
    - os.pipe
    - kwargs.pop
    - _token_re.fullmatch
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - credentials
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 650
    functionName: websockets.sync.server.is_credentials
    functionSourceFile: websockets.sync.server
    functionUses: 1
    functionsReached:
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee6716f370>
    - <ast.Constant object at 0x7fee6716f640>
    - <ast.Constant object at 0x7fee6716fc40>
    argNames:
    - realm
    - credentials
    - check_credentials
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 659
    functionName: websockets.sync.server.basic_auth
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - <builtin>.list
    - <builtin>.isinstance
    - typing.cast
    - websockets.sync.server.is_credentials
    - <builtin>.dict
    - <builtin>.all
    linkageType: pythonLinkage
    raised:
    - TypeError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - username
    - password
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 714
    functionName: websockets.sync.server.basic_auth.check_credentials
    functionSourceFile: websockets.sync.server
    functionUses: 1
    functionsReached:
    - hmac.compare_digest
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - connection
    - request
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 723
    functionName: websockets.sync.server.basic_auth.process_request
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - base64.b64decode
    - basic_credentials.encode
    - websockets.headers.parse_token68
    - websockets.headers.parse_authorization_basic
    - hmac.compare_digest
    - match.end
    - match.group
    - websockets.headers.parse_token
    - _token68_re.match
    - user_pass.split
    - _quote_re.sub
    - websockets.headers.build_quoted_string
    - _token_re.match
    - connection.respond
    - scheme.lower
    - websockets.sync.server.basic_auth.check_credentials
    - websockets.headers.parse_end
    - websockets.headers.peek_ahead
    - <builtin>.len
    - websockets.headers.build_www_authenticate_basic
    - _quotable_re.fullmatch
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.sync
    functionSourceFile: websockets.sync
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.sync.connection
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 6
    IfCount: 1
    argCount: 7
    argDefaultValues: []
    argNames:
    - self
    - socket
    - protocol
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_queue
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 47
    functionName: websockets.sync.connection.Connection.__init__
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.messages.Assembler.__init__
    - threading.Lock
    - <builtin>.isinstance
    - queue.SimpleQueue
    - logging.LoggerAdapter
    - threading.Thread
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: threading.Lock
    functionSourceFile: threading
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 0
    IfCount: 5
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7fee672e8bb0>
    - <ast.Constant object at 0x7fee672e8af0>
    - <ast.Lambda object at 0x7fee672e8f10>
    - <ast.Lambda object at 0x7fee672e8c10>
    argNames:
    - self
    - high
    - low
    - pause
    - resume
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 34
    functionName: websockets.sync.messages.Assembler.__init__
    functionSourceFile: websockets.sync.messages
    functionUses: 1
    functionsReached:
    - threading.Lock
    - queue.SimpleQueue
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 143
    functionName: websockets.sync.connection.Connection.local_address
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 156
    functionName: websockets.sync.connection.Connection.remote_address
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 169
    functionName: websockets.sync.connection.Connection.state
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 182
    functionName: websockets.sync.connection.Connection.subprotocol
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 192
    functionName: websockets.sync.connection.Connection.close_code
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 204
    functionName: websockets.sync.connection.Connection.close_reason
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 217
    functionName: websockets.sync.connection.Connection.__enter__
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 220
    functionName: websockets.sync.connection.Connection.__exit__
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.close
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Attribute object at 0x7fee675909a0>
    - <ast.Constant object at 0x7fee67590100>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 571
    functionName: websockets.sync.connection.Connection.close
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 231
    functionName: websockets.sync.connection.Connection.__iter__
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.reset_queue
    - websockets.sync.connection.Connection.send_data
    - data.decode
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.recv
    - queued.append
    - frames.append
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.maybe_resume
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.get
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.close_socket
    - pong_waiter.set
    - websockets.sync.messages.Assembler.get_next_frame
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee673577f0>
    - <ast.Constant object at 0x7fee67357ac0>
    argNames:
    - self
    - timeout
    - decode
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 270
    functionName: websockets.sync.connection.Connection.recv
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.reset_queue
    - websockets.sync.connection.Connection.send_data
    - data.decode
    - websockets.sync.connection.Connection.set_recv_exc
    - queued.append
    - frames.append
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.maybe_resume
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.get
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.close_socket
    - pong_waiter.set
    - websockets.sync.messages.Assembler.get_next_frame
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.sync.connection.Connection
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - contextlib.contextmanager
    - typing.overload
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 5
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee66ec0a00>
    - <ast.Constant object at 0x7fee66ec06d0>
    argNames:
    - self
    - timeout
    - decode
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 131
    functionName: websockets.sync.messages.Assembler.get
    functionSourceFile: websockets.sync.messages
    functionUses: 2
    functionsReached:
    - websockets.sync.messages.Assembler.reset_queue
    - websockets.sync.utils.Deadline.timeout
    - queued.append
    - frames.append
    - websockets.sync.messages.Assembler.maybe_resume
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.get_next_frame
    - data.decode
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 4
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee6738c640>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 349
    functionName: websockets.sync.connection.Connection.recv_streaming
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    - <builtin>.bytes
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.get_iter
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.get_next_frame
    - websockets.sync.messages.Assembler.maybe_resume
    - websockets.sync.messages.Assembler.close
    - decoder.decode
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 7
    IfCount: 4
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee67384bb0>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 212
    functionName: websockets.sync.messages.Assembler.get_iter
    functionSourceFile: websockets.sync.messages
    functionUses: 1
    functionsReached:
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.maybe_resume
    - <builtin>.bytes
    - websockets.sync.messages.Assembler.get_next_frame
    - decoder.decode
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    returnType: N/A
  - BBCount: 16
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 23
    ICount: 13
    IfCount: 16
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee673ee7c0>
    argNames:
    - self
    - message
    - text
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 411
    functionName: websockets.sync.connection.Connection.send
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.isinstance
    - websockets.sync.connection.Connection.send_context
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    - <builtin>.next
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - <builtin>.iter
    - websockets.sync.messages.Assembler.close
    - chunk.encode
    - websockets.sync.connection.Connection.set_recv_exc
    - message.encode
    - <builtin>.TimeoutError
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    - TypeError
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67bdf520>
    - <ast.Constant object at 0x7fee67bdfd60>
    argNames:
    - self
    - data
    - ack_on_close
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 607
    functionName: websockets.sync.connection.Connection.ping
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.TimeoutError
    - <builtin>.isinstance
    - threading.Event
    - struct.pack
    - websockets.sync.connection.Connection.send_data
    - random.getrandbits
    - pong_waiter.set
    - <builtin>.bytes
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.close
    - data.encode
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - ConcurrencyError
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: time.monotonic
    functionSourceFile: time
    functionUses: 25
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee67033520>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 666
    functionName: websockets.sync.connection.Connection.pong
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.TimeoutError
    - <builtin>.isinstance
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    - <builtin>.bytes
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - data.encode
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - event
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 693
    functionName: websockets.sync.connection.Connection.process_event
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - <builtin>.isinstance
    - websockets.sync.messages.Assembler.<lambda1>
    - websockets.sync.connection.Connection.acknowledge_pings
    - pong_waiter.set
    - <builtin>.bytes
    - websockets.sync.messages.Assembler.maybe_pause
    - ping_ids.append
    - websockets.sync.messages.Assembler.put
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 276
    functionName: websockets.sync.messages.Assembler.put
    functionSourceFile: websockets.sync.messages
    functionUses: 2
    functionsReached:
    - websockets.sync.messages.Assembler.maybe_pause
    - websockets.sync.messages.Assembler.<lambda1>
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 707
    functionName: websockets.sync.connection.Connection.acknowledge_pings
    functionSourceFile: websockets.sync.connection
    functionUses: 2
    functionsReached:
    - ping_ids.append
    - pong_waiter.set
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pong_waiter.set
    functionSourceFile: <builtin>
    functionUses: 17
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 740
    functionName: websockets.sync.connection.Connection.acknowledge_pending_pings
    functionSourceFile: websockets.sync.connection
    functionUses: 14
    functionsReached:
    - pong_waiter.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 7
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 753
    functionName: websockets.sync.connection.Connection.keepalive
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - struct.pack
    - random.getrandbits
    - <builtin>.bytes
    - <builtin>.TimeoutError
    - pong_waiter.wait
    - threading.Event
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.ping
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.close
    - data.encode
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.isinstance
    - pong_waiter.set
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pong_waiter.wait
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 792
    functionName: websockets.sync.connection.Connection.start_keepalive
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - threading.Thread
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 15
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 805
    functionName: websockets.sync.connection.Connection.recv_events
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.process_event
    - <builtin>.bytes
    - websockets.sync.messages.Assembler.maybe_pause
    - <builtin>.super
    - websockets.sync.messages.Assembler.<lambda1>
    - websockets.sync.connection.Connection.send_data
    - ping_ids.append
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.client.ClientConnection.process_event
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.close
    - websockets.sync.messages.Assembler.put
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.isinstance
    - pong_waiter.set
    - websockets.sync.connection.Connection.acknowledge_pings
    - websockets.sync.server.ServerConnection.process_event
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 1042
    functionName: websockets.sync.connection.Connection.set_recv_exc
    functionSourceFile: ''
    functionUses: 13
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1020
    functionName: websockets.sync.connection.Connection.send_data
    functionSourceFile: websockets.sync.connection
    functionUses: 13
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - event
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 104
    functionName: websockets.sync.client.ClientConnection.process_event
    functionSourceFile: websockets.sync.client
    functionUses: 1
    functionsReached:
    - <builtin>.super
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 6
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1053
    functionName: websockets.sync.connection.Connection.close_socket
    functionSourceFile: websockets.sync.connection
    functionUses: 13
    functionsReached:
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.messages.Assembler.close
    - websockets.sync.messages.Assembler.<lambda2>
    - pong_waiter.set
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: contextlib.contextmanager
    functionSourceFile: ''
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.TimeoutError
    functionSourceFile: <builtin>
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 327
    functionName: websockets.sync.messages.Assembler.close
    functionSourceFile: websockets.sync.messages
    functionUses: 14
    functionsReached:
    - websockets.sync.messages.Assembler.<lambda2>
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.sync.messages
    functionSourceFile: websockets.sync.messages
    functionUses: 0
    functionsReached:
    - codecs.getincrementaldecoder
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: queue.SimpleQueue
    functionSourceFile: queue
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 0
    IfCount: 3
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7fee6743dbb0>
    argNames:
    - self
    - timeout
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 72
    functionName: websockets.sync.messages.Assembler.get_next_frame
    functionSourceFile: websockets.sync.messages
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - EOFError
    - TimeoutError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frames
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 94
    functionName: websockets.sync.messages.Assembler.reset_queue
    functionSourceFile: websockets.sync.messages
    functionUses: 3
    functionsReached:
    - queued.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: queued.append
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.sync.messages.Assembler
    functionSourceFile: websockets.sync.messages
    functionUses: 0
    functionsReached:
    - typing.overload
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 314
    functionName: websockets.sync.messages.Assembler.maybe_resume
    functionSourceFile: websockets.sync.messages
    functionUses: 5
    functionsReached:
    - websockets.sync.messages.Assembler.<lambda2>
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 301
    functionName: websockets.sync.messages.Assembler.maybe_pause
    functionSourceFile: websockets.sync.messages
    functionUses: 3
    functionsReached:
    - websockets.sync.messages.Assembler.<lambda1>
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.sync.messages.Assembler.<lambda1>
    functionSourceFile: ''
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.sync.messages.Assembler.<lambda2>
    functionSourceFile: ''
    functionUses: 18
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.sync.utils
    functionSourceFile: websockets.sync.utils
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.sync.router
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 6
    argDefaultValues: []
    argNames:
    - url_map
    - args
    - server_name
    - ssl
    - create_router
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 40
    functionName: websockets.sync.router.route
    functionSourceFile: websockets.sync.router
    functionUses: 1
    functionsReached:
    - websockets.headers.validate_subprotocols
    - warnings.warn
    - socket.create_server
    - <builtin>.list
    - websockets.sync.server.serve
    - logging.getLogger
    - <builtin>.isinstance
    - _token_re.fullmatch
    - websockets.sync.server.Server.__init__
    - kwargs.setdefault
    - websockets.sync.router.Router.__init__
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - os.pipe
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - ssl.wrap_socket
    - kwargs.pop
    linkageType: pythonLinkage
    raised:
    - ImportError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee67376040>
    argNames:
    - url_map
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 142
    functionName: websockets.sync.router.unix_route
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached:
    - websockets.headers.validate_subprotocols
    - warnings.warn
    - socket.create_server
    - <builtin>.list
    - websockets.sync.server.serve
    - logging.getLogger
    - <builtin>.isinstance
    - _token_re.fullmatch
    - websockets.sync.server.Server.__init__
    - kwargs.setdefault
    - websockets.sync.router.route
    - websockets.sync.router.Router.__init__
    - <builtin>.any
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - os.pipe
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - ssl.wrap_socket
    - kwargs.pop
    linkageType: pythonLinkage
    raised:
    - ImportError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee67376610>
    - <ast.Constant object at 0x7fee67376cd0>
    argNames:
    - self
    - url_map
    - server_name
    - url_scheme
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 164
    functionName: websockets.sync.router.Router.__init__
    functionSourceFile: ''
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - connection
    - request
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 132
    functionName: websockets.sync.router.route.process_request
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached:
    - router.route_request
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - connection
    - request
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 176
    functionName: websockets.sync.router.Router.get_server_name
    functionSourceFile: websockets.sync.router
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - connection
    - url
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 182
    functionName: websockets.sync.router.Router.redirect
    functionSourceFile: websockets.sync.router
    functionUses: 1
    functionsReached:
    - connection.respond
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - connection
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 187
    functionName: websockets.sync.router.Router.not_found
    functionSourceFile: websockets.sync.router
    functionUses: 1
    functionsReached:
    - connection.respond
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - connection
    - request
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 190
    functionName: websockets.sync.router.Router.route_request
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached:
    - url_map_adapter.match
    - websockets.sync.router.Router.get_server_name
    - urllib.parse.urlparse
    - websockets.sync.router.Router.not_found
    - websockets.sync.router.Router.redirect
    - connection.respond
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - connection
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 211
    functionName: websockets.sync.router.Router.handler
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached:
    - connection.handler
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.sync.client
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - typing.TypeVar
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 7
    argDefaultValues: []
    argNames:
    - self
    - socket
    - protocol
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_queue
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 55
    functionName: websockets.sync.client.ClientConnection.__init__
    functionSourceFile: websockets.sync.client
    functionUses: 2
    functionsReached:
    - <builtin>.super
    - threading.Event
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 4
    IfCount: 4
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee67e2f2e0>
    - <ast.Name object at 0x7fee67e2f0d0>
    - <ast.Constant object at 0x7fee67e2fdf0>
    argNames:
    - self
    - additional_headers
    - user_agent_header
    - timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 76
    functionName: websockets.sync.client.ClientConnection.handshake
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.send_context
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - TimeoutError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 118
    functionName: websockets.sync.client.ClientConnection.recv_events
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 24
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 13
    EdgeCount: 35
    ICount: 15
    IfCount: 24
    argCount: 22
    argDefaultValues: []
    argNames:
    - uri
    - sock
    - ssl
    - server_hostname
    - origin
    - extensions
    - subprotocols
    - compression
    - additional_headers
    - user_agent_header
    - proxy
    - proxy_ssl
    - proxy_server_hostname
    - open_timeout
    - ping_interval
    - ping_timeout
    - close_timeout
    - max_size
    - max_queue
    - logger
    - create_connection
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 130
    functionName: websockets.sync.client.connect
    functionSourceFile: websockets.sync.client
    functionUses: 1
    functionsReached:
    - connection.recv_events_thread.join
    - raw_chunk_size.decode
    - typing.cast.setsockopt
    - <builtin>.tuple
    - websockets.proxy.get_proxy
    - <builtin>.range
    - host.encode
    - socket.create_connection
    - typing.cast.connect
    - sock.close
    - websockets.sync.client.ClientConnection.__init__
    - connection.handshake
    - websockets.streams.StreamReader.feed_eof
    - threading.Event
    - status_line.split
    - urllib.request.getproxies
    - websockets.headers.build_authorization_basic
    - base64.b64encode
    - uri.encode
    - arg.raw_items
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.client.ClientProtocol.__init__
    - warnings.warn
    - connection.start_keepalive
    - <builtin>.isinstance
    - time.monotonic
    - typing.cast.settimeout
    - typing.cast.close
    - python_socks.sync.Proxy.connect
    - websockets.streams.StreamReader.feed_data
    - typing.cast.sendall
    - proxies.get
    - kwargs.setdefault
    - python_socks.sync.Proxy
    - urllib.parse.urlparse
    - ssl.wrap_socket
    - websockets.http11.read_body
    - websockets.headers.build_host
    - websockets.proxy.prepare_connect_request
    - websockets.streams.StreamReader.read_to_eof
    - kwargs.pop
    - urllib.request.proxy_bypass
    - <builtin>.any
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    - <builtin>.list
    - websockets.streams.StreamReader.read_line
    - ssl.create_default_context
    - sock.sendall
    - websockets.sync.client.connect_http_proxy
    - <builtin>.super
    - chunk_size_line.split
    - _value_re.fullmatch
    - ssl.MemoryBIO
    - ssl_context.wrap_bio
    - sock.recv
    - <builtin>.next
    - raw_value.strip
    - _token_re.fullmatch
    - urllib.parse.quote
    - websockets.sync.client.SSLSSLSocket.__init__
    - proxy.encode
    - ipaddress.ip_address
    - <builtin>.bytearray
    - websockets.proxy.parse_proxy
    - line.endswith
    - websockets.datastructures.Headers.update
    - user_pass.encode
    - websockets.datastructures.Headers.__init__
    - websockets.http11.parse_headers
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - websockets.uri.parse_uri
    - secrets.token_bytes
    - websockets.utils.generate_key
    - websockets.http11.Response.parse
    - websockets.headers.validate_subprotocols
    - websockets.sync.utils.Deadline.timeout
    - headers.get
    - socket.socket
    - sock.settimeout
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - websockets.sync.client.read_connect_response
    - <builtin>.int
    - websockets.sync.client.SSLSSLSocket.run_io
    - typing.cast.recv
    - websockets.sync.utils.Deadline.__init__
    - websockets.streams.StreamReader.__init__
    - raw_name.decode
    - proxy.startswith
    - <builtin>.str
    - typing.cast
    - websockets.sync.client.connect_socks_proxy
    - connection.close_socket
    - websockets.datastructures.Headers.serialize
    linkageType: pythonLinkage
    raised:
    - ValueError
    - AssertionError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: socket.socket
    functionSourceFile: socket
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.settimeout
    functionSourceFile: typing
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.connect
    functionSourceFile: typing
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - proxy
    - ws_uri
    - deadline
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 454
    functionName: websockets.sync.client.connect_socks_proxy
    functionSourceFile: websockets.sync.client
    functionUses: 2
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - python_socks.sync.Proxy.connect
    - kwargs.setdefault
    - python_socks.sync.Proxy
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - ProxyError
    - ImportError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 6
    IfCount: 3
    argCount: 7
    argDefaultValues: []
    argNames:
    - proxy
    - ws_uri
    - deadline
    - user_agent_header
    - ssl
    - server_hostname
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 514
    functionName: websockets.sync.client.connect_http_proxy
    functionSourceFile: websockets.sync.client
    functionUses: 2
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - headers.get
    - raw_chunk_size.decode
    - websockets.streams.StreamReader.feed_data
    - <builtin>.range
    - <builtin>.tuple
    - socket.create_connection
    - websockets.streams.StreamReader.read_line
    - ssl.create_default_context
    - sock.close
    - sock.sendall
    - <builtin>.super
    - chunk_size_line.split
    - sock.settimeout
    - websockets.streams.StreamReader.feed_eof
    - _value_re.fullmatch
    - status_line.split
    - kwargs.setdefault
    - sock.recv
    - <builtin>.next
    - websockets.sync.client.read_connect_response
    - <builtin>.int
    - raw_value.strip
    - websockets.http11.read_body
    - ssl.wrap_socket
    - websockets.headers.build_authorization_basic
    - websockets.headers.build_host
    - _token_re.fullmatch
    - base64.b64encode
    - websockets.proxy.prepare_connect_request
    - ipaddress.ip_address
    - line.endswith
    - <builtin>.bytearray
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.streams.StreamReader.read_to_eof
    - user_pass.encode
    - websockets.streams.StreamReader.__init__
    - websockets.datastructures.Headers.__init__
    - websockets.http11.parse_headers
    - raw_name.decode
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - <builtin>.str
    - <builtin>.isinstance
    - websockets.http11.Response.parse
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    - websockets.datastructures.Headers.serialize
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: socket.create_connection
    functionSourceFile: socket
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.setsockopt
    functionSourceFile: typing
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7fee6716fa90>
    argNames:
    - self
    - sock
    - ssl_context
    - server_hostname
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 566
    functionName: websockets.sync.client.SSLSSLSocket.__init__
    functionSourceFile: websockets.sync.client
    functionUses: 2
    functionsReached:
    - websockets.sync.client.SSLSSLSocket.run_io
    - ssl.MemoryBIO
    - ssl_context.wrap_bio
    - typing.cast.recv
    - typing.cast.sendall
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7fee673dc190>
    - <ast.Constant object at 0x7fee673dc700>
    argNames:
    - path
    - uri
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 395
    functionName: websockets.sync.client.unix_connect
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - connection.recv_events_thread.join
    - raw_chunk_size.decode
    - typing.cast.setsockopt
    - <builtin>.tuple
    - websockets.proxy.get_proxy
    - <builtin>.range
    - host.encode
    - socket.create_connection
    - typing.cast.connect
    - sock.close
    - websockets.sync.client.ClientConnection.__init__
    - connection.handshake
    - websockets.streams.StreamReader.feed_eof
    - threading.Event
    - status_line.split
    - urllib.request.getproxies
    - websockets.headers.build_authorization_basic
    - base64.b64encode
    - uri.encode
    - arg.raw_items
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.client.ClientProtocol.__init__
    - warnings.warn
    - connection.start_keepalive
    - <builtin>.isinstance
    - time.monotonic
    - typing.cast.settimeout
    - typing.cast.close
    - python_socks.sync.Proxy.connect
    - websockets.streams.StreamReader.feed_data
    - typing.cast.sendall
    - proxies.get
    - kwargs.setdefault
    - python_socks.sync.Proxy
    - urllib.parse.urlparse
    - ssl.wrap_socket
    - websockets.http11.read_body
    - websockets.headers.build_host
    - websockets.proxy.prepare_connect_request
    - websockets.streams.StreamReader.read_to_eof
    - kwargs.pop
    - urllib.request.proxy_bypass
    - <builtin>.any
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    - kwargs.get
    - <builtin>.list
    - websockets.streams.StreamReader.read_line
    - ssl.create_default_context
    - sock.sendall
    - websockets.sync.client.connect_http_proxy
    - <builtin>.super
    - chunk_size_line.split
    - _value_re.fullmatch
    - ssl.MemoryBIO
    - ssl_context.wrap_bio
    - sock.recv
    - <builtin>.next
    - raw_value.strip
    - _token_re.fullmatch
    - urllib.parse.quote
    - websockets.sync.client.SSLSSLSocket.__init__
    - proxy.encode
    - ipaddress.ip_address
    - <builtin>.bytearray
    - websockets.proxy.parse_proxy
    - line.endswith
    - websockets.datastructures.Headers.update
    - user_pass.encode
    - websockets.datastructures.Headers.__init__
    - websockets.http11.parse_headers
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - websockets.uri.parse_uri
    - secrets.token_bytes
    - websockets.utils.generate_key
    - websockets.http11.Response.parse
    - websockets.headers.validate_subprotocols
    - websockets.sync.utils.Deadline.timeout
    - headers.get
    - socket.socket
    - sock.settimeout
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - websockets.sync.client.read_connect_response
    - websockets.sync.client.connect
    - <builtin>.int
    - websockets.sync.client.SSLSSLSocket.run_io
    - typing.cast.recv
    - websockets.sync.utils.Deadline.__init__
    - websockets.streams.StreamReader.__init__
    - raw_name.decode
    - proxy.startswith
    - <builtin>.str
    - typing.cast
    - websockets.sync.client.connect_socks_proxy
    - connection.close_socket
    - websockets.datastructures.Headers.serialize
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: python_socks.sync.Proxy
    functionSourceFile: python_socks
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: python_socks.sync.Proxy.connect
    functionSourceFile: python_socks
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - sock
    - deadline
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 480
    functionName: websockets.sync.client.read_connect_response
    functionSourceFile: websockets.sync.client
    functionUses: 3
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - headers.get
    - raw_chunk_size.decode
    - websockets.streams.StreamReader.feed_data
    - <builtin>.range
    - <builtin>.tuple
    - websockets.streams.StreamReader.read_line
    - <builtin>.super
    - chunk_size_line.split
    - sock.settimeout
    - websockets.streams.StreamReader.feed_eof
    - _value_re.fullmatch
    - status_line.split
    - sock.recv
    - <builtin>.next
    - <builtin>.int
    - raw_value.strip
    - websockets.http11.read_body
    - _token_re.fullmatch
    - line.endswith
    - <builtin>.bytearray
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.streams.StreamReader.read_to_eof
    - websockets.streams.StreamReader.__init__
    - websockets.datastructures.Headers.__init__
    - websockets.http11.parse_headers
    - raw_name.decode
    - websockets.streams.StreamReader.read_exact
    - raw_value.decode
    - line.split
    - <builtin>.isinstance
    - websockets.http11.Response.parse
    - raw_reason.decode
    - <builtin>.len
    - websockets.http11.parse_line
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - InvalidProxyMessage
    - TimeoutError
    - InvalidProxyStatus
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sock.recv
    functionSourceFile: <builtin>
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sock.sendall
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ssl.MemoryBIO
    functionSourceFile: ssl
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: ssl_context.wrap_bio
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - func
    - args
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 582
    functionName: websockets.sync.client.SSLSSLSocket.run_io
    functionSourceFile: websockets.sync.client
    functionUses: 6
    functionsReached:
    - typing.cast.recv
    - typing.cast.sendall
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.sendall
    functionSourceFile: typing
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.recv
    functionSourceFile: typing
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - buflen
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 612
    functionName: websockets.sync.client.SSLSSLSocket.recv
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - websockets.sync.client.SSLSSLSocket.run_io
    - typing.cast.recv
    - typing.cast.sendall
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 618
    functionName: websockets.sync.client.SSLSSLSocket.send
    functionSourceFile: websockets.sync.client
    functionUses: 1
    functionsReached:
    - websockets.sync.client.SSLSSLSocket.run_io
    - typing.cast.recv
    - typing.cast.sendall
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 621
    functionName: websockets.sync.client.SSLSSLSocket.sendall
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - websockets.sync.client.SSLSSLSocket.run_io
    - typing.cast.recv
    - typing.cast.sendall
    - <builtin>.memoryview
    - <builtin>.len
    - view.cast
    - websockets.sync.client.SSLSSLSocket.send
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: view.cast
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - name
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 632
    functionName: websockets.sync.client.SSLSSLSocket.__getattr__
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - <builtin>.getattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  Function list name: All functions
Function coverage:
  '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser':
  - 43
  - 44
  - 6
  '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser.main':
  - 40
  - 39
  '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser.test_one_input':
  - 13
  - 14
  - 15
  - 17
  - 23
  - 25
  websockets:
  - 140
  - 139
  - 84
  websockets.__main__:
  - 4
  - 5
  websockets.asyncio.async_timeout:
  - 12
  - 55
  websockets.asyncio.async_timeout.Timeout.__aenter__:
  - 172
  websockets.asyncio.async_timeout.Timeout.__aexit__:
  - 181
  websockets.asyncio.async_timeout.Timeout.__enter__:
  - 154
  - 159
  websockets.asyncio.async_timeout.Timeout.__exit__:
  - 168
  websockets.asyncio.async_timeout.Timeout.__init__:
  - 148
  - 151
  websockets.asyncio.async_timeout.Timeout._do_enter:
  - 257
  - 260
  websockets.asyncio.async_timeout.Timeout._do_exit:
  - 265
  - 271
  - 263
  websockets.asyncio.async_timeout.Timeout._on_timeout:
  - 276
  websockets.asyncio.async_timeout.Timeout._reject:
  - 203
  - 204
  websockets.asyncio.async_timeout.Timeout._reschedule:
  - 243
  - 246
  - 247
  - 248
  - 250
  - 251
  - 252
  - 254
  websockets.asyncio.async_timeout.Timeout.expired:
  - 186
  websockets.asyncio.async_timeout.Timeout.reject:
  - 194
  - 197
  - 199
  websockets.asyncio.async_timeout.Timeout.shift:
  - 208
  - 217
  - 215
  websockets.asyncio.async_timeout.Timeout.update:
  - 230
  - 232
  - 234
  - 235
  - 237
  - 238
  - 220
  websockets.asyncio.async_timeout._uncancel_task:
  - 58
  websockets.asyncio.async_timeout.final:
  - 22
  websockets.asyncio.async_timeout.timeout:
  - 73
  - 85
  - 86
  - 87
  - 90
  websockets.asyncio.async_timeout.timeout_at:
  - 108
  - 109
  - 94
  websockets.asyncio.client:
  - 39
  websockets.asyncio.client.ClientConnection:
  - 43
  websockets.asyncio.client.ClientConnection.__init__:
  - 86
  - 78
  websockets.asyncio.client.ClientConnection.handshake:
  - 97
  - 98
  - 99
  - 100
  - 101
  - 102
  - 103
  - 105
  - 114
  - 93
  websockets.asyncio.client.ClientConnection.process_event:
  - 129
  - 118
  - 123
  - 124
  - 126
  websockets.asyncio.client.HTTPProxyConnection.__init__:
  - 736
  - 737
  - 745
  - 744
  websockets.asyncio.client.HTTPProxyConnection.connection_lost:
  - 779
  - 780
  - 781
  websockets.asyncio.client.HTTPProxyConnection.connection_made:
  - 764
  - 766
  - 767
  websockets.asyncio.client.HTTPProxyConnection.data_received:
  - 771
  - 772
  websockets.asyncio.client.HTTPProxyConnection.eof_received:
  - 776
  - 775
  websockets.asyncio.client.HTTPProxyConnection.run_parser:
  - 749
  - 752
  - 753
  - 755
  - 757
  - 761
  websockets.asyncio.client.connect:
  - 179
  websockets.asyncio.client.connect.__aexit__:
  - 598
  websockets.asyncio.client.connect.__aiter__:
  - 614
  - 620
  - 622
  - 627
  - 628
  - 629
  - 630
  - 633
  - 635
  - 607
  websockets.asyncio.client.connect.__await__:
  - 538
  websockets.asyncio.client.connect.__await_impl__:
  - 544
  - 546
  - 551
  - 574
  - 560
  - 562
  - 564
  - 568
  - 542
  - 543
  websockets.asyncio.client.connect.__init__:
  - 332
  - 333
  - 335
  - 336
  - 337
  - 340
  - 341
  - 343
  websockets.asyncio.client.connect.__init__.protocol_factory:
  - 348
  - 357
  websockets.asyncio.client.connect.create_connection:
  - 384
  - 386
  - 388
  - 389
  - 394
  - 395
  - 396
  - 397
  - 400
  - 403
  - 404
  - 405
  - 406
  - 407
  - 409
  - 412
  - 415
  - 420
  - 423
  - 424
  - 426
  - 431
  - 432
  - 433
  - 438
  - 443
  - 450
  - 451
  - 452
  - 453
  - 454
  - 455
  - 456
  - 461
  - 466
  - 467
  - 468
  - 470
  - 377
  - 378
  - 379
  - 381
  websockets.asyncio.client.connect.create_connection.factory:
  - 392
  websockets.asyncio.client.connect.process_redirect:
  - 480
  - 481
  - 516
  - 517
  - 523
  - 524
  - 525
  - 495
  - 496
  - 497
  - 506
  - 527
  - 500
  - 501
  - 474
  - 507
  - 510
  websockets.asyncio.client.connect_http_proxy:
  - 801
  - 799
  - 790
  - 791
  websockets.asyncio.client.connect_http_proxy.<lambda1>:
  - 791
  websockets.asyncio.client.connect_socks_proxy:
  - 705
  - 706
  - 718
  websockets.asyncio.client.process_exception:
  - 167
  - 163
  - 133
  - 165
  websockets.asyncio.client.unix_connect:
  - 648
  - 665
  - 664
  - 669
  websockets.asyncio.compatibility:
  - 9
  websockets.asyncio.compatibility.aiter:
  - 22
  websockets.asyncio.compatibility.anext:
  - 25
  websockets.asyncio.connection.Connection:
  - 40
  websockets.asyncio.connection.Connection.__aexit__:
  - 225
  - 226
  - 228
  websockets.asyncio.connection.Connection.__aiter__:
  - 244
  - 231
  websockets.asyncio.connection.Connection.__init__:
  - 67
  - 131
  - 71
  - 136
  - 76
  - 110
  - 83
  - 85
  - 90
  - 92
  - 95
  websockets.asyncio.connection.Connection.abort_pings:
  - 800
  - 805
  - 807
  - 789
  - 798
  - 799
  websockets.asyncio.connection.Connection.acknowledge_pings:
  - 773
  - 774
  - 776
  - 777
  - 778
  - 785
  - 759
  - 764
  - 767
  websockets.asyncio.connection.Connection.close:
  - 641
  - 642
  - 643
  - 648
  - 624
  websockets.asyncio.connection.Connection.close_code:
  - 192
  websockets.asyncio.connection.Connection.close_reason:
  - 204
  websockets.asyncio.connection.Connection.connection_lost:
  - 1024
  - 1025
  - 1027
  - 1028
  - 1033
  - 1036
  - 1038
  - 1039
  - 1040
  - 1041
  - 1043
  - 1018
  - 1021
  websockets.asyncio.connection.Connection.connection_made:
  - 1012
  - 1006
  - 1007
  websockets.asyncio.connection.Connection.data_received:
  - 1089
  - 1091
  - 1092
  - 1093
  - 1095
  - 1098
  - 1099
  - 1100
  - 1102
  - 1104
  - 1082
  - 1085
  websockets.asyncio.connection.Connection.drain:
  - 1066
  - 1067
  - 1070
  - 1071
  - 1072
  - 1074
  - 1076
  websockets.asyncio.connection.Connection.eof_received:
  - 1122
  - 1124
  - 1108
  - 1111
  - 1115
  websockets.asyncio.connection.Connection.keepalive:
  - 832
  - 834
  - 840
  - 810
  - 842
  - 843
  - 844
  - 845
  - 821
  - 854
  - 828
  - 829
  - 830
  websockets.asyncio.connection.Connection.local_address:
  - 152
  - 143
  websockets.asyncio.connection.Connection.ping:
  - 708
  - 710
  - 713
  - 714
  - 697
  - 694
  - 695
  - 696
  - 665
  - 698
  - 701
  - 703
  websockets.asyncio.connection.Connection.pong:
  - 739
  - 740
  - 718
  - 732
  - 733
  - 734
  - 735
  websockets.asyncio.connection.Connection.process_event:
  - 745
  - 751
  - 752
  - 753
  - 755
  - 756
  websockets.asyncio.connection.Connection.recv:
  - 258
  - 323
  - 305
  - 316
  - 249
  - 315
  - 252
  - 255
  websockets.asyncio.connection.Connection.recv_streaming:
  - 327
  - 392
  - 393
  - 330
  - 333
  - 336
  - 400
  - 380
  - 381
  websockets.asyncio.connection.Connection.remote_address:
  - 156
  - 165
  websockets.asyncio.connection.Connection.resume_writing:
  - 1056
  - 1057
  - 1058
  websockets.asyncio.connection.Connection.send:
  - 512
  - 514
  - 516
  - 517
  - 518
  - 519
  - 521
  - 527
  - 528
  - 529
  - 530
  - 531
  - 532
  - 533
  - 408
  - 538
  - 539
  - 544
  - 545
  - 552
  - 557
  - 558
  - 560
  - 565
  - 568
  - 569
  - 570
  - 571
  - 573
  - 574
  - 576
  - 577
  - 578
  - 579
  - 581
  - 582
  - 589
  - 590
  - 591
  - 592
  - 593
  - 594
  - 599
  - 472
  - 600
  - 477
  - 478
  - 479
  - 480
  - 605
  - 482
  - 606
  - 484
  - 485
  - 486
  - 487
  - 613
  - 489
  - 493
  - 498
  - 499
  - 501
  - 506
  - 509
  - 510
  - 511
  websockets.asyncio.connection.Connection.send_context:
  - 900
  - 909
  - 915
  - 917
  - 920
  - 921
  - 923
  - 924
  - 936
  - 937
  - 938
  - 943
  - 945
  - 946
  - 951
  - 955
  - 959
  - 960
  - 962
  - 870
  - 892
  - 895
  websockets.asyncio.connection.Connection.send_data:
  - 966
  - 973
  - 974
  - 975
  - 978
  - 979
  - 980
  - 984
  - 989
  - 990
  - 991
  websockets.asyncio.connection.Connection.set_recv_exc:
  - 994
  - 998
  websockets.asyncio.connection.Connection.start_keepalive:
  - 857
  - 861
  - 862
  websockets.asyncio.connection.Connection.state:
  - 169
  websockets.asyncio.connection.Connection.subprotocol:
  - 182
  websockets.asyncio.connection.Connection.wait_closed:
  - 662
  - 655
  websockets.asyncio.connection.broadcast:
  - 1189
  - 1191
  - 1192
  - 1197
  - 1198
  - 1202
  - 1205
  - 1208
  - 1209
  - 1210
  - 1211
  - 1213
  - 1221
  - 1222
  - 1224
  - 1225
  - 1227
  - 1229
  - 1231
  - 1234
  - 1144
  websockets.asyncio.messages:
  - 16
  - 18
  websockets.asyncio.messages.Assembler:
  - 70
  websockets.asyncio.messages.Assembler.__init__:
  - 98
  - 100
  - 102
  - 103
  - 105
  - 92
  websockets.asyncio.messages.Assembler.close:
  - 316
  - 310
  - 303
  websockets.asyncio.messages.Assembler.get:
  - 128
  - 161
  - 168
  - 172
  - 174
  - 176
  - 149
  - 182
  - 119
  - 184
  - 183
  - 122
  - 125
  - 158
  - 159
  websockets.asyncio.messages.Assembler.get_iter:
  - 192
  - 256
  - 258
  - 195
  - 259
  - 198
  - 262
  - 234
  - 238
  - 240
  - 242
  - 243
  - 244
  - 247
  - 189
  - 222
  - 255
  websockets.asyncio.messages.Assembler.maybe_pause:
  - 281
  - 283
  - 289
  - 287
  websockets.asyncio.messages.Assembler.maybe_resume:
  - 298
  - 292
  - 294
  - 300
  websockets.asyncio.messages.Assembler.put:
  - 274
  - 267
  - 277
  - 278
  websockets.asyncio.messages.SimpleQueue:
  - 22
  websockets.asyncio.messages.SimpleQueue.__init__:
  - 32
  - 30
  websockets.asyncio.messages.SimpleQueue.__len__:
  - 35
  websockets.asyncio.messages.SimpleQueue.abort:
  - 64
  - 65
  - 66
  websockets.asyncio.messages.SimpleQueue.get:
  - 44
  - 45
  - 46
  - 49
  - 51
  - 53
  - 55
  websockets.asyncio.messages.SimpleQueue.put:
  - 40
  - 41
  - 38
  - 39
  websockets.asyncio.messages.SimpleQueue.reset:
  - 58
  - 61
  websockets.asyncio.router.Router:
  - 168
  websockets.asyncio.router.Router.__init__:
  - 179
  websockets.asyncio.router.Router.get_server_name:
  - 183
  websockets.asyncio.router.Router.handler:
  - 218
  - 219
  websockets.asyncio.router.Router.not_found:
  - 194
  websockets.asyncio.router.Router.redirect:
  - 189
  websockets.asyncio.router.Router.route_request:
  - 199
  - 200
  - 201
  - 205
  - 206
  - 211
  - 213
  websockets.asyncio.router.route:
  - 128
  - 129
  - 48
  - 114
  - 146
  - 117
  - 120
  websockets.asyncio.router.route.process_request:
  - 144
  - 139
  - 140
  - 142
  websockets.asyncio.router.unix_route:
  - 153
  - 164
  websockets.asyncio.server.Server:
  - 229
  websockets.asyncio.server.Server.__aexit__:
  - 573
  - 574
  websockets.asyncio.server.Server.__init__:
  - 290
  - 291
  - 284
  - 301
  websockets.asyncio.server.Server._close:
  - 481
  - 482
  - 452
  - 485
  - 455
  - 487
  - 460
  - 465
  - 468
  - 473
  - 474
  - 444
  - 477
  websockets.asyncio.server.Server.close:
  - 433
  - 434
  - 435
  - 414
  websockets.asyncio.server.Server.conn_handler:
  - 354
  - 356
  - 376
  - 389
  - 362
  - 365
  - 366
  - 369
  - 371
  - 375
  - 344
  - 378
  - 379
  - 381
  websockets.asyncio.server.Server.connections:
  - 305
  websockets.asyncio.server.Server.get_loop:
  - 515
  - 511
  websockets.asyncio.server.Server.is_serving:
  - 522
  - 518
  websockets.asyncio.server.Server.serve_forever:
  - 554
  - 539
  websockets.asyncio.server.Server.sockets:
  - 558
  websockets.asyncio.server.Server.start_connection_handler:
  - 406
  - 398
  websockets.asyncio.server.Server.start_serving:
  - 536
  - 525
  websockets.asyncio.server.Server.wait_closed:
  - 490
  - 508
  websockets.asyncio.server.Server.wrap:
  - 330
  - 331
  - 332
  - 333
  - 334
  - 335
  - 336
  - 340
  - 341
  - 316
  websockets.asyncio.server.ServerConnection:
  - 42
  websockets.asyncio.server.ServerConnection.__init__:
  - 88
  - 79
  websockets.asyncio.server.ServerConnection.connection_made:
  - 224
  - 225
  websockets.asyncio.server.ServerConnection.handshake:
  - 132
  - 136
  - 141
  - 142
  - 145
  - 147
  - 148
  - 152
  - 160
  - 161
  - 162
  - 164
  - 169
  - 172
  - 177
  - 179
  - 180
  - 184
  - 192
  - 193
  - 196
  - 206
  websockets.asyncio.server.ServerConnection.process_event:
  - 210
  - 215
  - 216
  - 218
  - 221
  websockets.asyncio.server.ServerConnection.respond:
  - 112
  - 94
  websockets.asyncio.server.basic_auth:
  - 930
  - 931
  - 932
  - 933
  - 934
  - 935
  - 940
  - 892
  - 927
  websockets.asyncio.server.basic_auth.check_credentials:
  - 947
  websockets.asyncio.server.basic_auth.process_request:
  - 965
  - 987
  - 969
  - 973
  - 975
  - 979
  - 982
  - 983
  - 986
  - 955
  - 991
  websockets.asyncio.server.is_credentials:
  - 884
  websockets.asyncio.server.serve:
  - 579
  websockets.asyncio.server.serve.__aexit__:
  - 837
  - 838
  websockets.asyncio.server.serve.__await__:
  - 844
  websockets.asyncio.server.serve.__await_impl__:
  - 848
  websockets.asyncio.server.serve.__init__:
  - 768
  - 769
  - 770
  - 771
  - 748
  - 749
  - 751
  - 752
  - 753
  - 819
  - 756
  - 820
  - 821
  - 759
  - 824
  websockets.asyncio.server.serve.__init__.factory:
  - 808
  - 786
  - 774
  - 799
  websockets.asyncio.server.serve.__init__.factory.protocol_select_subprotocol:
  - 796
  websockets.asyncio.server.unix_serve:
  - 875
  - 861
  websockets.auth:
  - 8
  - 13
  - 6
  websockets.cli.ReadLines.__init__:
  - 54
  - 55
  websockets.cli.ReadLines.connection_lost:
  - 77
  - 78
  websockets.cli.ReadLines.connection_made:
  - 65
  - 66
  websockets.cli.ReadLines.data_received:
  - 69
  - 70
  websockets.cli.ReadLines.eof_received:
  - 73
  websockets.cli.ReadLines.parse:
  - 59
  - 60
  - 61
  - 62
  websockets.cli.interactive_client:
  - 135
  - 136
  - 137
  - 106
  - 139
  - 108
  - 109
  - 141
  - 111
  - 142
  - 113
  - 114
  - 115
  - 116
  - 118
  - 119
  - 122
  websockets.cli.main:
  - 160
  - 161
  - 162
  - 166
  - 167
  - 176
  - 146
  - 151
  - 152
  - 153
  - 154
  - 156
  - 157
  websockets.cli.print_during_input:
  - 37
  - 21
  websockets.cli.print_incoming_messages:
  - 83
  - 84
  - 86
  websockets.cli.print_over_input:
  - 41
  - 49
  websockets.cli.send_outgoing_messages:
  - 99
  - 95
  websockets.client:
  - 384
  - 353
  - 354
  - 355
  - 356
  - 383
  websockets.client.ClientConnection.__init__:
  - 346
  - 350
  websockets.client.ClientProtocol:
  - 49
  websockets.client.ClientProtocol.__init__:
  - 84
  - 94
  websockets.client.ClientProtocol.connect:
  - 97
  - 129
  - 108
  - 109
  - 110
  - 111
  - 112
  - 118
  - 119
  - 121
  - 125
  - 126
  websockets.client.ClientProtocol.parse:
  - 301
  - 303
  - 309
  - 313
  - 314
  - 315
  - 316
  - 318
  - 320
  - 321
  - 322
  - 323
  - 324
  - 327
  - 330
  - 332
  - 333
  - 334
  - 335
  - 339
  - 341
  websockets.client.ClientProtocol.process_extensions:
  - 227
  - 234
  - 177
  - 209
  - 211
  - 212
  - 215
  - 216
  - 219
  - 220
  - 222
  websockets.client.ClientProtocol.process_response:
  - 161
  - 132
  - 170
  - 173
  - 174
  - 143
  - 148
  - 149
  - 151
  - 156
  - 157
  websockets.client.ClientProtocol.process_subprotocol:
  - 264
  - 266
  - 267
  - 270
  - 271
  - 273
  - 280
  - 250
  websockets.client.ClientProtocol.send_request:
  - 293
  - 294
  - 295
  - 296
  - 298
  - 286
  websockets.client.backoff:
  - 377
  - 380
  - 365
  - 374
  websockets.connection:
  - 8
  websockets.datastructures:
  - 177
  websockets.datastructures.Headers:
  - 28
  websockets.datastructures.Headers.__contains__:
  - 92
  websockets.datastructures.Headers.__delitem__:
  - 114
  - 115
  - 117
  websockets.datastructures.Headers.__eq__:
  - 120
  websockets.datastructures.Headers.__getitem__:
  - 104
  - 103
  websockets.datastructures.Headers.__init__:
  - 71
  websockets.datastructures.Headers.__iter__:
  - 95
  websockets.datastructures.Headers.__len__:
  - 98
  websockets.datastructures.Headers.__setitem__:
  - 110
  - 111
  websockets.datastructures.Headers.__str__:
  - 74
  websockets.datastructures.Headers.clear:
  - 125
  websockets.datastructures.Headers.copy:
  - 80
  - 81
  - 82
  websockets.datastructures.Headers.get_all:
  - 152
  - 145
  websockets.datastructures.Headers.raw_items:
  - 155
  - 159
  websockets.datastructures.Headers.serialize:
  - 87
  websockets.datastructures.Headers.update:
  - 137
  - 138
  - 140
  - 133
  websockets.datastructures.MultipleValuesError:
  - 15
  websockets.datastructures.MultipleValuesError.__str__:
  - 24
  - 22
  - 23
  websockets.datastructures.SupportsKeysAndGetItem:
  - 164
  websockets.datastructures.SupportsKeysAndGetItem.__getitem__:
  - 171
  websockets.datastructures.SupportsKeysAndGetItem.keys:
  - 169
  websockets.exceptions:
  - 464
  - 1
  - 465
  websockets.exceptions.ConcurrencyError:
  - 451
  websockets.exceptions.ConnectionClosed:
  - 81
  websockets.exceptions.ConnectionClosed.__str__:
  - 116
  - 113
  - 107
  - 108
  websockets.exceptions.ConnectionClosed.code:
  - 130
  - 125
  websockets.exceptions.ConnectionClosed.reason:
  - 136
  - 141
  websockets.exceptions.ConnectionClosedError:
  - 157
  websockets.exceptions.ConnectionClosedOK:
  - 147
  websockets.exceptions.DuplicateParameter:
  - 325
  websockets.exceptions.InvalidHandshake:
  - 195
  websockets.exceptions.InvalidHeader:
  - 261
  websockets.exceptions.InvalidHeader.__str__:
  - 273
  - 271
  websockets.exceptions.InvalidHeaderFormat:
  - 280
  websockets.exceptions.InvalidHeaderFormat.__init__:
  - 288
  websockets.exceptions.InvalidHeaderValue:
  - 292
  websockets.exceptions.InvalidMessage:
  - 239
  websockets.exceptions.InvalidOrigin:
  - 301
  websockets.exceptions.InvalidOrigin.__init__:
  - 307
  websockets.exceptions.InvalidParameterName:
  - 338
  websockets.exceptions.InvalidParameterValue:
  - 351
  websockets.exceptions.InvalidParameterValue.__str__:
  - 361
  - 363
  websockets.exceptions.InvalidProxy:
  - 181
  websockets.exceptions.InvalidProxyMessage:
  - 219
  websockets.exceptions.InvalidProxyStatus:
  - 226
  websockets.exceptions.InvalidState:
  - 436
  websockets.exceptions.InvalidStatus:
  - 246
  websockets.exceptions.InvalidURI:
  - 167
  websockets.exceptions.InvalidUpgrade:
  - 311
  websockets.exceptions.NegotiationError:
  - 318
  websockets.exceptions.PayloadTooBig:
  - 382
  websockets.exceptions.PayloadTooBig.__init__:
  - 402
  - 414
  - 399
  websockets.exceptions.PayloadTooBig.__str__:
  - 417
  - 421
  - 423
  websockets.exceptions.PayloadTooBig.set_current_size:
  - 430
  websockets.exceptions.ProtocolError:
  - 370
  websockets.exceptions.ProxyError:
  - 212
  websockets.exceptions.SecurityError:
  - 202
  websockets.exceptions.WebSocketException:
  - 74
  websockets.extensions.base.ClientExtensionFactory:
  - 59
  - 53
  websockets.extensions.base.ClientExtensionFactory.get_request_params:
  - 62
  websockets.extensions.base.ClientExtensionFactory.process_response_params:
  - 76
  websockets.extensions.base.Extension:
  - 19
  - 13
  websockets.extensions.base.Extension.decode:
  - 22
  websockets.extensions.base.Extension.encode:
  - 39
  websockets.extensions.base.ServerExtensionFactory:
  - 100
  - 94
  websockets.extensions.base.ServerExtensionFactory.process_request_params:
  - 107
  websockets.extensions.permessage_deflate:
  - 30
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory:
  - 322
  - 299
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__:
  - 336
  - 338
  - 344
  - 332
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.get_request_params:
  - 361
  - 357
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.process_response_params:
  - 417
  - 418
  - 452
  - 453
  - 390
  - 456
  - 460
  - 462
  - 431
  - 465
  - 435
  - 404
  - 373
  - 405
  - 437
  - 379
  websockets.extensions.permessage_deflate.PerMessageDeflate:
  - 34
  - 39
  websockets.extensions.permessage_deflate.PerMessageDeflate.__init__:
  - 68
  - 69
  - 71
  - 72
  - 49
  - 53
  websockets.extensions.permessage_deflate.PerMessageDeflate.decode:
  - 98
  - 133
  - 103
  - 136
  - 109
  - 110
  - 141
  - 112
  - 142
  - 145
  - 147
  - 120
  - 122
  - 155
  - 152
  - 126
  - 127
  websockets.extensions.permessage_deflate.PerMessageDeflate.encode:
  - 193
  - 196
  - 166
  - 199
  - 202
  - 171
  - 177
  - 179
  - 180
  - 187
  - 188
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory:
  - 499
  - 525
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__:
  - 544
  - 549
  - 536
  - 540
  - 542
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.process_request_params:
  - 611
  - 612
  - 567
  - 582
  - 631
  - 646
  - 647
  - 651
  - 652
  - 654
  - 656
  - 625
  - 660
  - 629
  - 598
  - 599
  - 666
  - 573
  websockets.extensions.permessage_deflate._build_parameters:
  - 224
  - 225
  - 226
  - 227
  - 228
  - 229
  - 230
  - 231
  - 232
  - 233
  - 219
  websockets.extensions.permessage_deflate._extract_parameters:
  - 256
  - 261
  - 262
  - 264
  - 269
  - 270
  - 240
  - 272
  - 273
  - 277
  - 278
  - 280
  - 282
  - 283
  - 252
  - 253
  - 254
  websockets.extensions.permessage_deflate.enable_client_permessage_deflate:
  - 484
  - 486
  - 490
  - 491
  - 477
  websockets.extensions.permessage_deflate.enable_server_permessage_deflate:
  - 679
  - 686
  - 688
  - 692
  - 693
  websockets.frames.Close:
  - 354
  websockets.frames.Close.__str__:
  - 367
  - 371
  - 373
  - 376
  - 379
  websockets.frames.Close.check:
  - 426
  - 419
  websockets.frames.Close.parse:
  - 386
  - 397
  - 399
  - 400
  - 401
  - 402
  - 403
  - 405
  - 406
  websockets.frames.Close.serialize:
  - 416
  - 411
  - 415
  websockets.frames.CloseCode:
  - 57
  websockets.frames.Frame:
  - 148
  - 124
  websockets.frames.Frame.__str__:
  - 192
  - 162
  - 163
  - 196
  - 167
  - 169
  - 170
  - 171
  - 172
  - 173
  - 180
  - 151
  - 184
  - 186
  - 187
  - 156
  - 159
  websockets.frames.Frame.check:
  - 335
  - 342
  - 345
  - 346
  - 348
  websockets.frames.Frame.parse:
  - 256
  - 259
  - 260
  - 261
  - 263
  - 265
  - 267
  - 268
  - 270
  - 209
  - 229
  - 230
  - 239
  - 243
  - 247
  - 248
  - 249
  - 250
  - 251
  - 252
  - 253
  - 255
  websockets.frames.Frame.serialize:
  - 280
  - 292
  - 294
  - 296
  - 297
  - 299
  - 312
  - 313
  - 314
  - 315
  - 316
  - 318
  - 320
  - 321
  - 322
  - 326
  - 327
  - 330
  - 332
  websockets.frames.Opcode:
  - 39
  websockets.headers:
  - 36
  - 103
  - 263
  - 146
  - 499
  - 85
  - 149
  - 122
  - 127
  websockets.headers.build_authorization_basic:
  - 576
  - 585
  websockets.headers.build_extension:
  - 418
  - 419
  - 412
  websockets.headers.build_extension_item:
  - 401
  - 395
  websockets.headers.build_host:
  - 62
  - 59
  - 53
  - 46
  websockets.headers.build_quoted_string:
  - 160
  - 153
  - 162
  - 159
  websockets.headers.build_subprotocol:
  - 465
  - 459
  websockets.headers.build_www_authenticate_basic:
  - 495
  - 486
  - 494
  websockets.headers.parse_OWS:
  - 89
  - 98
  - 100
  websockets.headers.parse_authorization_basic:
  - 544
  - 549
  - 554
  - 555
  - 558
  - 528
  - 565
  - 543
  websockets.headers.parse_connection:
  - 248
  - 260
  websockets.headers.parse_connection_option:
  - 234
  - 243
  - 244
  websockets.headers.parse_end:
  - 523
  - 519
  websockets.headers.parse_extension:
  - 386
  - 364
  websockets.headers.parse_extension_item:
  - 352
  - 353
  - 356
  - 357
  - 358
  - 359
  - 360
  - 341
  websockets.headers.parse_extension_item_param:
  - 320
  - 321
  - 323
  - 327
  - 332
  - 333
  - 305
  - 315
  - 316
  - 319
  websockets.headers.parse_list:
  - 226
  - 196
  - 197
  - 202
  - 171
  - 203
  - 204
  - 207
  - 211
  - 212
  - 217
  - 218
  - 221
  websockets.headers.parse_quoted_string:
  - 131
  - 140
  - 141
  - 143
  websockets.headers.parse_subprotocol:
  - 443
  - 452
  websockets.headers.parse_subprotocol_item:
  - 429
  - 438
  - 439
  websockets.headers.parse_token:
  - 107
  - 116
  - 117
  - 119
  websockets.headers.parse_token68:
  - 512
  - 513
  - 515
  - 503
  websockets.headers.parse_upgrade:
  - 299
  - 287
  websockets.headers.parse_upgrade_protocol:
  - 280
  - 281
  - 283
  - 271
  websockets.headers.peek_ahead:
  - 74
  - 82
  websockets.headers.validate_subprotocols:
  - 480
  - 481
  - 472
  - 476
  - 478
  websockets.http:
  - 8
  - 10
  - 14
  websockets.http11:
  - 33
  - 39
  - 43
  - 75
  - 47
  - 24
  - 27
  - 62
  websockets.http11.Request:
  - 80
  websockets.http11.Request.exception:
  - 96
  websockets.http11.Request.parse:
  - 161
  - 164
  - 167
  - 138
  - 107
  - 143
  - 146
  - 150
  - 152
  - 154
  - 158
  websockets.http11.Request.serialize:
  - 176
  - 177
  - 170
  websockets.http11.Response:
  - 183
  websockets.http11.Response.exception:
  - 203
  websockets.http11.Response.parse:
  - 259
  - 264
  - 269
  - 273
  - 275
  - 244
  - 277
  - 280
  - 249
  - 218
  - 283
  - 252
  - 253
  - 287
  websockets.http11.Response.serialize:
  - 296
  - 297
  - 290
  websockets.http11.d:
  - 51
  - 55
  websockets.http11.parse_headers:
  - 352
  - 354
  - 357
  - 361
  - 332
  - 364
  - 366
  - 367
  - 370
  - 371
  - 351
  websockets.http11.parse_line:
  - 320
  - 305
  - 324
  websockets.http11.read_body:
  - 391
  - 399
  - 400
  - 405
  - 406
  - 408
  - 409
  - 411
  - 412
  - 414
  - 418
  - 419
  - 422
  - 425
  - 427
  - 429
  - 430
  - 432
  - 436
  websockets.imports.import_name:
  - 29
  - 27
  - 12
  - 28
  websockets.imports.lazy_import:
  - 37
  - 56
  - 58
  - 61
  - 62
  - 63
  websockets.imports.lazy_import.__dir__:
  - 98
  websockets.imports.lazy_import.__getattr__:
  - 86
  - 91
  - 78
  websockets.legacy:
  - 6
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol:
  - 36
  - 30
  - 44
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol.__init__:
  - 56
  - 53
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol.check_credentials:
  - 75
  - 74
  - 59
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol.process_request:
  - 98
  - 102
  - 106
  - 109
  - 115
  - 84
  - 93
  websockets.legacy.auth.basic_auth_protocol_factory:
  - 160
  - 161
  - 162
  - 163
  - 164
  - 169
  - 124
  - 178
  - 183
  - 186
  - 156
  - 159
  websockets.legacy.auth.basic_auth_protocol_factory.check_credentials:
  - 176
  websockets.legacy.auth.is_credentials:
  - 26
  websockets.legacy.client.Connect:
  - 417
  - 334
  - 591
  - 592
  - 593
  - 594
  websockets.legacy.client.Connect.__aexit__:
  - 639
  websockets.legacy.client.Connect.__aiter__:
  - 610
  - 612
  - 614
  - 616
  - 617
  - 619
  - 622
  - 601
  - 605
  - 606
  - 607
  websockets.legacy.client.Connect.__await__:
  - 645
  websockets.legacy.client.Connect.__await_impl__:
  - 648
  - 649
  - 650
  - 652
  - 660
  - 661
  - 662
  - 665
  - 666
  websockets.legacy.client.Connect.__init__:
  - 514
  - 515
  - 516
  - 522
  - 527
  - 528
  - 530
  - 531
  - 532
  - 537
  - 538
  - 442
  - 443
  - 446
  - 448
  - 452
  - 453
  - 456
  - 458
  - 462
  - 465
  - 466
  - 467
  - 470
  - 472
  - 473
  - 474
  - 475
  - 481
  - 482
  - 483
  - 486
  - 487
  - 491
  - 492
  websockets.legacy.client.Connect.handle_redirect:
  - 576
  - 579
  - 550
  - 551
  - 554
  - 566
  - 569
  - 571
  - 573
  websockets.legacy.client.WebSocketClientProtocol:
  - 48
  websockets.legacy.client.WebSocketClientProtocol.__init__:
  - 88
  - 89
  - 90
  websockets.legacy.client.WebSocketClientProtocol.handshake:
  - 261
  - 277
  - 279
  - 281
  - 282
  - 286
  - 289
  - 291
  - 292
  - 294
  - 300
  - 301
  - 304
  - 305
  - 307
  - 308
  - 310
  - 312
  - 313
  - 314
  - 317
  - 320
  - 322
  - 326
  - 330
  websockets.legacy.client.WebSocketClientProtocol.process_extensions:
  - 194
  - 201
  - 176
  - 178
  - 179
  - 148
  - 182
  - 183
  - 186
  - 187
  - 189
  websockets.legacy.client.WebSocketClientProtocol.process_subprotocol:
  - 230
  - 232
  - 233
  - 236
  - 237
  - 240
  - 248
  - 220
  websockets.legacy.client.WebSocketClientProtocol.read_http_response:
  - 130
  - 134
  - 135
  - 136
  - 137
  - 118
  websockets.legacy.client.WebSocketClientProtocol.write_http_request:
  - 98
  - 105
  - 106
  - 107
  - 108
  - 113
  - 115
  websockets.legacy.client.unix_connect:
  - 703
  - 687
  websockets.legacy.exceptions.AbortHandshake:
  - 28
  websockets.legacy.exceptions.AbortHandshake.__init__:
  - 49
  - 50
  websockets.legacy.exceptions.AbortHandshake.__str__:
  - 55
  websockets.legacy.exceptions.InvalidStatusCode:
  - 14
  websockets.legacy.exceptions.RedirectHandshake:
  - 60
  websockets.legacy.framing.Frame.__str__:
  - 38
  websockets.legacy.framing.Frame.check:
  - 41
  websockets.legacy.framing.Frame.new_frame:
  - 28
  websockets.legacy.framing.Frame.read:
  - 52
  - 70
  - 71
  - 80
  - 84
  - 88
  - 89
  - 90
  - 91
  - 92
  - 93
  - 94
  - 96
  - 97
  - 100
  - 101
  - 102
  - 104
  - 106
  - 108
  - 109
  - 111
  - 113
  websockets.legacy.framing.Frame.write:
  - 129
  - 146
  websockets.legacy.framing.parse_close:
  - 204
  - 215
  websockets.legacy.framing.prepare_ctrl:
  - 174
  - 188
  - 189
  - 190
  - 191
  websockets.legacy.framing.prepare_data:
  - 166
  - 165
  - 150
  - 167
  websockets.legacy.framing.serialize_close:
  - 224
  - 220
  websockets.legacy.handshake.build_request:
  - 17
  - 29
  websockets.legacy.handshake.build_response:
  - 114
  - 102
  websockets.legacy.handshake.check_request:
  - 64
  - 65
  - 38
  - 71
  - 82
  - 85
  - 57
  - 58
  - 61
  - 95
  websockets.legacy.handshake.check_response:
  - 133
  - 134
  - 137
  - 140
  - 141
  - 147
  - 118
  - 157
  websockets.legacy.http:
  - 29
  - 42
  - 13
  - 14
  websockets.legacy.http.d:
  - 18
  - 22
  websockets.legacy.http.read_headers:
  - 160
  - 163
  - 167
  - 170
  - 172
  - 173
  - 176
  - 177
  - 147
  - 157
  - 158
  websockets.legacy.http.read_line:
  - 194
  - 187
  - 196
  - 199
  websockets.legacy.http.read_request:
  - 74
  - 46
  - 79
  - 83
  - 85
  - 87
  - 89
  websockets.legacy.http.read_response:
  - 129
  - 132
  - 135
  - 137
  - 139
  - 141
  - 120
  - 125
  - 95
  websockets.legacy.protocol.WebSocketCommonProtocol:
  - 55
  websockets.legacy.protocol.WebSocketCommonProtocol.__aiter__:
  - 482
  - 470
  websockets.legacy.protocol.WebSocketCommonProtocol.__init__:
  - 263
  - 266
  - 277
  - 177
  - 178
  - 181
  - 184
  - 186
  - 190
  - 191
  - 193
  - 204
  - 205
  - 208
  - 209
  - 210
  - 211
  - 214
  - 227
  - 238
  - 239
  - 243
  - 245
  - 247
  - 252
  websockets.legacy.protocol.WebSocketCommonProtocol._drain:
  - 320
  - 327
  - 328
  - 315
  - 316
  - 317
  - 319
  websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper:
  - 303
  - 305
  - 308
  - 309
  - 311
  websockets.legacy.protocol.WebSocketCommonProtocol.abort_pings:
  - 1443
  - 1428
  - 1435
  - 1437
  - 1438
  websockets.legacy.protocol.WebSocketCommonProtocol.close:
  - 770
  - 771
  - 776
  - 752
  - 753
  - 758
  - 728
  websockets.legacy.protocol.WebSocketCommonProtocol.close_code:
  - 435
  - 444
  - 446
  websockets.legacy.protocol.WebSocketCommonProtocol.close_connection:
  - 1315
  - 1284
  - 1285
  - 1288
  - 1289
  - 1291
  - 1292
  - 1295
  - 1264
  - 1296
  - 1297
  - 1303
  - 1309
  - 1307
  - 1277
  - 1310
  - 1279
  websockets.legacy.protocol.WebSocketCommonProtocol.close_reason:
  - 464
  - 453
  - 462
  websockets.legacy.protocol.WebSocketCommonProtocol.close_transport:
  - 1344
  - 1318
  - 1325
  - 1329
  - 1330
  - 1331
  - 1333
  - 1335
  - 1336
  - 1339
  - 1340
  - 1341
  websockets.legacy.protocol.WebSocketCommonProtocol.closed:
  - 424
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc:
  - 891
  - 885
  - 879
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_lost:
  - 1505
  - 1474
  - 1475
  - 1477
  - 1482
  - 1484
  - 1486
  - 1487
  - 1488
  - 1490
  - 1494
  - 1497
  - 1500
  - 1469
  - 1502
  - 1503
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_made:
  - 1448
  - 1466
  - 1461
  - 1462
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_open:
  - 331
  - 340
  - 341
  - 343
  - 345
  - 347
  websockets.legacy.protocol.WebSocketCommonProtocol.data_received:
  - 1522
  websockets.legacy.protocol.WebSocketCommonProtocol.drain:
  - 1176
  - 1170
  - 1173
  websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open:
  - 901
  - 908
  - 912
  - 913
  - 918
  - 921
  - 927
  websockets.legacy.protocol.WebSocketCommonProtocol.eof_received:
  - 1537
  - 1525
  websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection:
  - 1412
  - 1413
  - 1388
  - 1389
  - 1421
  - 1424
  - 1393
  - 1394
  - 1425
  - 1400
  - 1401
  - 1370
  websockets.legacy.protocol.WebSocketCommonProtocol.host:
  - 352
  websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping:
  - 1217
  - 1249
  - 1250
  - 1251
  - 1227
  - 1261
  - 1232
  - 1234
  - 1235
  - 1236
  - 1238
  - 1240
  - 1245
  - 1246
  - 1247
  websockets.legacy.protocol.WebSocketCommonProtocol.local_address:
  - 370
  - 386
  websockets.legacy.protocol.WebSocketCommonProtocol.open:
  - 410
  - 420
  websockets.legacy.protocol.WebSocketCommonProtocol.ping:
  - 834
  - 839
  - 841
  - 843
  - 846
  - 848
  - 792
  - 828
  - 830
  - 831
  websockets.legacy.protocol.WebSocketCommonProtocol.pong:
  - 873
  - 851
  - 869
  - 871
  websockets.legacy.protocol.WebSocketCommonProtocol.port:
  - 358
  websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame:
  - 1120
  - 1090
  - 1093
  - 1125
  - 1126
  - 1096
  - 1097
  - 1127
  - 1128
  - 1129
  - 1103
  - 1135
  - 1109
  - 1111
  - 1080
  - 1113
  - 1118
  - 1119
  websockets.legacy.protocol.WebSocketCommonProtocol.read_frame:
  - 1153
  - 1154
  - 1147
  - 1143
  websockets.legacy.protocol.WebSocketCommonProtocol.read_message:
  - 1027
  - 1028
  - 1030
  - 1035
  - 1036
  - 1037
  - 1038
  - 1053
  - 1067
  - 1070
  - 1071
  - 1073
  - 1075
  - 1077
  - 1005
  - 1013
  - 1016
  - 1019
  - 1021
  websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append:
  - 1057
  - 1063
  - 1064
  - 1065
  - 1042
  - 1048
  - 1049
  - 1050
  websockets.legacy.protocol.WebSocketCommonProtocol.recv:
  - 546
  - 547
  - 516
  - 487
  - 552
  - 555
  - 558
  - 559
  - 530
  - 531
  - 536
  websockets.legacy.protocol.WebSocketCommonProtocol.remote_address:
  - 406
  - 390
  websockets.legacy.protocol.WebSocketCommonProtocol.resume_writing:
  - 1516
  - 1518
  - 1519
  websockets.legacy.protocol.WebSocketCommonProtocol.secure:
  - 363
  websockets.legacy.protocol.WebSocketCommonProtocol.send:
  - 641
  - 643
  - 645
  - 648
  - 650
  - 653
  - 656
  - 657
  - 658
  - 660
  - 663
  - 668
  - 672
  - 677
  - 680
  - 682
  - 687
  - 689
  - 693
  - 695
  - 568
  - 698
  - 702
  - 703
  - 705
  - 708
  - 713
  - 717
  - 618
  - 623
  - 628
  - 629
  - 630
  - 634
  - 639
  websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data:
  - 993
  - 962
  - 963
  - 935
  - 999
  - 1002
  - 974
  - 943
  - 946
  - 950
  - 951
  - 952
  - 985
  - 954
  - 989
  - 959
  websockets.legacy.protocol.WebSocketCommonProtocol.wait_closed:
  - 779
  - 789
  websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost:
  - 1347
  - 1354
  - 1356
  - 1357
  - 1363
  websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame:
  - 1192
  - 1201
  - 1204
  - 1205
  - 1208
  - 1210
  - 1211
  - 1214
  websockets.legacy.protocol.WebSocketCommonProtocol.write_frame:
  - 1186
  - 1187
  - 1182
  websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync:
  - 1160
  - 1161
  - 1158
  - 1159
  websockets.legacy.protocol.broadcast:
  - 1551
  - 1596
  - 1599
  - 1600
  - 1604
  - 1606
  - 1607
  - 1610
  - 1611
  - 1612
  - 1613
  - 1615
  - 1621
  - 1623
  - 1624
  - 1626
  - 1628
  - 1630
  - 1633
  websockets.legacy.server.Serve:
  - 884
  websockets.legacy.server.Serve.__aexit__:
  - 1113
  - 1114
  websockets.legacy.server.Serve.__await__:
  - 1120
  websockets.legacy.server.Serve.__await_impl__:
  - 1123
  - 1124
  websockets.legacy.server.Serve.__init__:
  - 1025
  - 1027
  - 1031
  - 1034
  - 1035
  - 1036
  - 1039
  - 1041
  - 1043
  - 1045
  - 1046
  - 1047
  - 1050
  - 1051
  - 1055
  - 1056
  - 1061
  - 1086
  - 1087
  - 1090
  - 1094
  - 1011
  - 1012
  - 1015
  - 1017
  - 1021
  - 1022
  websockets.legacy.server.WebSocketServer:
  - 650
  websockets.legacy.server.WebSocketServer.__aexit__:
  - 880
  - 879
  websockets.legacy.server.WebSocketServer.__init__:
  - 666
  - 667
  - 671
  websockets.legacy.server.WebSocketServer._close:
  - 768
  - 772
  - 777
  - 778
  - 781
  - 750
  - 785
  - 786
  - 758
  - 791
  - 793
  - 761
  - 766
  websockets.legacy.server.WebSocketServer.close:
  - 744
  - 745
  - 746
  - 727
  websockets.legacy.server.WebSocketServer.get_loop:
  - 817
  - 821
  websockets.legacy.server.WebSocketServer.is_serving:
  - 824
  - 828
  websockets.legacy.server.WebSocketServer.register:
  - 713
  - 717
  websockets.legacy.server.WebSocketServer.serve_forever:
  - 860
  - 845
  websockets.legacy.server.WebSocketServer.sockets:
  - 864
  websockets.legacy.server.WebSocketServer.start_serving:
  - 842
  - 831
  websockets.legacy.server.WebSocketServer.unregister:
  - 720
  - 724
  websockets.legacy.server.WebSocketServer.wait_closed:
  - 796
  - 814
  websockets.legacy.server.WebSocketServer.wrap:
  - 704
  - 705
  - 710
  - 680
  - 694
  - 695
  - 696
  - 697
  - 698
  - 699
  - 700
  websockets.legacy.server.WebSocketServerProtocol:
  - 57
  websockets.legacy.server.WebSocketServerProtocol.__init__:
  - 115
  - 116
  - 117
  - 119
  - 120
  - 125
  websockets.legacy.server.WebSocketServerProtocol.connection_made:
  - 137
  - 146
  - 147
  - 141
  websockets.legacy.server.WebSocketServerProtocol.handler:
  - 262
  - 263
  - 150
  - 160
  - 161
  - 172
  - 174
  - 175
  - 176
  - 179
  - 180
  - 182
  - 183
  - 184
  - 187
  - 188
  - 195
  - 196
  - 197
  - 198
  - 205
  - 206
  - 209
  - 212
  - 219
  - 220
  - 221
  - 223
  - 224
  - 225
  - 227
  - 228
  - 231
  - 235
  - 237
  - 238
  - 239
  - 243
  - 247
  - 253
  websockets.legacy.server.WebSocketServerProtocol.handshake:
  - 640
  - 642
  - 644
  - 561
  - 581
  - 585
  - 586
  - 590
  - 594
  - 599
  - 606
  - 609
  - 611
  - 613
  - 617
  - 621
  - 623
  - 625
  - 628
  - 631
  - 632
  - 633
  - 634
  - 636
  - 637
  - 638
  websockets.legacy.server.WebSocketServerProtocol.process_extensions:
  - 448
  - 451
  - 452
  - 454
  - 459
  - 466
  - 467
  - 404
  - 476
  - 444
  - 477
  - 446
  - 447
  websockets.legacy.server.WebSocketServerProtocol.process_origin:
  - 389
  - 392
  - 393
  - 394
  - 395
  - 375
  websockets.legacy.server.WebSocketServerProtocol.process_request:
  - 325
  - 359
  - 360
  - 361
  - 365
  websockets.legacy.server.WebSocketServerProtocol.process_subprotocol:
  - 485
  - 501
  - 503
  - 504
  - 505
  - 508
  websockets.legacy.server.WebSocketServerProtocol.read_http_request:
  - 266
  - 278
  - 284
  - 285
  - 286
  - 287
  websockets.legacy.server.WebSocketServerProtocol.select_subprotocol:
  - 544
  - 546
  - 547
  - 549
  - 519
  - 551
  - 543
  websockets.legacy.server.WebSocketServerProtocol.select_subprotocol.<lambda1>:
  - 551
  websockets.legacy.server.WebSocketServerProtocol.write_http_response:
  - 320
  - 297
  - 305
  - 306
  - 307
  - 308
  - 309
  - 310
  - 315
  - 317
  - 319
  websockets.legacy.server.remove_path_argument:
  - 1169
  - 1178
  - 1172
  - 1188
  websockets.legacy.server.remove_path_argument._ws_handler:
  - 1181
  websockets.legacy.server.unix_serve:
  - 1144
  - 1159
  websockets.protocol:
  - 42
  - 68
  websockets.protocol.Protocol:
  - 72
  websockets.protocol.Protocol.__init__:
  - 98
  - 99
  - 102
  - 103
  - 105
  - 108
  - 142
  - 117
  - 153
  - 156
  - 157
  websockets.protocol.Protocol.close_code:
  - 193
  - 195
  - 183
  websockets.protocol.Protocol.close_exc:
  - 237
  - 221
  - 246
  websockets.protocol.Protocol.close_expected:
  - 553
  - 555
  - 518
  - 551
  websockets.protocol.Protocol.close_reason:
  - 202
  - 212
  - 214
  websockets.protocol.Protocol.data_to_send:
  - 498
  websockets.protocol.Protocol.discard:
  - 642
  - 656
  - 657
  - 658
  - 659
  - 662
  - 663
  - 666
  websockets.protocol.Protocol.events_received:
  - 482
  websockets.protocol.Protocol.fail:
  - 451
  - 452
  - 453
  - 454
  - 455
  - 461
  - 433
  - 469
  - 470
  - 476
  - 477
  websockets.protocol.Protocol.parse:
  - 563
  - 575
  - 576
  - 577
  - 586
  - 587
  - 592
  - 593
  - 596
  - 601
  - 608
  - 609
  - 611
  - 614
  - 618
  - 622
  - 626
  - 627
  - 631
  - 633
  - 638
  websockets.protocol.Protocol.receive_data:
  - 258
  - 270
  - 271
  websockets.protocol.Protocol.receive_eof:
  - 289
  - 274
  - 290
  - 287
  websockets.protocol.Protocol.recv_frame:
  - 672
  - 676
  - 677
  - 679
  - 680
  - 682
  - 683
  - 685
  - 688
  - 690
  - 693
  - 694
  - 696
  - 701
  - 704
  - 705
  - 709
  - 718
  - 723
  - 734
  - 735
  - 742
  - 743
  - 749
  websockets.protocol.Protocol.send_binary:
  - 362
  - 357
  - 342
  - 359
  websockets.protocol.Protocol.send_close:
  - 384
  - 385
  - 387
  - 390
  - 391
  - 393
  - 365
  - 382
  websockets.protocol.Protocol.send_continuation:
  - 313
  - 316
  - 311
  - 295
  websockets.protocol.Protocol.send_eof:
  - 768
  - 766
  - 767
  websockets.protocol.Protocol.send_frame:
  - 754
  - 755
  - 756
  - 757
  websockets.protocol.Protocol.send_ping:
  - 401
  - 412
  - 414
  websockets.protocol.Protocol.send_pong:
  - 417
  - 428
  - 430
  websockets.protocol.Protocol.send_text:
  - 336
  - 339
  - 334
  - 319
  websockets.protocol.Protocol.state:
  - 178
  - 177
  - 162
  websockets.protocol.Side:
  - 48
  - 46
  websockets.protocol.State:
  - 56
  - 58
  websockets.proxy.Proxy:
  - 19
  websockets.proxy.Proxy.user_info:
  - 42
  websockets.proxy.get_proxy:
  - 99
  - 103
  - 118
  - 119
  - 124
  - 125
  - 126
  - 127
  websockets.proxy.parse_proxy:
  - 65
  - 67
  - 69
  - 71
  - 49
  - 81
  - 85
  - 95
  - 89
  - 90
  - 92
  - 93
  - 62
  - 63
  websockets.proxy.prepare_connect_request:
  - 139
  - 140
  - 141
  - 142
  - 144
  - 146
  - 150
  websockets.server:
  - 579
  - 580
  websockets.server.ServerConnection.__init__:
  - 576
  - 572
  websockets.server.ServerProtocol:
  - 49
  websockets.server.ServerProtocol.__init__:
  - 104
  - 107
  - 110
  - 95
  websockets.server.ServerProtocol.accept:
  - 140
  - 144
  - 145
  - 146
  - 153
  - 154
  - 155
  - 169
  - 170
  - 171
  - 176
  - 185
  - 186
  - 194
  - 195
  - 199
  - 201
  - 203
  - 114
  websockets.server.ServerProtocol.parse:
  - 545
  - 547
  - 551
  - 555
  - 556
  - 557
  - 558
  - 560
  - 561
  - 562
  - 563
  - 565
  - 567
  websockets.server.ServerProtocol.process_extensions:
  - 356
  - 388
  - 358
  - 359
  - 360
  - 389
  - 363
  - 364
  - 366
  - 371
  - 378
  - 379
  - 316
  websockets.server.ServerProtocol.process_origin:
  - 295
  - 298
  - 299
  - 300
  - 301
  - 302
  - 303
  - 305
  - 278
  websockets.server.ServerProtocol.process_request:
  - 258
  - 260
  - 231
  - 232
  - 234
  - 268
  - 239
  - 240
  - 209
  - 271
  - 272
  - 273
  - 245
  - 255
  websockets.server.ServerProtocol.process_subprotocol:
  - 394
  - 408
  - 410
  - 411
  - 415
  websockets.server.ServerProtocol.reject:
  - 498
  - 499
  - 500
  - 502
  - 504
  - 508
  - 478
  websockets.server.ServerProtocol.select_subprotocol:
  - 421
  - 458
  - 462
  - 466
  - 467
  - 468
  websockets.server.ServerProtocol.send_response:
  - 518
  - 520
  - 521
  - 522
  - 523
  - 524
  - 526
  - 528
  - 531
  - 534
  - 540
  - 541
  - 542
  - 511
  websockets.streams.StreamReader:
  - 7
  websockets.streams.StreamReader.__init__:
  - 17
  websockets.streams.StreamReader.at_eof:
  - 113
  - 107
  - 100
  - 109
  websockets.streams.StreamReader.discard:
  - 147
  websockets.streams.StreamReader.feed_data:
  - 128
  - 116
  websockets.streams.StreamReader.feed_eof:
  - 133
  - 142
  websockets.streams.StreamReader.read_exact:
  - 68
  - 69
  - 70
  - 72
  - 55
  websockets.streams.StreamReader.read_line:
  - 39
  - 40
  - 42
  - 43
  - 45
  - 47
  - 48
  - 21
  websockets.streams.StreamReader.read_to_eof:
  - 94
  - 91
  - 92
  - 78
  websockets.sync.client:
  - 552
  - 553
  websockets.sync.client.ClientConnection:
  - 30
  websockets.sync.client.ClientConnection.__init__:
  - 66
  - 67
  websockets.sync.client.ClientConnection.handshake:
  - 101
  - 82
  - 86
  - 87
  - 88
  - 89
  - 90
  - 91
  - 92
  - 94
  websockets.sync.client.ClientConnection.process_event:
  - 105
  - 110
  - 111
  - 113
  - 116
  websockets.sync.client.ClientConnection.recv_events:
  - 124
  - 127
  - 119
  websockets.sync.client.SSLSSLSocket:
  - 557
  websockets.sync.client.SSLSSLSocket.__getattr__:
  - 633
  websockets.sync.client.SSLSSLSocket.__init__:
  - 580
  - 572
  - 573
  - 575
  websockets.sync.client.SSLSSLSocket.recv:
  - 614
  websockets.sync.client.SSLSSLSocket.run_io:
  - 587
  - 594
  - 595
  - 596
  - 599
  - 600
  - 601
  - 602
  - 604
  - 607
  websockets.sync.client.SSLSSLSocket.send:
  - 619
  websockets.sync.client.SSLSSLSocket.sendall:
  - 624
  - 625
  - 627
  websockets.sync.client.connect:
  - 384
  - 257
  - 258
  - 387
  - 260
  - 388
  - 263
  - 264
  - 391
  - 266
  - 267
  - 268
  - 271
  - 273
  - 275
  - 276
  - 281
  - 283
  - 289
  - 162
  - 290
  - 291
  - 292
  - 294
  - 295
  - 296
  - 297
  - 299
  - 305
  - 307
  - 309
  - 314
  - 326
  - 327
  - 331
  - 335
  - 336
  - 340
  - 341
  - 342
  - 343
  - 345
  - 346
  - 347
  - 349
  - 351
  - 352
  - 356
  - 377
  - 367
  - 242
  - 243
  - 244
  - 376
  - 249
  - 250
  - 381
  - 254
  - 255
  websockets.sync.client.connect_http_proxy:
  - 544
  - 546
  - 526
  - 527
  - 531
  - 532
  - 533
  - 534
  - 536
  - 537
  - 538
  - 542
  websockets.sync.client.connect_socks_proxy:
  - 469
  - 473
  - 460
  - 461
  websockets.sync.client.read_connect_response:
  - 481
  - 482
  - 490
  - 491
  - 492
  - 493
  - 495
  - 496
  - 498
  - 500
  - 511
  websockets.sync.client.unix_connect:
  - 400
  - 418
  - 422
  - 416
  websockets.sync.connection.Connection:
  - 33
  websockets.sync.connection.Connection.__exit__:
  - 226
  - 227
  - 229
  websockets.sync.connection.Connection.__init__:
  - 132
  - 69
  - 138
  - 76
  - 78
  - 110
  - 83
  - 85
  - 88
  - 91
  - 94
  - 63
  websockets.sync.connection.Connection.__iter__:
  - 232
  - 244
  websockets.sync.connection.Connection.acknowledge_pending_pings:
  - 741
  - 747
  - 748
  - 749
  - 751
  websockets.sync.connection.Connection.acknowledge_pings:
  - 737
  - 708
  - 714
  - 717
  - 723
  - 727
  - 728
  - 729
  - 730
  websockets.sync.connection.Connection.close:
  - 576
  - 594
  - 595
  - 596
  - 601
  websockets.sync.connection.Connection.close_code:
  - 193
  websockets.sync.connection.Connection.close_reason:
  - 205
  websockets.sync.connection.Connection.close_socket:
  - 1063
  - 1066
  - 1071
  - 1075
  - 1078
  - 1054
  websockets.sync.connection.Connection.keepalive:
  - 769
  - 772
  - 773
  - 775
  - 777
  - 778
  - 779
  - 781
  - 782
  - 783
  - 784
  - 754
  - 790
  - 764
  - 765
  websockets.sync.connection.Connection.local_address:
  - 144
  - 153
  websockets.sync.connection.Connection.ping:
  - 612
  - 645
  - 646
  - 647
  - 648
  - 649
  - 652
  - 654
  - 659
  - 661
  - 662
  - 663
  websockets.sync.connection.Connection.pong:
  - 681
  - 682
  - 683
  - 684
  - 688
  - 689
  - 667
  websockets.sync.connection.Connection.process_event:
  - 704
  - 705
  - 694
  - 700
  - 701
  - 702
  websockets.sync.connection.Connection.recv:
  - 258
  - 319
  - 263
  - 329
  - 330
  - 268
  - 271
  - 337
  - 252
  - 255
  websockets.sync.connection.Connection.recv_events:
  - 897
  - 899
  - 903
  - 905
  - 908
  - 806
  - 818
  - 819
  - 820
  - 822
  - 823
  - 832
  - 835
  - 841
  - 844
  - 848
  - 850
  - 851
  - 859
  - 862
  - 865
  - 866
  - 875
  - 877
  - 883
  - 886
  - 890
  websockets.sync.connection.Connection.recv_streaming:
  - 389
  - 408
  - 400
  - 401
  - 341
  - 344
  - 347
  - 350
  websockets.sync.connection.Connection.remote_address:
  - 157
  - 166
  websockets.sync.connection.Connection.send:
  - 514
  - 515
  - 517
  - 519
  - 520
  - 521
  - 527
  - 528
  - 530
  - 536
  - 537
  - 538
  - 540
  - 541
  - 542
  - 416
  - 544
  - 549
  - 550
  - 561
  - 562
  - 468
  - 469
  - 470
  - 474
  - 475
  - 477
  - 479
  - 480
  - 481
  - 485
  - 486
  - 488
  - 492
  - 497
  - 498
  - 500
  - 506
  - 507
  - 508
  websockets.sync.connection.Connection.send_context:
  - 916
  - 941
  - 944
  - 949
  - 958
  - 966
  - 969
  - 971
  - 972
  - 993
  - 994
  - 998
  - 999
  - 1001
  - 1005
  - 1010
  - 1014
  - 1015
  - 1017
  websockets.sync.connection.Connection.send_data:
  - 1030
  - 1031
  - 1032
  - 1033
  - 1034
  - 1035
  - 1038
  - 1021
  websockets.sync.connection.Connection.set_recv_exc:
  - 1049
  - 1050
  - 1043
  websockets.sync.connection.Connection.start_keepalive:
  - 793
  - 803
  - 797
  - 799
  websockets.sync.connection.Connection.state:
  - 170
  websockets.sync.connection.Connection.subprotocol:
  - 183
  websockets.sync.messages:
  - 16
  websockets.sync.messages.Assembler:
  - 20
  websockets.sync.messages.Assembler.__init__:
  - 43
  - 46
  - 52
  - 54
  - 56
  - 57
  - 59
  websockets.sync.messages.Assembler.close:
  - 328
  - 336
  - 341
  - 343
  - 345
  - 348
  websockets.sync.messages.Assembler.get:
  - 129
  - 132
  - 158
  - 166
  - 169
  - 171
  - 173
  - 180
  - 181
  - 186
  - 189
  - 191
  - 197
  - 198
  - 199
  - 117
  - 120
  - 123
  - 126
  websockets.sync.messages.Assembler.get_iter:
  - 256
  - 257
  - 260
  - 264
  - 266
  - 204
  - 268
  - 238
  - 207
  - 269
  - 272
  - 210
  - 213
  - 249
  - 251
  - 253
  - 255
  websockets.sync.messages.Assembler.get_next_frame:
  - 75
  - 77
  - 84
  - 85
  - 87
  - 90
  websockets.sync.messages.Assembler.maybe_pause:
  - 302
  - 304
  - 307
  - 310
  - 312
  websockets.sync.messages.Assembler.maybe_resume:
  - 320
  - 323
  - 325
  - 315
  - 317
  websockets.sync.messages.Assembler.put:
  - 288
  - 289
  - 285
  - 277
  websockets.sync.messages.Assembler.reset_queue:
  - 104
  - 107
  - 108
  - 110
  - 111
  websockets.sync.router.Router:
  - 162
  websockets.sync.router.Router.__init__:
  - 173
  websockets.sync.router.Router.get_server_name:
  - 177
  websockets.sync.router.Router.handler:
  - 212
  - 213
  websockets.sync.router.Router.not_found:
  - 188
  websockets.sync.router.Router.redirect:
  - 183
  websockets.sync.router.Router.route_request:
  - 193
  - 194
  - 195
  - 199
  - 200
  - 205
  - 207
  websockets.sync.router.route:
  - 140
  - 110
  - 48
  - 113
  - 116
  - 124
  - 125
  websockets.sync.router.route.process_request:
  - 136
  - 138
  - 135
  websockets.sync.router.unix_route:
  - 147
  - 158
  websockets.sync.server.Server:
  - 218
  websockets.sync.server.Server.__exit__:
  - 313
  websockets.sync.server.Server.__init__:
  - 248
  - 244
  - 245
  - 247
  websockets.sync.server.Server.fileno:
  - 298
  - 302
  websockets.sync.server.Server.serve_forever:
  - 263
  - 265
  - 271
  - 272
  - 275
  - 279
  - 251
  - 285
  - 286
  websockets.sync.server.Server.shutdown:
  - 289
  - 293
  - 294
  - 295
  websockets.sync.server.ServerConnection:
  - 39
  websockets.sync.server.ServerConnection.__init__:
  - 75
  - 76
  websockets.sync.server.ServerConnection.handshake:
  - 128
  - 162
  - 132
  - 164
  - 135
  - 136
  - 167
  - 139
  - 141
  - 175
  - 144
  - 178
  - 152
  - 153
  - 188
  - 157
  websockets.sync.server.ServerConnection.process_event:
  - 192
  - 197
  - 198
  - 200
  - 203
  websockets.sync.server.ServerConnection.recv_events:
  - 211
  - 214
  - 206
  websockets.sync.server.ServerConnection.respond:
  - 89
  - 107
  websockets.sync.server.__getattr__:
  - 317
  - 318
  websockets.sync.server.basic_auth:
  - 704
  - 705
  - 706
  - 707
  - 712
  - 664
  - 699
  - 702
  - 703
  websockets.sync.server.basic_auth.check_credentials:
  - 719
  websockets.sync.server.basic_auth.process_request:
  - 737
  - 741
  - 745
  - 747
  - 759
  - 751
  - 754
  - 755
  - 727
  websockets.sync.server.is_credentials:
  - 656
  websockets.sync.server.serve:
  - 513
  - 514
  - 475
  - 476
  - 477
  - 482
  - 483
  - 376
  - 485
  - 486
  - 487
  - 490
  - 496
  - 497
  - 624
  - 499
  - 500
  - 501
  - 503
  - 504
  - 506
  - 508
  websockets.sync.server.serve.conn_handler:
  - 527
  - 532
  - 533
  - 537
  - 538
  - 540
  - 541
  - 542
  - 552
  - 566
  - 578
  - 587
  - 592
  - 596
  - 599
  - 600
  - 603
  - 604
  - 605
  - 610
  - 611
  - 613
  - 614
  - 616
  - 620
  websockets.sync.server.serve.conn_handler.protocol_select_subprotocol:
  - 562
  websockets.sync.server.unix_serve:
  - 632
  - 647
  websockets.sync.utils.Deadline:
  - 10
  websockets.sync.utils.Deadline.__init__:
  - 20
  - 23
  websockets.sync.utils.Deadline.timeout:
  - 40
  - 26
  - 43
  - 42
  websockets.trio.messages:
  - 17
  websockets.trio.messages.Assembler:
  - 21
  websockets.trio.messages.Assembler.__init__:
  - 45
  - 51
  - 53
  - 55
  - 56
  - 58
  websockets.trio.messages.Assembler.close:
  - 280
  - 273
  - 286
  websockets.trio.messages.Assembler.get:
  - 132
  - 133
  - 102
  - 72
  - 137
  - 75
  - 139
  - 78
  - 112
  - 81
  - 145
  - 115
  - 146
  - 117
  - 147
  - 124
  websockets.trio.messages.Assembler.get_iter:
  - 224
  - 161
  - 226
  - 227
  - 197
  - 230
  - 203
  - 205
  - 207
  - 208
  - 209
  - 212
  - 152
  - 185
  - 155
  - 221
  - 158
  websockets.trio.messages.Assembler.maybe_pause:
  - 256
  - 249
  - 258
  - 251
  websockets.trio.messages.Assembler.maybe_resume:
  - 268
  - 261
  - 270
  - 263
  websockets.trio.messages.Assembler.put:
  - 242
  - 235
  - 245
  - 246
  websockets.trio.utils:
  - 6
  websockets.trio.utils.jockey:
  - 17
  - 18
  websockets.trio.utils.race_events:
  - 33
  - 34
  - 35
  - 38
  - 22
  - 29
  websockets.typing:
  - 22
  - 31
  - 34
  - 36
  - 38
  - 41
  - 45
  - 49
  - 50
  - 53
  - 54
  - 57
  - 58
  - 61
  - 67
  - 70
  - 71
  - 74
  - 75
  websockets.uri.WebSocketURI:
  - 18
  websockets.uri.WebSocketURI.resource_name:
  - 48
  - 44
  websockets.uri.WebSocketURI.user_info:
  - 54
  websockets.uri.parse_uri:
  - 99
  - 100
  - 101
  - 102
  - 104
  - 105
  - 74
  - 75
  - 107
  - 77
  - 79
  - 91
  - 61
  - 95
  websockets.utils.accept_key:
  - 35
  - 34
  - 27
  websockets.utils.apply_mask:
  - 39
  - 47
  - 50
  - 51
  - 52
  - 53
  websockets.utils.generate_key:
  - 18
  - 22
  - 23
  websockets.version:
  - 81
  - 26
  - 92
  websockets.version.get_commit:
  - 89
  - 86
  - 87
  websockets.version.get_version:
  - 34
  - 39
  - 71
  - 72
  - 74
  - 75
  - 44
  - 45
  - 47
  - 49
  - 54
Fuzzer filename: /src/inspector/light/source_files/src/websockets/fuzzing/fuzz_http11_response_parser.py
Inheritance:
  websockets.asyncio.async_timeout.Timeout: []
  websockets.asyncio.async_timeout._State: []
  websockets.asyncio.client.ClientConnection:
  - Connection
  websockets.asyncio.client.HTTPProxyConnection: []
  websockets.asyncio.client.connect: []
  websockets.asyncio.connection.Connection: []
  websockets.asyncio.messages.Assembler: []
  websockets.asyncio.messages.SimpleQueue: []
  websockets.asyncio.router.Router: []
  websockets.asyncio.server.Server: []
  websockets.asyncio.server.ServerConnection:
  - Connection
  websockets.asyncio.server.serve: []
  websockets.cli.ReadLines: []
  websockets.client.ClientConnection:
  - ClientProtocol
  websockets.client.ClientProtocol:
  - Protocol
  websockets.datastructures.Headers: []
  websockets.datastructures.MultipleValuesError:
  - LookupError
  websockets.datastructures.SupportsKeysAndGetItem:
  - Protocol
  websockets.exceptions.ConcurrencyError:
  - WebSocketException
  - RuntimeError
  websockets.exceptions.ConnectionClosed:
  - WebSocketException
  websockets.exceptions.ConnectionClosedError:
  - ConnectionClosed
  websockets.exceptions.ConnectionClosedOK:
  - ConnectionClosed
  websockets.exceptions.DuplicateParameter:
  - NegotiationError
  websockets.exceptions.InvalidHandshake:
  - WebSocketException
  websockets.exceptions.InvalidHeader:
  - InvalidHandshake
  websockets.exceptions.InvalidHeaderFormat:
  - InvalidHeader
  websockets.exceptions.InvalidHeaderValue:
  - InvalidHeader
  websockets.exceptions.InvalidMessage:
  - InvalidHandshake
  websockets.exceptions.InvalidOrigin:
  - InvalidHeader
  websockets.exceptions.InvalidParameterName:
  - NegotiationError
  websockets.exceptions.InvalidParameterValue:
  - NegotiationError
  websockets.exceptions.InvalidProxy:
  - WebSocketException
  websockets.exceptions.InvalidProxyMessage:
  - ProxyError
  websockets.exceptions.InvalidProxyStatus:
  - ProxyError
  websockets.exceptions.InvalidState:
  - WebSocketException
  - AssertionError
  websockets.exceptions.InvalidStatus:
  - InvalidHandshake
  websockets.exceptions.InvalidURI:
  - WebSocketException
  websockets.exceptions.InvalidUpgrade:
  - InvalidHeader
  websockets.exceptions.NegotiationError:
  - InvalidHandshake
  websockets.exceptions.PayloadTooBig:
  - WebSocketException
  websockets.exceptions.ProtocolError:
  - WebSocketException
  websockets.exceptions.ProxyError:
  - InvalidHandshake
  websockets.exceptions.SecurityError:
  - InvalidHandshake
  websockets.exceptions.WebSocketException:
  - Exception
  websockets.extensions.base.ClientExtensionFactory: []
  websockets.extensions.base.Extension: []
  websockets.extensions.base.ServerExtensionFactory: []
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory:
  - ClientExtensionFactory
  websockets.extensions.permessage_deflate.PerMessageDeflate:
  - Extension
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory:
  - ServerExtensionFactory
  websockets.frames.Close: []
  websockets.frames.CloseCode: []
  websockets.frames.Frame: []
  websockets.frames.Opcode: []
  websockets.http11.Request: []
  websockets.http11.Response: []
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol:
  - WebSocketServerProtocol
  websockets.legacy.client.Connect: []
  websockets.legacy.client.WebSocketClientProtocol:
  - WebSocketCommonProtocol
  websockets.legacy.exceptions.AbortHandshake:
  - InvalidHandshake
  websockets.legacy.exceptions.InvalidStatusCode:
  - InvalidHandshake
  websockets.legacy.exceptions.RedirectHandshake:
  - InvalidHandshake
  websockets.legacy.framing.Frame:
  - NamedTuple
  websockets.legacy.protocol.WebSocketCommonProtocol: []
  websockets.legacy.server.Serve: []
  websockets.legacy.server.WebSocketServer: []
  websockets.legacy.server.WebSocketServerProtocol:
  - WebSocketCommonProtocol
  websockets.protocol.Protocol: []
  websockets.protocol.Side: []
  websockets.protocol.State: []
  websockets.proxy.Proxy: []
  websockets.server.ServerConnection:
  - ServerProtocol
  websockets.server.ServerProtocol:
  - Protocol
  websockets.streams.StreamReader: []
  websockets.sync.client.ClientConnection:
  - Connection
  websockets.sync.client.SSLSSLSocket: []
  websockets.sync.connection.Connection: []
  websockets.sync.messages.Assembler: []
  websockets.sync.router.Router: []
  websockets.sync.server.Server: []
  websockets.sync.server.ServerConnection:
  - Connection
  websockets.sync.utils.Deadline: []
  websockets.trio.messages.Assembler: []
  websockets.uri.WebSocketURI: []
ep:
  func_name: test_one_input
  module: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_response_parser'
