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.uri.Proxy
- websockets.client.ClientProtocol
- websockets.client.ClientConnection
- websockets.extensions.permessage_deflate.PerMessageDeflate
- websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory
- websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory
- 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.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_request_parser'
    functionSourceFile: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_request_parser'
    functionUses: 0
    functionsReached:
    - atheris.instrument_imports
    - '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_request_parser.main'
    - 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_request_parser.test_one_input'
    functionSourceFile: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_request_parser'
    functionUses: 0
    functionsReached:
    - raw_name.decode
    - websockets.streams.StreamReader.feed_data
    - request_line.split
    - websockets.http11.parse_headers
    - websockets.http11.Request.parse
    - <builtin>.super
    - websockets.streams.StreamReader.__init__
    - raw_value.strip
    - <builtin>.int
    - websockets.datastructures.Headers.__init__
    - <builtin>.bytearray
    - _value_re.fullmatch
    - raw_path.decode
    - websockets.streams.StreamReader.feed_eof
    - <builtin>.next
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.http11.parse_line
    - <builtin>.len
    - line.split
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    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: 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: 3
    functionsReached:
    - raw_name.decode
    - request_line.split
    - websockets.http11.parse_headers
    - <builtin>.super
    - raw_value.strip
    - <builtin>.int
    - websockets.datastructures.Headers.__init__
    - _value_re.fullmatch
    - raw_path.decode
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.http11.parse_line
    - <builtin>.len
    - line.split
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    linkageType: pythonLinkage
    raised:
    - ValueError
    - EOFError
    - NotImplementedError
    returnType: N/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: 104
    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: 36
    functionName: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_request_parser.main'
    functionSourceFile: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_request_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 0x7f6f6526aa60>
    - <ast.Constant object at 0x7f6f6526a8b0>
    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: 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: 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: 66
    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: 63
    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 0x7f6f6527a250>
    - <ast.Name object at 0x7f6f6527acd0>
    argNames:
    - self
    - additional_headers
    - user_agent_header
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 87
    functionName: websockets.asyncio.client.ClientConnection.handshake
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - asyncio.wait
    - websockets.frames.Close.check
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 861
    functionName: websockets.asyncio.connection.Connection.send_context
    functionSourceFile: websockets.asyncio.connection
    functionUses: 12
    functionsReached:
    - asyncio.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.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: 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: 116
    functionName: websockets.asyncio.client.ClientConnection.process_event
    functionSourceFile: websockets.asyncio.client
    functionUses: 2
    functionsReached:
    - <builtin>.isinstance
    - asyncio.Protocol.response_rcvd.set_result
    - <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: 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: 131
    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: 299
    functionName: websockets.asyncio.client.connect.__init__
    functionSourceFile: websockets.asyncio.client
    functionUses: 4
    functionsReached:
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - <builtin>.list
    - websockets.headers.validate_subprotocols
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - <builtin>.any
    - logging.getLogger
    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:
    - ValueError
    - TypeError
    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: 472
    functionName: websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 9
    functionsReached:
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - <builtin>.list
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 345
    functionName: websockets.asyncio.client.connect.__init__.protocol_factory
    functionSourceFile: websockets.asyncio.client
    functionUses: 4
    functionsReached:
    - websockets.asyncio.client.ClientConnection.__init__
    - websockets.utils.generate_key
    - secrets.token_bytes
    - websockets.client.ClientProtocol.__init__
    - base64.b64encode
    - <builtin>.super
    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
    - secrets.token_bytes
    - <builtin>.super
    - websockets.utils.generate_key
    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: 375
    functionName: websockets.asyncio.client.connect.create_connection
    functionSourceFile: websockets.asyncio.client
    functionUses: 2
    functionsReached:
    - asyncio.get_running_loop
    - kwargs.setdefault
    - transport.set_protocol
    - python_socks.async_.asyncio.Proxy.connect
    - urllib.request.getproxies
    - websockets.uri.get_proxy
    - websockets.uri.parse_proxy
    - <builtin>.super
    - all_kwargs.items
    - proxy.encode
    - proxies.get
    - connection.connection_made
    - urllib.request.proxy_bypass
    - transport.close
    - websockets.asyncio.client.ClientConnection.__init__
    - loop.create_connection
    - websockets.utils.generate_key
    - host.encode
    - proxy_kwargs.get
    - kwargs.get
    - websockets.asyncio.client.connect.__init__.protocol_factory
    - proxy_kwargs.setdefault
    - python_socks.async_.asyncio.Proxy
    - urllib.parse.quote
    - kwargs.pop
    - urllib.parse.urlparse
    - websockets.asyncio.client.connect_socks_proxy
    - websockets.uri.parse_uri
    - key.startswith
    - websockets.asyncio.client.connect.create_connection.factory
    - secrets.token_bytes
    - websockets.asyncio.client.connect_http_proxy
    - loop.create_unix_connection
    - ssl.create_default_context
    - loop.start_tls
    - websockets.client.ClientProtocol.__init__
    - base64.b64encode
    - proxy.startswith
    - uri.encode
    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: 61
    functionName: websockets.uri.parse_uri
    functionSourceFile: websockets.uri
    functionUses: 11
    functionsReached:
    - host.encode
    - urllib.parse.urlparse
    - urllib.parse.quote
    - uri.encode
    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: 192
    functionName: websockets.uri.get_proxy
    functionSourceFile: websockets.uri
    functionUses: 5
    functionsReached:
    - urllib.request.getproxies
    - urllib.request.proxy_bypass
    - proxies.get
    - 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: 390
    functionName: websockets.asyncio.client.connect.create_connection.factory
    functionSourceFile: websockets.asyncio.client
    functionUses: 3
    functionsReached:
    - websockets.asyncio.client.ClientConnection.__init__
    - websockets.utils.generate_key
    - secrets.token_bytes
    - websockets.asyncio.client.connect.__init__.protocol_factory
    - websockets.client.ClientProtocol.__init__
    - base64.b64encode
    - <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: 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: 142
    functionName: websockets.uri.parse_proxy
    functionSourceFile: websockets.uri
    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:
    - ImportError
    - ProxyError
    returnType: N/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 0x7f6f651d4e50>
    argNames:
    - proxy
    - ws_uri
    - user_agent_header
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 803
    functionName: websockets.asyncio.client.connect_http_proxy
    functionSourceFile: websockets.asyncio.client
    functionUses: 3
    functionsReached:
    - asyncio.get_running_loop
    - transport.close
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 472
    functionName: websockets.asyncio.client.connect.process_redirect
    functionSourceFile: websockets.asyncio.client
    functionUses: 2
    functionsReached:
    - <builtin>.isinstance
    - <builtin>.ValueError
    - host.encode
    - urllib.parse.urljoin
    - urllib.parse.quote
    - urllib.parse.urlparse
    - websockets.uri.parse_uri
    - uri.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: 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: 535
    functionName: websockets.asyncio.client.connect.__await__
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - kwargs.setdefault
    - <builtin>.ValueError
    - transport.set_protocol
    - python_socks.async_.asyncio.Proxy.connect
    - urllib.request.getproxies
    - websockets.uri.get_proxy
    - websockets.asyncio.client.connect.process_redirect
    - loop.time
    - websockets.uri.parse_proxy
    - <builtin>.super
    - all_kwargs.items
    - proxy.encode
    - proxies.get
    - connection.connection_made
    - urllib.request.proxy_bypass
    - transport.close
    - asyncio.timeout
    - websockets.asyncio.client.connect.create_connection
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.client.ClientConnection.__init__
    - loop.create_connection
    - websockets.utils.generate_key
    - host.encode
    - proxy_kwargs.get
    - kwargs.get
    - urllib.parse.urljoin
    - websockets.asyncio.client.connect.__init__.protocol_factory
    - proxy_kwargs.setdefault
    - python_socks.async_.asyncio.Proxy
    - urllib.parse.quote
    - kwargs.pop
    - websockets.asyncio.async_timeout.Timeout.update
    - urllib.parse.urlparse
    - websockets.asyncio.client.connect.__await_impl__
    - websockets.uri.parse_uri
    - websockets.asyncio.client.connect_socks_proxy
    - <builtin>.isinstance
    - key.startswith
    - websockets.asyncio.client.connect.create_connection.factory
    - secrets.token_bytes
    - websockets.asyncio.client.connect_http_proxy
    - loop.create_unix_connection
    - ssl.create_default_context
    - loop.start_tls
    - websockets.asyncio.async_timeout.timeout
    - websockets.client.ClientProtocol.__init__
    - base64.b64encode
    - proxy.startswith
    - <builtin>.range
    - uri.encode
    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: 539
    functionName: websockets.asyncio.client.connect.__await_impl__
    functionSourceFile: websockets.asyncio.client
    functionUses: 1
    functionsReached:
    - asyncio.get_running_loop
    - kwargs.setdefault
    - <builtin>.ValueError
    - transport.set_protocol
    - python_socks.async_.asyncio.Proxy.connect
    - urllib.request.getproxies
    - websockets.uri.get_proxy
    - websockets.asyncio.client.connect.process_redirect
    - loop.time
    - websockets.uri.parse_proxy
    - <builtin>.super
    - all_kwargs.items
    - proxy.encode
    - proxies.get
    - connection.connection_made
    - urllib.request.proxy_bypass
    - transport.close
    - asyncio.timeout
    - websockets.asyncio.client.connect.create_connection
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.client.ClientConnection.__init__
    - loop.create_connection
    - websockets.utils.generate_key
    - host.encode
    - proxy_kwargs.get
    - kwargs.get
    - urllib.parse.urljoin
    - websockets.asyncio.client.connect.__init__.protocol_factory
    - proxy_kwargs.setdefault
    - python_socks.async_.asyncio.Proxy
    - urllib.parse.quote
    - kwargs.pop
    - websockets.asyncio.async_timeout.Timeout.update
    - urllib.parse.urlparse
    - websockets.uri.parse_uri
    - websockets.asyncio.client.connect_socks_proxy
    - <builtin>.isinstance
    - key.startswith
    - websockets.asyncio.client.connect.create_connection.factory
    - secrets.token_bytes
    - websockets.asyncio.client.connect_http_proxy
    - loop.create_unix_connection
    - ssl.create_default_context
    - loop.start_tls
    - websockets.asyncio.async_timeout.timeout
    - websockets.client.ClientProtocol.__init__
    - base64.b64encode
    - proxy.startswith
    - <builtin>.range
    - uri.encode
    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:
    - asyncio.get_running_loop
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - loop.time
    - websockets.asyncio.async_timeout.Timeout.update
    - 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.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: 588
    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: 591
    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: 601
    functionName: websockets.asyncio.client.connect.__aiter__
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - <builtin>.type
    - <builtin>.isinstance
    - asyncio.sleep
    - traceback.format_exception_only
    - random.random
    - <builtin>.next
    - websockets.client.backoff
    - websockets.asyncio.client.process_exception
    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 0x7f6f6530db80>
    - <ast.Name object at 0x7f6f6530ddc0>
    - <ast.Name object at 0x7f6f6530ddf0>
    - <ast.Name object at 0x7f6f6530d430>
    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: <builtin>.type
    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: 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 0x7f6f65259910>
    - <ast.Constant object at 0x7f6f65259d60>
    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.asyncio.client.connect.__init__
    - <builtin>.isinstance
    - _token_re.fullmatch
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - <builtin>.list
    - kwargs.get
    - websockets.headers.validate_subprotocols
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - <builtin>.any
    - logging.getLogger
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 0
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f6f65926940>
    argNames:
    - proxy
    - ws_uri
    - user_agent_header
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 725
    functionName: websockets.asyncio.client.prepare_connect_request
    functionSourceFile: websockets.asyncio.client
    functionUses: 1
    functionsReached:
    - websockets.headers.build_host
    - <builtin>.str
    - <builtin>.isinstance
    - ipaddress.ip_address
    - websockets.datastructures.Headers.serialize
    - user_pass.encode
    - websockets.headers.build_authorization_basic
    - base64.b64encode
    - arg.raw_items
    - websockets.datastructures.Headers.__init__
    - <builtin>.super
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    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: 8
    functionsReached:
    - ipaddress.ip_address
    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: 29
    functionsReached:
    - <builtin>.isinstance
    - arg.raw_items
    - <builtin>.super
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    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: 8
    functionsReached:
    - user_pass.encode
    - base64.b64encode
    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: 6
    functionsReached:
    - <builtin>.str
    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 0x7f6f65a5d220>
    argNames:
    - self
    - ws_uri
    - proxy
    - user_agent_header
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 745
    functionName: websockets.asyncio.client.HTTPProxyConnection.__init__
    functionSourceFile: websockets.asyncio.client
    functionUses: 1
    functionsReached:
    - asyncio.get_running_loop
    - raw_name.decode
    - status_line.split
    - headers.get
    - websockets.streams.StreamReader.read_exact
    - websockets.http11.parse_headers
    - <builtin>.super
    - websockets.streams.StreamReader.__init__
    - raw_value.strip
    - <builtin>.int
    - raw_reason.decode
    - websockets.datastructures.Headers.__init__
    - <builtin>.bytearray
    - chunk_size_line.split
    - websockets.http11.read_body
    - _value_re.fullmatch
    - loop.create_future
    - raw_chunk_size.decode
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.http11.Response.parse
    - websockets.http11.parse_line
    - <builtin>.len
    - websockets.streams.StreamReader.read_to_eof
    - line.split
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 1
    IfCount: 6
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7f6f6517c370>
    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: 8
    functionsReached:
    - raw_name.decode
    - status_line.split
    - headers.get
    - websockets.streams.StreamReader.read_exact
    - websockets.http11.parse_headers
    - <builtin>.super
    - raw_value.strip
    - <builtin>.int
    - raw_reason.decode
    - websockets.datastructures.Headers.__init__
    - chunk_size_line.split
    - websockets.http11.read_body
    - _value_re.fullmatch
    - raw_chunk_size.decode
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.http11.parse_line
    - <builtin>.len
    - websockets.streams.StreamReader.read_to_eof
    - line.split
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    linkageType: pythonLinkage
    raised:
    - ValueError
    - 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: 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: 766
    functionName: websockets.asyncio.client.HTTPProxyConnection.run_parser
    functionSourceFile: websockets.asyncio.client
    functionUses: 2
    functionsReached:
    - <builtin>.next
    - websockets.exceptions.InvalidProxyStatus.__init__
    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: 782
    functionName: websockets.asyncio.client.HTTPProxyConnection.connection_made
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - websockets.headers.build_host
    - <builtin>.str
    - <builtin>.isinstance
    - websockets.asyncio.client.prepare_connect_request
    - ipaddress.ip_address
    - websockets.datastructures.Headers.serialize
    - user_pass.encode
    - <builtin>.super
    - asyncio.Protocol.write
    - websockets.headers.build_authorization_basic
    - typing.cast.write
    - base64.b64encode
    - arg.raw_items
    - websockets.datastructures.Headers.__init__
    - typing.cast
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 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: 2
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 789
    functionName: websockets.asyncio.client.HTTPProxyConnection.data_received
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - websockets.asyncio.client.HTTPProxyConnection.run_parser
    - <builtin>.next
    - websockets.exceptions.InvalidProxyStatus.__init__
    - websockets.streams.StreamReader.feed_data
    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: 793
    functionName: websockets.asyncio.client.HTTPProxyConnection.eof_received
    functionSourceFile: websockets.asyncio.client
    functionUses: 0
    functionsReached:
    - websockets.asyncio.client.HTTPProxyConnection.run_parser
    - websockets.streams.StreamReader.feed_eof
    - 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: 797
    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:
    - asyncio.get_running_loop
    - raw_name.decode
    - status_line.split
    - websockets.asyncio.client.HTTPProxyConnection.__init__
    - headers.get
    - websockets.streams.StreamReader.read_exact
    - websockets.http11.parse_headers
    - <builtin>.super
    - websockets.streams.StreamReader.__init__
    - raw_value.strip
    - <builtin>.int
    - raw_reason.decode
    - websockets.datastructures.Headers.__init__
    - <builtin>.bytearray
    - chunk_size_line.split
    - websockets.http11.read_body
    - _value_re.fullmatch
    - loop.create_future
    - raw_chunk_size.decode
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.http11.Response.parse
    - websockets.http11.parse_line
    - <builtin>.len
    - websockets.streams.StreamReader.read_to_eof
    - line.split
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 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: 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: 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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - read_line
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 301
    functionName: websockets.http11.parse_line
    functionSourceFile: websockets.http11
    functionUses: 14
    functionsReached:
    - <builtin>.len
    - websockets.streams.StreamReader.read_line
    - line.endswith
    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: 9
    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: 9
    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: 328
    functionName: websockets.http11.parse_headers
    functionSourceFile: websockets.http11
    functionUses: 13
    functionsReached:
    - raw_value.decode
    - _token_re.fullmatch
    - raw_name.decode
    - <builtin>.isinstance
    - raw_value.strip
    - line.endswith
    - websockets.http11.parse_line
    - websockets.streams.StreamReader.read_line
    - <builtin>.len
    - _value_re.fullmatch
    - line.split
    - arg.raw_items
    - <builtin>.range
    - websockets.datastructures.Headers.__init__
    - <builtin>.super
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    linkageType: pythonLinkage
    raised:
    - ValueError
    - EOFError
    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: 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: _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: 12
    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: 379
    functionName: websockets.http11.read_body
    functionSourceFile: websockets.http11
    functionUses: 9
    functionsReached:
    - raw_name.decode
    - headers.get
    - websockets.streams.StreamReader.read_exact
    - websockets.http11.parse_headers
    - <builtin>.super
    - raw_value.strip
    - <builtin>.int
    - websockets.datastructures.Headers.__init__
    - chunk_size_line.split
    - _value_re.fullmatch
    - raw_chunk_size.decode
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.http11.parse_line
    - <builtin>.len
    - websockets.streams.StreamReader.read_to_eof
    - line.split
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    linkageType: pythonLinkage
    raised:
    - ValueError
    - SecurityError
    - NotImplementedError
    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: 288
    functionName: websockets.http11.Response.serialize
    functionSourceFile: websockets.http11
    functionUses: 0
    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: 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: _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: 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: 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: chunk_size_line.split
    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: <builtin>.len
    functionSourceFile: <builtin>
    functionUses: 104
    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: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    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: 12
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    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: 10
    functionsReached:
    - <builtin>.len
    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: 2
    functionLinenumber: -1
    functionName: websockets.version
    functionSourceFile: websockets.version
    functionUses: 0
    functionsReached:
    - importlib.metadata.version
    - remainder.replace
    - websockets.version.get_commit
    - re.fullmatch
    - subprocess.run
    - version_file.locate
    - pathlib.Path
    - importlib.metadata.files
    - websockets.version.get_version
    - 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:
    - importlib.metadata.version
    - remainder.replace
    - re.fullmatch
    - subprocess.run
    - version_file.locate
    - pathlib.Path
    - importlib.metadata.files
    - 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: 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>.super
    - <builtin>.repr
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 30
    functionsReached:
    - arg.raw_items
    - <builtin>.isinstance
    - <builtin>.super
    - <builtin>.tuple
    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: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.str
    functionSourceFile: <builtin>
    functionUses: 28
    functionsReached: []
    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:
    - <builtin>.isinstance
    - key.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: 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:
    - <builtin>.len
    - key.lower
    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:
    - k.lower
    - key.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: 31
    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: 31
    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: 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: 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: 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:
    - websockets.asyncio.async_timeout.Timeout.update
    - 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: 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:
    - asyncio.get_running_loop
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    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:
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.current_task
    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._reschedule
    - asyncio.current_task
    - warnings.warn
    - websockets.asyncio.async_timeout.Timeout._do_enter
    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:
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.current_task
    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:
    - websockets.asyncio.async_timeout.Timeout._reject
    - websockets.asyncio.async_timeout.Timeout._do_exit
    - websockets.asyncio.async_timeout._uncancel_task
    - task.uncancel
    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._reschedule
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout._do_enter
    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:
    - websockets.asyncio.async_timeout.Timeout._reject
    - websockets.asyncio.async_timeout.Timeout._do_exit
    - 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: 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:
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.current_task
    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: 11
    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.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: 44
    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: 54
    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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 135
    functionName: websockets.uri.Proxy.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: 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: 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 0x7f6f64fabeb0>
    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:
    - frames.Frame
    - <builtin>.bytes
    - zlib.decompressobj
    - <builtin>.len
    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: <builtin>.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: 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: 164
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate.encode
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - frames.Frame
    - <builtin>.memoryview
    - zlib.compressobj
    - <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: <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: 211
    functionName: websockets.extensions.permessage_deflate._build_parameters
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 2
    functionsReached:
    - <builtin>.str
    - params.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: 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: 235
    functionName: websockets.extensions.permessage_deflate._extract_parameters
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 2
    functionsReached:
    - <builtin>.int
    linkageType: pythonLinkage
    raised:
    - DuplicateParameter
    - InvalidParameterValue
    - 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 0x7f6f65262cd0>
    - <ast.Constant object at 0x7f6f652626d0>
    - <ast.Constant object at 0x7f6f65262c10>
    - <ast.Constant object at 0x7f6f65262640>
    - <ast.Constant object at 0x7f6f652622b0>
    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: 322
    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: 354
    functionName: websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.get_request_params
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - <builtin>.str
    - websockets.extensions.permessage_deflate._build_parameters
    - params.append
    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: 366
    functionName: websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.process_response_params
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - websockets.extensions.permessage_deflate._extract_parameters
    - <builtin>.int
    - zlib.compressobj
    - websockets.extensions.permessage_deflate.PerMessageDeflate.__init__
    - <builtin>.any
    - zlib.decompressobj
    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>.any
    functionSourceFile: <builtin>
    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>.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 0x7f6f64cdbe80>
    - <ast.Constant object at 0x7f6f64cdbbe0>
    - <ast.Constant object at 0x7f6f64cdb490>
    - <ast.Constant object at 0x7f6f64cdbf40>
    - <ast.Constant object at 0x7f6f64cdbc10>
    - <ast.Constant object at 0x7f6f64cdb790>
    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: 525
    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: 560
    functionName: websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.process_request_params
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - <builtin>.str
    - <builtin>.int
    - zlib.decompressobj
    - zlib.compressobj
    - websockets.extensions.permessage_deflate._build_parameters
    - websockets.extensions.permessage_deflate.PerMessageDeflate.__init__
    - <builtin>.any
    - params.append
    - websockets.extensions.permessage_deflate._extract_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: 674
    functionName: websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 10
    functionsReached:
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - <builtin>.any
    - <builtin>.list
    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: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7f6f659263a0>
    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: websockets.exceptions
    functionUses: 4
    functionsReached: []
    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 0x7f6f65201070>
    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 0x7f6f6526a370>
    - <ast.Constant object at 0x7f6f6526afa0>
    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:
    - <builtin>.isinstance
    - websockets.exceptions.PayloadTooBig.set_current_size
    - warnings.warn
    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>.__import__
    - <builtin>.getattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/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>.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: <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:
    - websockets.imports.import_name
    - <builtin>.len
    - <builtin>.getattr
    - warnings.warn
    - <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: 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: 152
    functionName: websockets.frames.Frame.__str__
    functionSourceFile: websockets.frames
    functionUses: 0
    functionsReached:
    - struct.unpack
    - <builtin>.str
    - <builtin>.len
    - websockets.frames.Close.parse
    - <builtin>.bytes
    - <builtin>.repr
    - <builtin>.filter
    - close.check
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - cls
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 386
    functionName: websockets.frames.Close.parse
    functionSourceFile: websockets.frames
    functionUses: 12
    functionsReached:
    - struct.unpack
    - <builtin>.len
    - close.check
    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: <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: 203
    functionName: websockets.frames.Frame.parse
    functionSourceFile: websockets.frames
    functionUses: 1
    functionsReached:
    - struct.unpack
    - extension.decode
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - <builtin>.len
    - int.from_bytes
    - enum.IntEnum.__init__
    - frame.check
    - websockets.streams.StreamReader.read_exact
    - speedups.apply_mask
    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: 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: 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: 36
    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: speedups.apply_mask
    functionSourceFile: speedups
    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: <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: 276
    functionName: websockets.frames.Frame.serialize
    functionSourceFile: websockets.frames
    functionUses: 10
    functionsReached:
    - io.BytesIO
    - websockets.utils.apply_mask
    - output.getvalue
    - <builtin>.len
    - output.write
    - secrets.token_bytes
    - int.from_bytes
    - struct.pack
    - extension.encode
    - websockets.frames.Frame.check
    - speedups.apply_mask
    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: 335
    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: 367
    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: 409
    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: 417
    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.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: 15
    functionName: websockets.utils.generate_key
    functionSourceFile: websockets.utils
    functionUses: 10
    functionsReached:
    - secrets.token_bytes
    - base64.b64encode
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 28
    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: 24
    functionName: websockets.utils.accept_key
    functionSourceFile: websockets.utils
    functionUses: 11
    functionsReached:
    - hashlib.sha1
    - base64.b64encode
    linkageType: pythonLinkage
    raised: []
    returnType: N/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.extensions
    functionSourceFile: websockets.extensions
    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.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: 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>.globals
    - <builtin>.set
    - <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:
    - websockets.headers.build_host
    - <builtin>.isinstance
    - ipaddress.ip_address
    - websockets.headers.build_extension
    - user_pass.encode
    - websockets.headers.build_subprotocol
    - websockets.headers.build_authorization_basic
    - websockets.headers.build_extension_item
    - extension_factory.get_request_params
    - base64.b64encode
    - arg.raw_items
    - websockets.datastructures.Headers.__init__
    - <builtin>.super
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/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:
    - headers.get_all
    - websockets.utils.accept_key
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - accepted_extensions.append
    - _OWS_re.match
    - match.group
    - parameters.append
    - websockets.client.ClientProtocol.process_extensions
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - <builtin>.any
    - websockets.headers.parse_extension
    - hashlib.sha1
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.parse_connection
    - items.append
    - websockets.client.ClientProtocol.process_subprotocol
    - base64.b64encode
    - extension_factory.process_response_params
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderValue
    - InvalidHeader
    - InvalidStatus
    - InvalidUpgrade
    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_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.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: 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: 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_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    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:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - accepted_extensions.append
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_extension
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    - extension_factory.process_response_params
    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:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    linkageType: pythonLinkage
    raised:
    - InvalidHeader
    - NegotiationError
    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_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.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: 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_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    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_all
    - raw_name.decode
    - websockets.utils.accept_key
    - status_line.split
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - headers.get
    - websockets.headers.parse_subprotocol
    - websockets.streams.StreamReader.read_exact
    - _protocol_re.match
    - extension_factory.process_response_params
    - websockets.headers.peek_ahead
    - websockets.http11.parse_headers
    - typing.cast
    - <builtin>.super
    - accepted_extensions.append
    - _OWS_re.match
    - match.group
    - <builtin>.int
    - parameters.append
    - raw_value.strip
    - websockets.client.ClientProtocol.process_extensions
    - raw_reason.decode
    - _unquote_re.sub
    - response.headers.raw_items
    - websockets.headers.parse_extension_item_param
    - websockets.datastructures.Headers.__init__
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.headers.parse_extension_item
    - websockets.protocol.Protocol.send_eof
    - chunk_size_line.split
    - websockets.http11.read_body
    - websockets.headers.parse_quoted_string
    - _value_re.fullmatch
    - websockets.streams.StreamReader.discard
    - <builtin>.next
    - <builtin>.any
    - websockets.headers.parse_extension
    - hashlib.sha1
    - raw_chunk_size.decode
    - websockets.headers.parse_list
    - arg.raw_items
    - websockets.streams.StreamReader.at_eof
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.http11.Response.parse
    - websockets.headers.parse_upgrade
    - <builtin>.tuple
    - websockets.http11.parse_line
    - _quoted_string_re.match
    - <builtin>.len
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_subprotocol_item
    - websockets.streams.StreamReader.read_to_eof
    - websockets.client.ClientProtocol.process_response
    - websockets.headers.parse_connection
    - websockets.client.ClientProtocol.process_subprotocol
    - items.append
    - line.split
    - base64.b64encode
    - websockets.protocol.Protocol.discard
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    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: 765
    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: 643
    functionName: websockets.protocol.Protocol.discard
    functionSourceFile: websockets.protocol
    functionUses: 7
    functionsReached:
    - websockets.protocol.Protocol.send_eof
    - websockets.streams.StreamReader.at_eof
    - websockets.streams.StreamReader.discard
    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:
    - <builtin>.super
    - 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: <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: 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: 91
    functionName: websockets.protocol.Protocol.__init__
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - headers.get_all
    - websockets.utils.accept_key
    - websockets.headers.parse_subprotocol
    - logging.getLogger
    - typing.cast
    - _OWS_re.match
    - websockets.client.ClientProtocol.process_extensions
    - _unquote_re.sub
    - response.headers.raw_items
    - websockets.headers.parse_extension_item_param
    - websockets.datastructures.Headers.__init__
    - websockets.protocol.Protocol.send_eof
    - websockets.http11.read_body
    - websockets.streams.StreamReader.discard
    - <builtin>.any
    - websockets.headers.parse_list
    - websockets.datastructures.Headers.update
    - logger.isEnabledFor
    - websockets.headers.parse_upgrade
    - websockets.http11.parse_line
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    - websockets.client.ClientProtocol.process_subprotocol
    - <builtin>.range
    - status_line.split
    - websockets.headers.parse_token
    - headers.get
    - websockets.streams.StreamReader.read_exact
    - extension_factory.process_response_params
    - websockets.streams.StreamReader.__init__
    - <builtin>.int
    - raw_reason.decode
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.headers.parse_extension_item
    - <builtin>.bytearray
    - websockets.headers.parse_quoted_string
    - raw_path.decode
    - raw_chunk_size.decode
    - websockets.headers.parse_OWS
    - <builtin>.isinstance
    - _token_re.fullmatch
    - websockets.http11.Response.parse
    - _quoted_string_re.match
    - match.end
    - websockets.client.ClientProtocol.process_response
    - websockets.streams.StreamReader.read_line
    - line.endswith
    - uuid.uuid4
    - _protocol_re.match
    - websockets.http11.parse_headers
    - websockets.http11.Request.parse
    - <builtin>.super
    - accepted_extensions.append
    - <builtin>.next
    - websockets.headers.parse_extension
    - hashlib.sha1
    - side.name.lower
    - websockets.streams.StreamReader.at_eof
    - raw_value.decode
    - <builtin>.len
    - websockets.streams.StreamReader.read_to_eof
    - base64.b64encode
    - raw_name.decode
    - <builtin>.sum
    - request_line.split
    - _token_re.match
    - websockets.headers.peek_ahead
    - raw_value.strip
    - match.group
    - parameters.append
    - request.headers.raw_items
    - websockets.server.ServerProtocol.parse
    - chunk_size_line.split
    - _value_re.fullmatch
    - arg.raw_items
    - <builtin>.tuple
    - websockets.client.ClientProtocol.parse
    - websockets.headers.parse_connection
    - line.split
    - websockets.protocol.Protocol.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: 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:
    - raw_name.decode
    - request_line.split
    - websockets.http11.parse_headers
    - websockets.http11.Request.parse
    - <builtin>.super
    - raw_value.strip
    - <builtin>.int
    - request.headers.raw_items
    - websockets.datastructures.Headers.__init__
    - websockets.protocol.Protocol.send_eof
    - _value_re.fullmatch
    - websockets.streams.StreamReader.discard
    - raw_path.decode
    - <builtin>.next
    - arg.raw_items
    - websockets.streams.StreamReader.at_eof
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.tuple
    - websockets.http11.parse_line
    - <builtin>.len
    - line.split
    - websockets.protocol.Protocol.discard
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    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: 178
    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: 184
    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: 203
    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: 222
    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: 3
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 259
    functionName: websockets.protocol.Protocol.receive_data
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.next
    - websockets.streams.StreamReader.feed_data
    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: 275
    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: 296
    functionName: websockets.protocol.Protocol.send_continuation
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - websockets.utils.apply_mask
    - output.getvalue
    - <builtin>.len
    - output.write
    - secrets.token_bytes
    - websockets.frames.Frame.serialize
    - websockets.protocol.Protocol.send_frame
    - int.from_bytes
    - struct.pack
    - extension.encode
    - websockets.frames.Frame.check
    - speedups.apply_mask
    linkageType: pythonLinkage
    raised:
    - InvalidState
    - ProtocolError
    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: 755
    functionName: websockets.protocol.Protocol.send_frame
    functionSourceFile: websockets.protocol
    functionUses: 9
    functionsReached:
    - io.BytesIO
    - websockets.utils.apply_mask
    - output.getvalue
    - <builtin>.len
    - output.write
    - secrets.token_bytes
    - websockets.frames.Frame.serialize
    - int.from_bytes
    - struct.pack
    - extension.encode
    - websockets.frames.Frame.check
    - speedups.apply_mask
    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 0x7f6f65a71670>
    argNames:
    - self
    - data
    - fin
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 320
    functionName: websockets.protocol.Protocol.send_text
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - websockets.utils.apply_mask
    - output.getvalue
    - <builtin>.len
    - output.write
    - secrets.token_bytes
    - websockets.frames.Frame.serialize
    - websockets.protocol.Protocol.send_frame
    - int.from_bytes
    - struct.pack
    - extension.encode
    - websockets.frames.Frame.check
    - speedups.apply_mask
    linkageType: pythonLinkage
    raised:
    - InvalidState
    - ProtocolError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f6f64ee1d30>
    argNames:
    - self
    - data
    - fin
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 343
    functionName: websockets.protocol.Protocol.send_binary
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - websockets.utils.apply_mask
    - output.getvalue
    - <builtin>.len
    - output.write
    - secrets.token_bytes
    - websockets.frames.Frame.serialize
    - websockets.protocol.Protocol.send_frame
    - int.from_bytes
    - struct.pack
    - extension.encode
    - websockets.frames.Frame.check
    - speedups.apply_mask
    linkageType: pythonLinkage
    raised:
    - InvalidState
    - ProtocolError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f6f64ee1190>
    - <ast.Constant object at 0x7f6f64ee17c0>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 366
    functionName: websockets.protocol.Protocol.send_close
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - websockets.utils.apply_mask
    - output.getvalue
    - <builtin>.len
    - websockets.frames.Close.serialize
    - output.write
    - websockets.frames.Frame.serialize
    - websockets.protocol.Protocol.send_frame
    - secrets.token_bytes
    - int.from_bytes
    - struct.pack
    - websockets.frames.Close.check
    - extension.encode
    - websockets.frames.Frame.check
    - speedups.apply_mask
    linkageType: pythonLinkage
    raised:
    - InvalidState
    - ProtocolError
    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: 402
    functionName: websockets.protocol.Protocol.send_ping
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - websockets.utils.apply_mask
    - output.getvalue
    - <builtin>.len
    - output.write
    - secrets.token_bytes
    - websockets.frames.Frame.serialize
    - websockets.protocol.Protocol.send_frame
    - int.from_bytes
    - struct.pack
    - extension.encode
    - websockets.frames.Frame.check
    - speedups.apply_mask
    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: 418
    functionName: websockets.protocol.Protocol.send_pong
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - io.BytesIO
    - websockets.utils.apply_mask
    - output.getvalue
    - <builtin>.len
    - output.write
    - secrets.token_bytes
    - websockets.frames.Frame.serialize
    - websockets.protocol.Protocol.send_frame
    - int.from_bytes
    - struct.pack
    - extension.encode
    - websockets.frames.Frame.check
    - speedups.apply_mask
    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 0x7f6f6503ac70>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 434
    functionName: websockets.protocol.Protocol.fail
    functionSourceFile: websockets.protocol
    functionUses: 1
    functionsReached:
    - websockets.frames.Close.serialize
    - websockets.frames.Frame.serialize
    - websockets.utils.apply_mask
    - struct.pack
    - output.getvalue
    - websockets.protocol.Protocol.send_eof
    - output.write
    - websockets.protocol.Protocol.send_frame
    - websockets.streams.StreamReader.discard
    - <builtin>.next
    - websockets.frames.Close.check
    - extension.encode
    - websockets.frames.Frame.check
    - websockets.streams.StreamReader.at_eof
    - speedups.apply_mask
    - io.BytesIO
    - <builtin>.len
    - secrets.token_bytes
    - int.from_bytes
    - websockets.protocol.Protocol.discard
    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: 483
    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: 499
    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: 519
    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: 564
    functionName: websockets.protocol.Protocol.parse
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - extension.decode
    - websockets.frames.Close.serialize
    - websockets.frames.Frame.serialize
    - websockets.streams.StreamReader.read_exact
    - websockets.utils.apply_mask
    - <builtin>.min
    - struct.pack
    - websockets.frames.Close.parse
    - exc.set_current_size
    - output.getvalue
    - close.check
    - websockets.protocol.Protocol.fail
    - websockets.protocol.Protocol.send_eof
    - output.write
    - websockets.protocol.Protocol.send_frame
    - websockets.protocol.Protocol.recv_frame
    - websockets.streams.StreamReader.discard
    - enum.IntEnum.__init__
    - <builtin>.next
    - websockets.frames.Close.check
    - extension.encode
    - websockets.frames.Frame.check
    - websockets.streams.StreamReader.at_eof
    - speedups.apply_mask
    - struct.unpack
    - <builtin>.str
    - io.BytesIO
    - <builtin>.reversed
    - <builtin>.len
    - secrets.token_bytes
    - int.from_bytes
    - websockets.frames.Frame.parse
    - frame.check
    - websockets.protocol.Protocol.discard
    linkageType: pythonLinkage
    raised:
    - EOFError
    - AssertionError
    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: ''
    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: <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: 673
    functionName: websockets.protocol.Protocol.recv_frame
    functionSourceFile: websockets.protocol
    functionUses: 1
    functionsReached:
    - websockets.frames.Frame.serialize
    - websockets.utils.apply_mask
    - struct.pack
    - websockets.frames.Close.parse
    - output.getvalue
    - close.check
    - websockets.protocol.Protocol.send_eof
    - output.write
    - websockets.protocol.Protocol.send_frame
    - websockets.streams.StreamReader.discard
    - <builtin>.next
    - extension.encode
    - websockets.frames.Frame.check
    - websockets.streams.StreamReader.at_eof
    - speedups.apply_mask
    - struct.unpack
    - io.BytesIO
    - <builtin>.len
    - secrets.token_bytes
    - int.from_bytes
    - websockets.protocol.Protocol.discard
    linkageType: pythonLinkage
    raised:
    - AssertionError
    - 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: exc.set_current_size
    functionSourceFile: <builtin>
    functionUses: 1
    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: ''
    functionUses: 9
    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: 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: 9
    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: 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:
    - match.end
    - _OWS_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: _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.end
    - _token_re.match
    - match.group
    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:
    - _quoted_string_re.match
    - _unquote_re.sub
    - match.end
    - match.group
    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:
    - _quotable_re.fullmatch
    - _quote_re.sub
    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_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderFormat
    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:
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _OWS_re.match
    - match.group
    - parameters.append
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_token
    - websockets.headers.parse_quoted_string
    - _token_re.match
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.peek_ahead
    - typing.cast
    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:
    - match.group
    - match.end
    - websockets.headers.parse_token
    - _token_re.match
    - typing.cast
    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: 426
    functionName: websockets.headers.parse_subprotocol_item
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - match.group
    - match.end
    - websockets.headers.parse_token
    - _token_re.match
    - typing.cast
    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: 268
    functionName: websockets.headers.parse_upgrade_protocol
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - match.end
    - _protocol_re.match
    - typing.cast
    - match.group
    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: 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:
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _OWS_re.match
    - match.group
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_token
    - websockets.headers.parse_quoted_string
    - _token_re.match
    - _unquote_re.sub
    - websockets.headers.peek_ahead
    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: 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:
    - _quotable_re.fullmatch
    - _quote_re.sub
    - websockets.headers.build_quoted_string
    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.end
    - _token68_re.match
    - match.group
    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:
    - match.group
    - <builtin>.len
    - match.end
    - websockets.headers.parse_token
    - _token_re.match
    - scheme.lower
    - _token68_re.match
    - websockets.headers.parse_end
    - user_pass.split
    - base64.b64decode
    - websockets.headers.parse_token68
    - websockets.headers.peek_ahead
    - basic_credentials.encode
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderValue
    - 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: 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: 9
    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:
    - asyncio.get_running_loop
    - logging.LoggerAdapter
    - <builtin>.isinstance
    - collections.deque
    linkageType: pythonLinkage
    raised: []
    returnType: N/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:
    - typing.cast.get_extra_info
    - asyncio.Protocol.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: 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: 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: 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:
    - typing.cast.get_extra_info
    - asyncio.Protocol.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.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.close
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f6f65a5bbe0>
    - <ast.Constant object at 0x7f6f65a5b160>
    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.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.resume_reading
    - asyncio.Protocol.logger.error
    - asyncio.Protocol.resume_reading
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.messages.Assembler.<lambda2>
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.asyncio.messages.Assembler.get
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.connection.Connection.recv
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - frames.append
    - websockets.asyncio.messages.Assembler.maybe_resume
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - data.decode
    - websockets.legacy.framing.Frame.write
    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 0x7f6f651c4220>
    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.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.resume_reading
    - asyncio.Protocol.logger.error
    - asyncio.Protocol.resume_reading
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.messages.Assembler.<lambda2>
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.asyncio.messages.Assembler.get
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - frames.append
    - websockets.asyncio.messages.Assembler.maybe_resume
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - data.decode
    - websockets.legacy.framing.Frame.write
    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:
    - typing.overload
    - contextlib.asynccontextmanager
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 4
    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 0x7f6f6503a100>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 128
    functionName: websockets.asyncio.messages.Assembler.get
    functionSourceFile: websockets.asyncio.messages
    functionUses: 2
    functionsReached:
    - websockets.asyncio.messages.Assembler.<lambda2>
    - frames.append
    - websockets.asyncio.messages.Assembler.maybe_resume
    - <builtin>.len
    - asyncio.Protocol.resume_reading
    - typing.cast.resume_reading
    - data.decode
    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 0x7f6f65395490>
    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:
    - asyncio.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - asyncio.Protocol.is_closing
    - typing.cast.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - decoder.decode
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - typing.cast.resume_reading
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.messages.Assembler.<lambda2>
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.messages.Assembler.get_iter
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.asyncio.messages.Assembler.maybe_resume
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - asyncio.Protocol.resume_reading
    - websockets.legacy.framing.Frame.write
    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 0x7f6f64ee1af0>
    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:
    - websockets.asyncio.messages.Assembler.<lambda2>
    - websockets.asyncio.messages.Assembler.maybe_resume
    - <builtin>.len
    - decoder.decode
    - typing.cast.resume_reading
    - asyncio.Protocol.resume_reading
    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 0x7f6f65261df0>
    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.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - <builtin>.type
    - typing.cast.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.Protocol.is_closing
    - asyncio.TimeoutError
    - websockets.asyncio.async_timeout.timeout_at
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - websockets.asyncio.compatibility.aiter
    - typing.cast.close
    - <builtin>.iter
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - message.encode
    - websockets.asyncio.connection.Connection.send_data
    - websockets.asyncio.compatibility.anext
    - chunk.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.Protocol.can_write_eof
    - <builtin>.next
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.isinstance
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 2
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 650
    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 0x7f6f6526ad30>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 660
    functionName: websockets.asyncio.connection.Connection.ping
    functionSourceFile: websockets.asyncio.connection
    functionUses: 2
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - struct.pack
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - random.getrandbits
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - <builtin>.bytes
    - websockets.frames.Close.check
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - data.encode
    - <builtin>.isinstance
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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 0x7f6f652592b0>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 713
    functionName: websockets.asyncio.connection.Connection.pong
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - <builtin>.bytes
    - websockets.frames.Close.check
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - data.encode
    - <builtin>.isinstance
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 740
    functionName: websockets.asyncio.connection.Connection.process_event
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - websockets.asyncio.connection.Connection.acknowledge_pings
    - <builtin>.len
    - asyncio.Protocol.pong_waiters.items
    - ping_ids.append
    - pong_waiter.set_result
    - websockets.asyncio.messages.Assembler.put
    - asyncio.Protocol.pause_reading
    - websockets.asyncio.messages.Assembler.maybe_pause
    - <builtin>.bytes
    - pong_waiter.done
    - websockets.asyncio.messages.Assembler.<lambda1>
    - typing.cast.pause_reading
    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: 264
    functionName: websockets.asyncio.messages.Assembler.put
    functionSourceFile: websockets.asyncio.messages
    functionUses: 1
    functionsReached:
    - <builtin>.len
    - asyncio.Protocol.pause_reading
    - websockets.asyncio.messages.Assembler.maybe_pause
    - websockets.asyncio.messages.Assembler.<lambda1>
    - typing.cast.pause_reading
    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: 754
    functionName: websockets.asyncio.connection.Connection.acknowledge_pings
    functionSourceFile: websockets.asyncio.connection
    functionUses: 1
    functionsReached:
    - pong_waiter.set_result
    - pong_waiter.done
    - asyncio.Protocol.pong_waiters.items
    - ping_ids.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.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: 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.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: 784
    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.cancel
    - pong_waiter.set_exception
    - pong_waiter.done
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 805
    functionName: websockets.asyncio.connection.Connection.keepalive
    functionSourceFile: websockets.asyncio.connection
    functionUses: 1
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.Protocol.is_closing
    - asyncio.TimeoutError
    - websockets.asyncio.async_timeout.timeout_at
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.connection.Connection.ping
    - asyncio.sleep
    - random.getrandbits
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - <builtin>.bytes
    - websockets.frames.Close.check
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - data.encode
    - <builtin>.isinstance
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 852
    functionName: websockets.asyncio.connection.Connection.start_keepalive
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.Protocol.is_closing
    - asyncio.TimeoutError
    - websockets.asyncio.async_timeout.timeout_at
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - websockets.asyncio.connection.Connection.ping
    - asyncio.sleep
    - random.getrandbits
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - <builtin>.bytes
    - websockets.frames.Close.check
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - data.encode
    - <builtin>.isinstance
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.asyncio.connection.Connection.keepalive
    - websockets.legacy.framing.Frame.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: 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: 961
    functionName: websockets.asyncio.connection.Connection.send_data
    functionSourceFile: websockets.asyncio.connection
    functionUses: 15
    functionsReached:
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.Protocol.is_closing
    - typing.cast.write_eof
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 1056
    functionName: websockets.asyncio.connection.Connection.drain
    functionSourceFile: websockets.asyncio.connection
    functionUses: 13
    functionsReached:
    - asyncio.Protocol.is_closing
    - asyncio.sleep
    - typing.cast.is_closing
    - asyncio.Protocol.drain_waiters.append
    - asyncio.Protocol.drain_waiters.remove
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 989
    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: 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: 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: 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: 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.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: 5
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Attribute object at 0x7f6f657f67f0>
    - <ast.Constant object at 0x7f6f657f6040>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 725
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.Protocol.is_closing
    - typing.cast.write_eof
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.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: typing.cast.close
    functionSourceFile: typing
    functionUses: 37
    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: 1001
    functionName: websockets.asyncio.connection.Connection.connection_made
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - collections.deque
    - asyncio.Protocol.set_write_buffer_limits
    - websockets.asyncio.messages.Assembler.__init__
    - typing.cast.set_write_buffer_limits
    - typing.cast
    - websockets.asyncio.messages.SimpleQueue.__init__
    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 0x7f6f64f8d550>
    - <ast.Constant object at 0x7f6f64f8d700>
    - <ast.Lambda object at 0x7f6f64f8db50>
    - <ast.Lambda object at 0x7f6f64f8d6d0>
    argNames:
    - self
    - high
    - low
    - pause
    - resume
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 85
    functionName: websockets.asyncio.messages.Assembler.__init__
    functionSourceFile: websockets.asyncio.messages
    functionUses: 1
    functionsReached:
    - asyncio.get_running_loop
    - collections.deque
    - websockets.asyncio.messages.SimpleQueue.__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: typing.cast.set_write_buffer_limits
    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: asyncio.Protocol.set_write_buffer_limits
    functionSourceFile: asyncio
    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: 1011
    functionName: websockets.asyncio.connection.Connection.connection_lost
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.Protocol.pong_waiters.clear
    - asyncio.Protocol.pong_waiters.values
    - asyncio.Protocol.drain_waiters.set_exception
    - websockets.asyncio.connection.Connection.abort_pings
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.drain_waiters.done
    - asyncio.Protocol.connection_lost_waiter.set_result
    - websockets.asyncio.messages.Assembler.close
    - asyncio.Protocol.drain_waiters.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: 300
    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: 1043
    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: 1048
    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: 1076
    functionName: websockets.asyncio.connection.Connection.data_received
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.client.ClientConnection.process_event
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.Protocol.is_closing
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - <builtin>.super
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.asyncio.server.ServerConnection.process_event
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - asyncio.Protocol.request_rcvd.set_result
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.isinstance
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - asyncio.Protocol.response_rcvd.set_result
    - websockets.legacy.framing.Frame.write
    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:
    - asyncio.Protocol.request_rcvd.set_result
    - <builtin>.isinstance
    - <builtin>.super
    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: 1102
    functionName: websockets.asyncio.connection.Connection.eof_received
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.client.ClientConnection.process_event
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.Protocol.is_closing
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - <builtin>.super
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.asyncio.server.ServerConnection.process_event
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - asyncio.Protocol.request_rcvd.set_result
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.isinstance
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - asyncio.Protocol.response_rcvd.set_result
    - websockets.legacy.framing.Frame.write
    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 0x7f6f65262a30>
    argNames:
    - connections
    - message
    - raise_exceptions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1135
    functionName: websockets.asyncio.connection.broadcast
    functionSourceFile: websockets.asyncio.connection
    functionUses: 0
    functionsReached:
    - <builtin>.type
    - <builtin>.isinstance
    - message.encode
    - traceback.format_exception_only
    - connection.logger.warning
    - <builtin>.RuntimeError
    - <builtin>.getattr
    - exceptions.append
    - connection.send_data
    linkageType: pythonLinkage
    raised:
    - ValueError
    - TypeError
    - ExceptionGroup
    returnType: N/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: 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:
    - typing.TypeVar
    - 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: codecs.getincrementaldecoder
    functionSourceFile: codecs
    functionUses: 9
    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:
    - asyncio.get_running_loop
    - collections.deque
    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 0x7f6f65262c10>
    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: 289
    functionName: websockets.asyncio.messages.Assembler.maybe_resume
    functionSourceFile: websockets.asyncio.messages
    functionUses: 5
    functionsReached:
    - websockets.asyncio.messages.Assembler.<lambda2>
    - <builtin>.len
    - asyncio.Protocol.resume_reading
    - typing.cast.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: 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: data.decode
    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: decoder.decode
    functionSourceFile: <builtin>
    functionUses: 12
    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: 278
    functionName: websockets.asyncio.messages.Assembler.maybe_pause
    functionSourceFile: websockets.asyncio.messages
    functionUses: 2
    functionsReached:
    - <builtin>.len
    - asyncio.Protocol.pause_reading
    - typing.cast.pause_reading
    - websockets.asyncio.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: 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: 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: websockets.asyncio.messages.Assembler.<lambda2>
    functionSourceFile: ''
    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: 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.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: 96
    functionName: websockets.asyncio.router.route
    functionSourceFile: websockets.asyncio.router
    functionUses: 1
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.router.Router.__init__
    - websockets.asyncio.server.Server.__init__
    - websockets.asyncio.server.serve.__init__
    - kwargs.setdefault
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - kwargs.get
    - websockets.headers.validate_subprotocols
    - loop.create_unix_server
    - loop.create_server
    - kwargs.pop
    - <builtin>.any
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    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 0x7f6f65a71520>
    argNames:
    - url_map
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 204
    functionName: websockets.asyncio.router.unix_route
    functionSourceFile: websockets.asyncio.router
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - websockets.asyncio.router.Router.__init__
    - websockets.asyncio.server.Server.__init__
    - websockets.asyncio.server.serve.__init__
    - kwargs.setdefault
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - kwargs.get
    - websockets.headers.validate_subprotocols
    - loop.create_unix_server
    - websockets.asyncio.router.route
    - loop.create_server
    - <builtin>.any
    - kwargs.pop
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    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 0x7f6f65032e20>
    - <ast.Constant object at 0x7f6f650322b0>
    argNames:
    - self
    - url_map
    - server_name
    - url_scheme
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 43
    functionName: websockets.asyncio.router.Router.__init__
    functionSourceFile: websockets.asyncio.router
    functionUses: 2
    functionsReached: []
    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: 55
    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: 63
    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: 68
    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: 71
    functionName: websockets.asyncio.router.Router.route_request
    functionSourceFile: websockets.asyncio.router
    functionUses: 0
    functionsReached:
    - url_map_adapter.match
    - connection.respond
    - websockets.asyncio.router.Router.not_found
    - websockets.asyncio.router.Router.redirect
    - websockets.asyncio.router.Router.get_server_name
    - urllib.parse.urlparse
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 92
    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: 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: 192
    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 0x7f6f65448b20>
    - <ast.Constant object at 0x7f6f65448610>
    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: 684
    functionName: websockets.asyncio.server.serve.__init__
    functionSourceFile: websockets.asyncio.server
    functionUses: 3
    functionsReached:
    - asyncio.get_running_loop
    - _token_re.fullmatch
    - websockets.asyncio.server.Server.__init__
    - kwargs.setdefault
    - <builtin>.isinstance
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - kwargs.get
    - websockets.headers.validate_subprotocols
    - loop.create_unix_server
    - loop.create_server
    - kwargs.pop
    - <builtin>.any
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    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: 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 0x7f6f64f28a30>
    - <ast.Constant object at 0x7f6f64f28910>
    - <ast.Name object at 0x7f6f64f28700>
    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.get_running_loop
    - websockets.asyncio.connection.Connection.send_context
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.TimeoutError
    - typing.cast.is_closing
    - websockets.asyncio.async_timeout.timeout_at
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.drain_waiters.remove
    - typing.cast.close
    - typing.cast.abort
    - websockets.asyncio.connection.Connection.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.asyncio.connection.Connection.set_recv_exc
    - asyncio.Protocol.write_eof
    - asyncio.Protocol.drain_waiters.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.server.Server.is_serving
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.asyncio.connection.Connection.send_data
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - asyncio.wait
    - websockets.frames.Close.check
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.isinstance
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - asyncio.timeout_at
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 503
    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:
    - asyncio.get_running_loop
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - connection.close
    - connection.transport.abort
    - websockets.asyncio.server.Server.start_connection_handler
    - connection.handshake
    - websockets.asyncio.async_timeout.timeout
    - connection.logger.error
    - connection.start_keepalive
    - asyncio.timeout
    - loop.time
    - websockets.asyncio.async_timeout.Timeout.update
    - <builtin>.super
    - asyncio.current_task
    - websockets.asyncio.server.Server.conn_handler
    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:
    - asyncio.get_running_loop
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - connection.close
    - connection.transport.abort
    - connection.handshake
    - websockets.asyncio.async_timeout.timeout
    - connection.logger.error
    - connection.start_keepalive
    - asyncio.timeout
    - loop.time
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    - websockets.asyncio.server.Server.conn_handler
    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:
    - asyncio.get_running_loop
    - logging.getLogger
    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:
    - <builtin>.str
    - sock.getsockname
    linkageType: pythonLinkage
    raised: []
    returnType: N/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:
    - asyncio.get_running_loop
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - connection.close
    - connection.transport.abort
    - connection.handshake
    - websockets.asyncio.async_timeout.timeout
    - connection.logger.error
    - connection.start_keepalive
    - asyncio.timeout
    - loop.time
    - websockets.asyncio.async_timeout.Timeout.update
    - 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: 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: 2
    argDefaultValues:
    - <ast.Constant object at 0x7f6f651bfee0>
    argNames:
    - self
    - close_connections
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 408
    functionName: websockets.asyncio.server.Server.close
    functionSourceFile: websockets.asyncio.server
    functionUses: 2
    functionsReached:
    - connection.close
    - asyncio.create_task
    - asyncio.sleep
    - websockets.asyncio.server.Server.get_loop
    - asyncio.wait
    - websockets.asyncio.server.Server._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: 431
    functionName: websockets.asyncio.server.Server._close
    functionSourceFile: websockets.asyncio.server
    functionUses: 3
    functionsReached:
    - connection.close
    - asyncio.wait
    - asyncio.create_task
    - asyncio.sleep
    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: 496
    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: 475
    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: 510
    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: 524
    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: 543
    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: 550
    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: 553
    functionName: websockets.asyncio.server.Server.__aexit__
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - connection.close
    - asyncio.create_task
    - websockets.asyncio.server.Server.get_loop
    - asyncio.sleep
    - asyncio.shield
    - websockets.asyncio.server.Server.close
    - asyncio.wait
    - websockets.asyncio.server.Server._close
    - websockets.asyncio.server.Server.wait_closed
    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: 759
    functionName: websockets.asyncio.server.serve.__init__.factory
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - websockets.asyncio.server.ServerConnection.__init__
    - <builtin>.setattr
    - <builtin>.super
    - websockets.server.ServerProtocol.__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: 774
    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>.super
    - <builtin>.setattr
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 814
    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: 817
    functionName: websockets.asyncio.server.serve.__aexit__
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - connection.close
    - asyncio.create_task
    - websockets.asyncio.server.Server.get_loop
    - asyncio.sleep
    - asyncio.shield
    - websockets.asyncio.server.Server.close
    - asyncio.wait
    - websockets.asyncio.server.Server._close
    - websockets.asyncio.server.Server.wait_closed
    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: 828
    functionName: websockets.asyncio.server.serve.__await__
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - websockets.asyncio.server.serve.__await_impl__
    - <builtin>.str
    - websockets.asyncio.server.Server.wrap
    - sock.getsockname
    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: 832
    functionName: websockets.asyncio.server.serve.__await_impl__
    functionSourceFile: websockets.asyncio.server
    functionUses: 1
    functionsReached:
    - <builtin>.str
    - websockets.asyncio.server.Server.wrap
    - sock.getsockname
    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 0x7f6f652fff70>
    argNames:
    - handler
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 842
    functionName: websockets.asyncio.server.unix_serve
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - _token_re.fullmatch
    - websockets.asyncio.server.Server.__init__
    - websockets.asyncio.server.serve.__init__
    - kwargs.setdefault
    - <builtin>.isinstance
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - kwargs.get
    - websockets.headers.validate_subprotocols
    - loop.create_unix_server
    - loop.create_server
    - kwargs.pop
    - <builtin>.any
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    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: 864
    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 0x7f6f64cdb3a0>
    - <ast.Constant object at 0x7f6f64cdb3d0>
    - <ast.Constant object at 0x7f6f64cdb790>
    argNames:
    - realm
    - credentials
    - check_credentials
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 873
    functionName: websockets.asyncio.server.basic_auth
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - websockets.asyncio.server.is_credentials
    - <builtin>.isinstance
    - <builtin>.list
    - <builtin>.all
    - <builtin>.dict
    - typing.cast
    linkageType: pythonLinkage
    raised:
    - ValueError
    - 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: <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: 928
    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: 937
    functionName: websockets.asyncio.server.basic_auth.process_request
    functionSourceFile: websockets.asyncio.server
    functionUses: 0
    functionsReached:
    - websockets.headers.parse_token
    - _token_re.match
    - scheme.lower
    - _token68_re.match
    - websockets.headers.build_www_authenticate_basic
    - base64.b64decode
    - websockets.headers.peek_ahead
    - match.group
    - hmac.compare_digest
    - websockets.headers.parse_authorization_basic
    - user_pass.split
    - _quote_re.sub
    - _quotable_re.fullmatch
    - websockets.headers.parse_token68
    - basic_credentials.encode
    - <builtin>.isinstance
    - connection.respond
    - <builtin>.len
    - match.end
    - websockets.headers.build_quoted_string
    - websockets.asyncio.server.basic_auth.check_credentials
    - websockets.headers.parse_end
    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:
    - headers.get_all
    - websockets.utils.accept_key
    - text.encode
    - websockets.server.ServerProtocol.reject
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - websockets.server.ServerProtocol.select_subprotocol
    - headers.get
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - base64.b64decode
    - websockets.headers.peek_ahead
    - typing.cast
    - <builtin>.super
    - _OWS_re.match
    - accepted_extensions.append
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.datastructures.Headers.__init__
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.server.ServerProtocol.process_origin
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.server.ServerProtocol.process_request
    - ext_factory.process_request_params
    - <builtin>.any
    - websockets.headers.parse_extension
    - <builtin>.set
    - hashlib.sha1
    - websockets.headers.parse_list
    - arg.raw_items
    - extension_headers.append
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - <builtin>.str
    - websockets.server.ServerProtocol.process_subprotocol
    - <builtin>.isinstance
    - websockets.headers.parse_OWS
    - websockets.headers.parse_upgrade
    - _token_re.fullmatch
    - websockets.headers.build_extension
    - email.utils.formatdate
    - <builtin>.len
    - origin_or_regex.fullmatch
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_connection
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - items.append
    - websockets.headers.build_extension_item
    - key.encode
    - base64.b64encode
    - http.HTTPStatus
    - websockets.server.ServerProtocol.process_extensions
    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:
    - headers.get_all
    - websockets.utils.accept_key
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - websockets.server.ServerProtocol.select_subprotocol
    - headers.get
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - base64.b64decode
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - accepted_extensions.append
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.server.ServerProtocol.process_origin
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - ext_factory.process_request_params
    - <builtin>.any
    - websockets.headers.parse_extension
    - <builtin>.set
    - hashlib.sha1
    - websockets.headers.parse_list
    - extension_headers.append
    - websockets.server.ServerProtocol.process_subprotocol
    - <builtin>.isinstance
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade
    - websockets.headers.build_extension
    - _quoted_string_re.match
    - <builtin>.len
    - origin_or_regex.fullmatch
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_connection
    - items.append
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.build_extension_item
    - key.encode
    - base64.b64encode
    - websockets.server.ServerProtocol.process_extensions
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderValue
    - InvalidHeader
    - InvalidUpgrade
    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
    - email.utils.formatdate
    - text.encode
    - <builtin>.len
    - http.HTTPStatus
    - arg.raw_items
    - websockets.datastructures.Headers.__init__
    - <builtin>.super
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    linkageType: pythonLinkage
    raised: []
    returnType: N/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:
    - headers.get
    - <builtin>.isinstance
    - typing.cast
    - origin_or_regex.fullmatch
    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:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - accepted_extensions.append
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - ext_factory.process_request_params
    - websockets.headers.parse_extension
    - extension_headers.append
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - websockets.headers.build_extension
    - _quoted_string_re.match
    - <builtin>.len
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_subprotocol_item
    - items.append
    - websockets.headers.build_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:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - websockets.server.ServerProtocol.select_subprotocol
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - <builtin>.set
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_subprotocol_item
    - items.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: 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.protocol.Protocol.send_eof
    - <builtin>.len
    - websockets.streams.StreamReader.discard
    - response.serialize
    - response.headers.raw_items
    - <builtin>.next
    - websockets.protocol.Protocol.discard
    - 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:
    - <builtin>.super
    - 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.http
    functionSourceFile: websockets.http
    functionUses: 0
    functionsReached:
    - warnings.catch_warnings
    - warnings.warn
    - warnings.filterwarnings
    linkageType: pythonLinkage
    raised: []
    returnType: N/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:
    - raw_name.decode
    - request_line.split
    - <builtin>.super
    - raw_value.strip
    - websockets.datastructures.Headers.__init__
    - _value_re.fullmatch
    - raw_path.decode
    - stream.readline
    - arg.raw_items
    - websockets.legacy.http.read_headers
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.legacy.http.read_line
    - <builtin>.len
    - line.split
    - <builtin>.range
    - line.endswith
    linkageType: pythonLinkage
    raised:
    - ValueError
    - EOFError
    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:
    - stream.readline
    - line.endswith
    - <builtin>.len
    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
    - _token_re.fullmatch
    - raw_name.decode
    - <builtin>.isinstance
    - raw_value.strip
    - <builtin>.tuple
    - websockets.legacy.http.read_line
    - <builtin>.len
    - _value_re.fullmatch
    - line.split
    - arg.raw_items
    - stream.readline
    - <builtin>.range
    - websockets.datastructures.Headers.__init__
    - <builtin>.super
    - line.endswith
    - websockets.datastructures.Headers.update
    linkageType: pythonLinkage
    raised:
    - ValueError
    - EOFError
    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:
    - raw_name.decode
    - status_line.split
    - <builtin>.super
    - raw_value.strip
    - <builtin>.int
    - raw_reason.decode
    - websockets.datastructures.Headers.__init__
    - _value_re.fullmatch
    - stream.readline
    - arg.raw_items
    - websockets.legacy.http.read_headers
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.legacy.http.read_line
    - <builtin>.len
    - line.split
    - <builtin>.range
    - line.endswith
    linkageType: pythonLinkage
    raised:
    - ValueError
    - 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: 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.catch_warnings
    - warnings.warn
    - warnings.filterwarnings
    linkageType: pythonLinkage
    raised: []
    returnType: N/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:
    - websockets.headers.parse_token
    - _token_re.match
    - scheme.lower
    - _token68_re.match
    - websockets.headers.build_www_authenticate_basic
    - base64.b64decode
    - websockets.headers.peek_ahead
    - <builtin>.super
    - match.group
    - websockets.headers.parse_authorization_basic
    - user_pass.split
    - _quote_re.sub
    - _quotable_re.fullmatch
    - websockets.headers.parse_token68
    - basic_credentials.encode
    - websockets.legacy.auth.BasicAuthWebSocketServerProtocol.check_credentials
    - <builtin>.len
    - match.end
    - websockets.headers.build_quoted_string
    - websockets.headers.parse_end
    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 0x7f6f64ee1910>
    - <ast.Constant object at 0x7f6f64ee1f70>
    - <ast.Constant object at 0x7f6f64ee1ca0>
    - <ast.Constant object at 0x7f6f64ee1fd0>
    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>.isinstance
    - <builtin>.list
    - <builtin>.all
    - websockets.legacy.auth.is_credentials
    - functools.partial
    - <builtin>.dict
    - typing.cast
    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: 92
    functionName: websockets.legacy.server.WebSocketServerProtocol.__init__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - logging.getLogger
    - warnings.warn
    - inspect.signature
    - websockets.legacy.server.remove_path_argument
    - <builtin>.super
    - typing.cast
    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:
    - inspect.signature
    - typing.cast
    - warnings.warn
    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: 137
    functionName: websockets.legacy.server.WebSocketServerProtocol.connection_made
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - headers.get_all
    - websockets.utils.accept_key
    - headers.setdefault
    - websockets.frames.Close.serialize
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - frame.data.decode
    - websockets.headers.parse_subprotocol
    - typing.cast
    - headers.raw_items
    - asyncio.Protocol.pings.items
    - _OWS_re.match
    - typing.cast.abort
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - asyncio.current_task
    - websockets.datastructures.Headers.__init__
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - frames.Frame
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - websockets.legacy.server.remove_path_argument._ws_handler
    - ext_factory.process_request_params
    - websockets.frames.Close.check
    - <builtin>.any
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.headers.parse_list
    - websockets.datastructures.Headers.update
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.str
    - data.encode
    - websockets.headers.parse_upgrade
    - <builtin>.callable
    - websockets.legacy.http.read_line
    - <builtin>.reversed
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - items.append
    - int.from_bytes
    - <builtin>.hasattr
    - <builtin>.range
    - fragments.append
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.headers.parse_token
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - headers.get
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - asyncio.Protocol.logger.error
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - websockets.utils.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - struct.pack
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - pong_waiter.done
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - raw_path.decode
    - asyncio.Protocol.can_write_eof
    - struct.unpack
    - websockets.headers.parse_OWS
    - <builtin>.isinstance
    - _token_re.fullmatch
    - frames.Opcode
    - websockets.headers.build_extension
    - _quoted_string_re.match
    - match.end
    - asyncio.Protocol.logger.debug
    - typing.NamedTuple.__init__
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - <builtin>.sorted
    - line.endswith
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - codecs.getincrementaldecoder
    - typing.cast.write_eof
    - decoder.decode
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - _protocol_re.match
    - base64.b64decode
    - asyncio.Protocol.logger.info
    - <builtin>.super
    - accepted_extensions.append
    - asyncio.shield
    - warnings.warn
    - websockets.frames.Close.parse
    - asyncio.timeout
    - waiter.cancelled
    - time.perf_counter
    - response.encode
    - random.getrandbits
    - websockets.legacy.server.WebSocketServerProtocol.handler
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - <builtin>.bytes
    - response_headers.setdefault
    - pong_waiter.set_result
    - websockets.headers.parse_extension
    - hashlib.sha1
    - stream.readline
    - asyncio.Protocol.messages.append
    - new_frame.check
    - websockets.legacy.handshake.check_request
    - raw_value.decode
    - websockets.legacy.server.WebSocketServerProtocol.handshake
    - websockets.legacy.http.read_request
    - email.utils.formatdate
    - <builtin>.len
    - base64.b64encode
    - raw_name.decode
    - asyncio.Protocol.is_closing
    - extension.decode
    - <builtin>.sum
    - _token_re.match
    - request_line.split
    - websockets.legacy.handshake.build_response
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - loop.time
    - websockets.headers.peek_ahead
    - s_w_key.encode
    - typing.cast.close
    - raw_value.strip
    - <builtin>.iter
    - match.group
    - parameters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.can_write_eof
    - close.check
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - _value_re.fullmatch
    - extension_headers.append
    - <builtin>.set
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - arg.raw_items
    - websockets.legacy.http.read_headers
    - <builtin>.tuple
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - speedups.apply_mask
    - websockets.datastructures.Headers.raw_items
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - websockets.headers.parse_connection
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - line.split
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.headers.build_extension_item
    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: 150
    functionName: websockets.legacy.server.WebSocketServerProtocol.handler
    functionSourceFile: websockets.legacy.server
    functionUses: 1
    functionsReached:
    - headers.get_all
    - websockets.utils.accept_key
    - headers.setdefault
    - websockets.frames.Close.serialize
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - frame.data.decode
    - websockets.headers.parse_subprotocol
    - typing.cast
    - headers.raw_items
    - asyncio.Protocol.pings.items
    - _OWS_re.match
    - typing.cast.abort
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - asyncio.current_task
    - websockets.datastructures.Headers.__init__
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - frames.Frame
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - websockets.legacy.server.remove_path_argument._ws_handler
    - ext_factory.process_request_params
    - websockets.frames.Close.check
    - <builtin>.any
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.headers.parse_list
    - websockets.datastructures.Headers.update
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.str
    - data.encode
    - websockets.headers.parse_upgrade
    - <builtin>.callable
    - websockets.legacy.http.read_line
    - <builtin>.reversed
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - items.append
    - int.from_bytes
    - <builtin>.hasattr
    - <builtin>.range
    - fragments.append
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.headers.parse_token
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - headers.get
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - asyncio.Protocol.logger.error
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - websockets.utils.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - struct.pack
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - pong_waiter.done
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - raw_path.decode
    - asyncio.Protocol.can_write_eof
    - struct.unpack
    - websockets.headers.parse_OWS
    - <builtin>.isinstance
    - _token_re.fullmatch
    - frames.Opcode
    - websockets.headers.build_extension
    - _quoted_string_re.match
    - match.end
    - asyncio.Protocol.logger.debug
    - typing.NamedTuple.__init__
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - <builtin>.sorted
    - line.endswith
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - codecs.getincrementaldecoder
    - typing.cast.write_eof
    - decoder.decode
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - _protocol_re.match
    - base64.b64decode
    - asyncio.Protocol.logger.info
    - <builtin>.super
    - accepted_extensions.append
    - asyncio.shield
    - warnings.warn
    - websockets.frames.Close.parse
    - asyncio.timeout
    - waiter.cancelled
    - time.perf_counter
    - response.encode
    - random.getrandbits
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - <builtin>.bytes
    - response_headers.setdefault
    - pong_waiter.set_result
    - websockets.headers.parse_extension
    - hashlib.sha1
    - stream.readline
    - asyncio.Protocol.messages.append
    - new_frame.check
    - websockets.legacy.handshake.check_request
    - raw_value.decode
    - websockets.legacy.server.WebSocketServerProtocol.handshake
    - websockets.legacy.http.read_request
    - email.utils.formatdate
    - <builtin>.len
    - base64.b64encode
    - raw_name.decode
    - asyncio.Protocol.is_closing
    - extension.decode
    - <builtin>.sum
    - _token_re.match
    - request_line.split
    - websockets.legacy.handshake.build_response
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - loop.time
    - websockets.headers.peek_ahead
    - s_w_key.encode
    - typing.cast.close
    - raw_value.strip
    - <builtin>.iter
    - match.group
    - parameters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.can_write_eof
    - close.check
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - _value_re.fullmatch
    - extension_headers.append
    - <builtin>.set
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - arg.raw_items
    - websockets.legacy.http.read_headers
    - <builtin>.tuple
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - speedups.apply_mask
    - websockets.datastructures.Headers.raw_items
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - websockets.headers.parse_connection
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - line.split
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.headers.build_extension_item
    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 0x7f6f6520a1f0>
    - <ast.Constant object at 0x7f6f6520a820>
    - <ast.Constant object at 0x7f6f6520a670>
    - <ast.Constant object at 0x7f6f6520ad30>
    argNames:
    - self
    - origins
    - available_extensions
    - available_subprotocols
    - extra_headers
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 15
    functionLinenumber: 555
    functionName: websockets.legacy.server.WebSocketServerProtocol.handshake
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - headers.get_all
    - websockets.utils.accept_key
    - websockets.frames.Close.serialize
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - frame.data.decode
    - websockets.headers.parse_subprotocol
    - headers.raw_items
    - typing.cast
    - asyncio.Protocol.pings.items
    - _OWS_re.match
    - typing.cast.abort
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - asyncio.current_task
    - websockets.datastructures.Headers.__init__
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - frames.Frame
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - ext_factory.process_request_params
    - websockets.frames.Close.check
    - <builtin>.any
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.headers.parse_list
    - websockets.datastructures.Headers.update
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.str
    - data.encode
    - websockets.headers.parse_upgrade
    - <builtin>.callable
    - websockets.legacy.http.read_line
    - <builtin>.reversed
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - int.from_bytes
    - <builtin>.hasattr
    - <builtin>.range
    - fragments.append
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.headers.parse_token
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - headers.get
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - asyncio.Protocol.logger.error
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - websockets.utils.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - struct.pack
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - pong_waiter.done
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - raw_path.decode
    - asyncio.Protocol.can_write_eof
    - struct.unpack
    - websockets.headers.parse_OWS
    - <builtin>.isinstance
    - _token_re.fullmatch
    - frames.Opcode
    - websockets.headers.build_extension
    - _quoted_string_re.match
    - match.end
    - asyncio.Protocol.logger.debug
    - typing.NamedTuple.__init__
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - <builtin>.sorted
    - line.endswith
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - codecs.getincrementaldecoder
    - typing.cast.write_eof
    - decoder.decode
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - _protocol_re.match
    - base64.b64decode
    - asyncio.Protocol.logger.info
    - <builtin>.super
    - accepted_extensions.append
    - asyncio.shield
    - warnings.warn
    - websockets.frames.Close.parse
    - asyncio.timeout
    - waiter.cancelled
    - time.perf_counter
    - response.encode
    - random.getrandbits
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - <builtin>.bytes
    - response_headers.setdefault
    - pong_waiter.set_result
    - websockets.headers.parse_extension
    - stream.readline
    - hashlib.sha1
    - asyncio.Protocol.messages.append
    - new_frame.check
    - websockets.legacy.handshake.check_request
    - raw_value.decode
    - websockets.legacy.http.read_request
    - email.utils.formatdate
    - <builtin>.len
    - base64.b64encode
    - raw_name.decode
    - asyncio.Protocol.is_closing
    - extension.decode
    - <builtin>.sum
    - _token_re.match
    - request_line.split
    - websockets.legacy.handshake.build_response
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - loop.time
    - websockets.headers.peek_ahead
    - s_w_key.encode
    - typing.cast.close
    - raw_value.strip
    - match.group
    - parameters.append
    - <builtin>.iter
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.can_write_eof
    - close.check
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - _value_re.fullmatch
    - extension_headers.append
    - <builtin>.set
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - websockets.legacy.http.read_headers
    - arg.raw_items
    - <builtin>.tuple
    - asyncio.Protocol.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - speedups.apply_mask
    - websockets.datastructures.Headers.raw_items
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - websockets.headers.parse_connection
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - line.split
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.headers.build_extension_item
    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 0x7f6f65271fd0>
    argNames:
    - self
    - status
    - headers
    - body
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 295
    functionName: websockets.legacy.server.WebSocketServerProtocol.write_http_response
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - <builtin>.str
    - websockets.datastructures.Headers.raw_items
    - response.encode
    - <builtin>.iter
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - asyncio.Protocol.write
    - typing.cast.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: 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.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - enum.IntEnum.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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 0x7f6f65a47a00>
    - <ast.Constant object at 0x7f6f65a47fa0>
    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.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - struct.pack
    - asyncio.shield
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - enum.IntEnum.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 266
    functionName: websockets.legacy.server.WebSocketServerProtocol.read_http_request
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - raw_name.decode
    - request_line.split
    - headers.raw_items
    - <builtin>.super
    - raw_value.strip
    - websockets.datastructures.Headers.__init__
    - _value_re.fullmatch
    - raw_path.decode
    - stream.readline
    - arg.raw_items
    - websockets.legacy.http.read_headers
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.legacy.http.read_request
    - websockets.legacy.http.read_line
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - line.split
    - <builtin>.range
    - line.endswith
    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: 323
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_request
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - <builtin>.isinstance
    - warnings.warn
    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 0x7f6f6513f3d0>
    argNames:
    - headers
    - origins
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 373
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_origin
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - headers.get
    - typing.cast
    linkageType: pythonLinkage
    raised:
    - InvalidHeader
    - InvalidOrigin
    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: 401
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_extensions
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - accepted_extensions.append
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - ext_factory.process_request_params
    - websockets.headers.parse_extension
    - extension_headers.append
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - websockets.headers.build_extension
    - _quoted_string_re.match
    - <builtin>.len
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_subprotocol_item
    - items.append
    - websockets.headers.build_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: 483
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - _token_re.match
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - <builtin>.set
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_subprotocol_item
    - items.append
    - <builtin>.sorted
    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: 515
    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:
    - client_subprotocols.index
    - server_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:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - _protocol_re.match
    - base64.b64decode
    - websockets.headers.peek_ahead
    - typing.cast
    - s_w_key.encode
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - <builtin>.any
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade
    - _quoted_string_re.match
    - <builtin>.len
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_subprotocol_item
    - items.append
    - websockets.headers.parse_connection
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderValue
    - InvalidHeader
    - InvalidUpgrade
    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:
    - hashlib.sha1
    - websockets.utils.accept_key
    - base64.b64encode
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 332
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    functionSourceFile: websockets.legacy.protocol
    functionUses: 4
    functionsReached:
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - frame.data.decode
    - asyncio.Protocol.pings.items
    - typing.cast.abort
    - websockets.legacy.framing.Frame.read
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - asyncio.current_task
    - frames.Frame
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.connection_lost_waiter.done
    - data.encode
    - <builtin>.reversed
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - int.from_bytes
    - <builtin>.hasattr
    - fragments.append
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - asyncio.Protocol.logger.error
    - websockets.utils.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - struct.pack
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - pong_waiter.done
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - asyncio.Protocol.can_write_eof
    - struct.unpack
    - frames.Opcode
    - <builtin>.isinstance
    - asyncio.Protocol.logger.debug
    - typing.NamedTuple.__init__
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - codecs.getincrementaldecoder
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - decoder.decode
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.shield
    - websockets.frames.Close.parse
    - asyncio.timeout
    - waiter.cancelled
    - time.perf_counter
    - random.getrandbits
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - <builtin>.bytes
    - enum.IntEnum.__init__
    - asyncio.Protocol.messages.append
    - new_frame.check
    - <builtin>.len
    - asyncio.Protocol.is_closing
    - extension.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - loop.time
    - typing.cast.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.can_write_eof
    - close.check
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - asyncio.Protocol.abort
    - speedups.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    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 0x7f6f657f5310>
    argNames:
    - self
    - logger
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 666
    functionName: websockets.legacy.server.WebSocketServer.__init__
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - <builtin>.set
    - logging.getLogger
    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: 680
    functionName: websockets.legacy.server.WebSocketServer.wrap
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - server.get_loop
    - <builtin>.str
    - sock.getsockname
    linkageType: pythonLinkage
    raised: []
    returnType: N/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 0x7f6f65926cd0>
    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.get_loop
    - asyncio.create_task
    - asyncio.sleep
    - asyncio.wait
    - websockets.legacy.server.WebSocketServer._close
    - 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.wait
    - asyncio.create_task
    - asyncio.sleep
    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.get_loop
    - asyncio.create_task
    - asyncio.sleep
    - websockets.legacy.server.WebSocketServer.close
    - websockets.legacy.server.WebSocketServer.wait_closed
    - asyncio.shield
    - asyncio.wait
    - websockets.legacy.server.WebSocketServer._close
    - websocket.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 0x7f6f65a50a00>
    - <ast.Constant object at 0x7f6f65a50af0>
    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:
    - _token_re.fullmatch
    - <builtin>.isinstance
    - typing.cast
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - kwargs.get
    - websockets.legacy.server.WebSocketServer.__init__
    - warnings.warn
    - websockets.headers.validate_subprotocols
    - websockets.legacy.server.remove_path_argument
    - inspect.signature
    - functools.partial
    - <builtin>.any
    - <builtin>.set
    - asyncio.get_event_loop
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    - kwargs.pop
    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.get_loop
    - asyncio.create_task
    - asyncio.sleep
    - websockets.legacy.server.WebSocketServer.close
    - websockets.legacy.server.WebSocketServer.wait_closed
    - asyncio.shield
    - asyncio.wait
    - websockets.legacy.server.WebSocketServer._close
    - websocket.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.WebSocketServer.wrap
    - websockets.legacy.server.Serve.__await_impl__
    - server.get_loop
    - sock.getsockname
    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:
    - server.get_loop
    - <builtin>.str
    - websockets.legacy.server.WebSocketServer.wrap
    - sock.getsockname
    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 0x7f6f64fab580>
    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
    - websockets.legacy.server.Serve.__init__
    - asyncio.get_event_loop
    - typing.cast
    - logging.getLogger
    - websockets.legacy.server.WebSocketServer.__init__
    - warnings.warn
    - <builtin>.list
    - kwargs.get
    - websockets.legacy.server.remove_path_argument
    - inspect.signature
    - <builtin>.any
    - kwargs.pop
    - <builtin>.set
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - functools.partial
    linkageType: pythonLinkage
    raised: []
    returnType: N/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:
    - logging.LoggerAdapter
    - collections.deque
    - uuid.uuid4
    - asyncio.StreamReader
    - asyncio.Protocol.logger.debug
    - warnings.warn
    - loop.create_future
    - asyncio.Lock
    - asyncio.get_event_loop
    - logging.getLogger
    - 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: asyncio.StreamReader
    functionSourceFile: asyncio
    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.Lock
    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: 304
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    functionSourceFile: websockets.legacy.protocol
    functionUses: 36
    functionsReached:
    - asyncio.Protocol.connection_lost_waiter.done
    - waiter.cancelled
    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: 316
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol._drain
    functionSourceFile: websockets.legacy.protocol
    functionUses: 35
    functionsReached:
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.is_closing
    - typing.cast.is_closing
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - waiter.cancelled
    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: 936
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    functionSourceFile: websockets.legacy.protocol
    functionUses: 5
    functionsReached:
    - asyncio.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - extension.decode
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - decoder.decode
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - frame.data.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - asyncio.Protocol.logger.error
    - loop.time
    - asyncio.Protocol.pings.items
    - typing.cast.close
    - typing.cast.abort
    - websockets.utils.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.framing.Frame.read
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.shield
    - struct.pack
    - websockets.frames.Close.parse
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.can_write_eof
    - pong_waiter.done
    - time.perf_counter
    - waiter.cancelled
    - close.check
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - frames.Frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.Protocol.can_write_eof
    - <builtin>.bytes
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.messages.append
    - asyncio.Protocol.abort
    - new_frame.check
    - speedups.apply_mask
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - <builtin>.isinstance
    - data.encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - struct.unpack
    - frames.Opcode
    - <builtin>.reversed
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - ping_ids.append
    - int.from_bytes
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - fragments.append
    - websockets.legacy.framing.Frame.write
    - codecs.getincrementaldecoder
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 8
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 11
    functionLinenumber: 1218
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    functionSourceFile: websockets.legacy.protocol
    functionUses: 5
    functionsReached:
    - asyncio.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - asyncio.Protocol.logger.error
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - struct.pack
    - asyncio.shield
    - typing.cast.write
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - typing.cast.can_write_eof
    - waiter.cancelled
    - time.perf_counter
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - random.getrandbits
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - <builtin>.bytes
    - asyncio.Protocol.can_write_eof
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - data.encode
    - <builtin>.isinstance
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - enum.IntEnum.__init__
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 352
    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: 358
    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: 364
    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: 371
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.local_address
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - typing.cast.get_extra_info
    - asyncio.Protocol.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: 391
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.remote_address
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - typing.cast.get_extra_info
    - asyncio.Protocol.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: 411
    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: 425
    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: 436
    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: 454
    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: 471
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.__aiter__
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - pop_message_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.recv
    - <builtin>.len
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.Protocol.messages.popleft
    - asyncio.wait
    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: 488
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.recv
    functionSourceFile: websockets.legacy.protocol
    functionUses: 1
    functionsReached:
    - pop_message_waiter.done
    - <builtin>.len
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.Protocol.messages.popleft
    - asyncio.wait
    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: 902
    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: 566
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.send
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.type
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - asyncio.get_running_loop
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast
    - typing.cast.close
    - <builtin>.iter
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - <builtin>.next
    - websockets.frames.Close.check
    - enum.IntEnum.__init__
    - asyncio.Protocol.encode
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - <builtin>.isinstance
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.cast.encode
    - websockets.legacy.framing.prepare_data
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - typing.NamedTuple.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 150
    functionName: websockets.legacy.framing.prepare_data
    functionSourceFile: websockets.legacy.framing
    functionUses: 2
    functionsReached:
    - typing.cast.encode
    - <builtin>.isinstance
    - asyncio.Protocol.encode
    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: 1182
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - asyncio.Protocol.can_write_eof
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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 0x7f6f652ff940>
    argNames:
    - self
    - close
    - data
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 1193
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 34
    functionsReached:
    - asyncio.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 780
    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 0x7f6f6530e790>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 793
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.ping
    functionSourceFile: websockets.legacy.protocol
    functionUses: 6
    functionsReached:
    - asyncio.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - time.perf_counter
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - random.getrandbits
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - <builtin>.bytes
    - websockets.frames.Close.check
    - asyncio.Protocol.can_write_eof
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - data.encode
    - <builtin>.isinstance
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 174
    functionName: websockets.legacy.framing.prepare_ctrl
    functionSourceFile: websockets.legacy.framing
    functionUses: 11
    functionsReached:
    - data.encode
    - <builtin>.isinstance
    - <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 0x7f6f65395310>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 852
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.pong
    functionSourceFile: websockets.legacy.protocol
    functionUses: 8
    functionsReached:
    - asyncio.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - <builtin>.bytes
    - websockets.frames.Close.check
    - asyncio.Protocol.can_write_eof
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - data.encode
    - <builtin>.isinstance
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.write
    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: 879
    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: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 3
    IfCount: 9
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 12
    functionLinenumber: 1006
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    functionSourceFile: websockets.legacy.protocol
    functionUses: 6
    functionsReached:
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.Protocol.is_closing
    - typing.cast.write_eof
    - extension.decode
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - decoder.decode
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - frame.data.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - asyncio.Protocol.pings.items
    - typing.cast.close
    - typing.cast.abort
    - websockets.utils.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - struct.pack
    - websockets.frames.Close.parse
    - asyncio.shield
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.can_write_eof
    - pong_waiter.done
    - waiter.cancelled
    - time.perf_counter
    - close.check
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - frames.Frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.Protocol.can_write_eof
    - <builtin>.bytes
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - new_frame.check
    - speedups.apply_mask
    - struct.unpack
    - data.encode
    - <builtin>.isinstance
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - frames.Opcode
    - <builtin>.reversed
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - int.from_bytes
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - fragments.append
    - websockets.legacy.framing.Frame.write
    - codecs.getincrementaldecoder
    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: 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:
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - asyncio.Protocol.is_closing
    - typing.cast.write_eof
    - extension.decode
    - websockets.legacy.framing.prepare_ctrl
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - asyncio.Protocol.pings.items
    - typing.cast.close
    - typing.cast.abort
    - websockets.utils.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.Protocol.write_eof
    - struct.pack
    - websockets.frames.Close.parse
    - asyncio.shield
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.can_write_eof
    - pong_waiter.done
    - waiter.cancelled
    - time.perf_counter
    - close.check
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - frames.Frame
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.Protocol.can_write_eof
    - <builtin>.bytes
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - new_frame.check
    - speedups.apply_mask
    - struct.unpack
    - data.encode
    - <builtin>.isinstance
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - frames.Opcode
    - <builtin>.reversed
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - int.from_bytes
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.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: 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
    - <builtin>.isinstance
    - fragments.append
    - 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:
    - frames.Opcode
    - struct.unpack
    - extension.decode
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - websockets.legacy.framing.Frame.read
    - <builtin>.len
    - frames.Frame
    - asyncio.Protocol.logger.debug
    - int.from_bytes
    - typing.NamedTuple.__init__
    - new_frame.check
    - speedups.apply_mask
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 45
    functionName: websockets.legacy.framing.Frame.read
    functionSourceFile: websockets.legacy.framing
    functionUses: 9
    functionsReached:
    - struct.unpack
    - frames.Opcode
    - extension.decode
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - <builtin>.len
    - frames.Frame
    - int.from_bytes
    - typing.NamedTuple.__init__
    - new_frame.check
    - 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.logger.debug
    - asyncio.Protocol.write
    - typing.NamedTuple.__init__
    - enum.IntEnum.__init__
    - typing.cast.write
    - websockets.legacy.framing.Frame.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: 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: 123
    functionName: websockets.legacy.framing.Frame.write
    functionSourceFile: websockets.legacy.framing
    functionUses: 36
    functionsReached:
    - typing.cast.write
    - asyncio.Protocol.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.get_running_loop
    - asyncio.Protocol.is_closing
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - typing.cast.is_closing
    - websockets.frames.Close.serialize
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - loop.time
    - typing.cast.close
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - asyncio.shield
    - struct.pack
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.timeout
    - typing.cast.can_write_eof
    - waiter.cancelled
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - enum.IntEnum.__init__
    - asyncio.Protocol.can_write_eof
    - websockets.frames.Close.check
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.Protocol.abort
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - typing.NamedTuple.__init__
    - <builtin>.hasattr
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.framing.Frame.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: <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:
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.get_running_loop
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.shield
    - websockets.asyncio.async_timeout.timeout
    - asyncio.timeout
    - loop.time
    - websockets.asyncio.async_timeout.Timeout.update
    - asyncio.current_task
    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
    - websockets.exceptions.ConnectionClosed.__init__
    - pong_waiter.set_exception
    - pong_waiter.cancel
    - asyncio.Protocol.pings.values
    linkageType: pythonLinkage
    raised: []
    returnType: N/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:
    - typing.cast
    - typing.cast.set_write_buffer_limits
    - asyncio.Protocol.set_write_buffer_limits
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 8
    IfCount: 7
    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.set_exception
    - websockets.legacy.protocol.WebSocketCommonProtocol.abort_pings
    - waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc
    - websockets.exceptions.ConnectionClosed.__init__
    - asyncio.Protocol.logger.debug
    - waiter.set_result
    - asyncio.Protocol.connection_lost_waiter.set_result
    - pong_waiter.set_exception
    - pong_waiter.cancel
    - asyncio.Protocol.pings.values
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 1506
    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: 1510
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.resume_writing
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - waiter.set_result
    - waiter.done
    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: 1520
    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: 1523
    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 0x7f6f651572e0>
    argNames:
    - websockets
    - message
    - raise_exceptions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1545
    functionName: websockets.legacy.protocol.broadcast
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.type
    - <builtin>.isinstance
    - websocket.write_frame_sync
    - traceback.format_exception_only
    - websocket.logger.warning
    - <builtin>.RuntimeError
    - typing.cast.encode
    - websockets.legacy.framing.prepare_data
    - asyncio.Protocol.encode
    - exceptions.append
    linkageType: pythonLinkage
    raised:
    - ValueError
    - TypeError
    - ExceptionGroup
    returnType: N/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: 28
    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: 38
    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: 41
    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: typing.cast.encode
    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: asyncio.Protocol.encode
    functionSourceFile: asyncio
    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: 204
    functionName: websockets.legacy.framing.parse_close
    functionSourceFile: websockets.legacy.framing
    functionUses: 0
    functionsReached:
    - struct.unpack
    - <builtin>.len
    - close.check
    - websockets.frames.Close.parse
    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: 220
    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
    - secrets.token_bytes
    - websockets.utils.generate_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: 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:
    - headers.get_all
    - websockets.utils.accept_key
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - <builtin>.any
    - hashlib.sha1
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade
    - _quoted_string_re.match
    - <builtin>.len
    - websockets.headers.parse_connection_option
    - match.end
    - websockets.headers.parse_subprotocol_item
    - items.append
    - websockets.headers.parse_connection
    - base64.b64encode
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderValue
    - InvalidHeader
    - InvalidUpgrade
    returnType: N/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 0x7f6f65a699a0>
    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:
    - http.HTTPStatus
    - datastructures.Headers
    linkageType: pythonLinkage
    raised: []
    returnType: N/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.write
    - 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: 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.write
    - sys.stdout.flush
    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.streams.StreamReader.__init__
    - asyncio.get_running_loop
    - collections.deque
    - <builtin>.bytearray
    - websockets.asyncio.messages.SimpleQueue.__init__
    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:
    - asyncio.Protocol.messages.put
    - line.decode
    - <builtin>.len
    - sys.stdout.flush
    - sys.stdout.write
    - websockets.streams.StreamReader.read_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: 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:
    - asyncio.Protocol.messages.put
    - line.decode
    - <builtin>.len
    - sys.stdout.flush
    - websockets.cli.ReadLines.parse
    - <builtin>.next
    - sys.stdout.write
    - websockets.streams.StreamReader.read_line
    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:
    - <builtin>.next
    - websockets.streams.StreamReader.feed_data
    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:
    - <builtin>.isinstance
    - message.hex
    - sys.stdout.flush
    - websockets.cli.print_during_input
    - 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: 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:
    - websocket.send
    - messages.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: 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:
    - asyncio.get_running_loop
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - loop.connect_read_pipe
    - websockets.cli.print_over_input
    - message.hex
    - websockets.headers.validate_subprotocols
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - sys.stdout.flush
    - logging.getLogger
    - websocket.send
    - transport.close
    - messages.get
    - websocket.close
    - websockets.asyncio.client.connect.__init__
    - websockets.cli.send_outgoing_messages
    - <builtin>.list
    - <builtin>.print
    - websockets.cli.print_incoming_messages
    - asyncio.wait
    - outgoing.cancel
    - <builtin>.any
    - websockets.cli.print_during_input
    - _token_re.fullmatch
    - <builtin>.isinstance
    - asyncio.create_task
    - incoming.cancel
    - sys.stdout.write
    - 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 0x7f6f65420e50>
    argNames:
    - argv
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 145
    functionName: websockets.cli.main
    functionSourceFile: websockets.cli
    functionUses: 1
    functionsReached:
    - asyncio.get_running_loop
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - loop.connect_read_pipe
    - asyncio.run
    - websockets.cli.print_over_input
    - message.hex
    - websockets.headers.validate_subprotocols
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - sys.stdout.flush
    - logging.getLogger
    - websocket.send
    - parser.add_mutually_exclusive_group
    - transport.close
    - messages.get
    - parser.print_usage
    - websocket.close
    - websockets.asyncio.client.connect.__init__
    - websockets.cli.send_outgoing_messages
    - <builtin>.list
    - <builtin>.print
    - websockets.cli.print_incoming_messages
    - asyncio.wait
    - outgoing.cancel
    - <builtin>.any
    - websockets.cli.print_during_input
    - _token_re.fullmatch
    - <builtin>.isinstance
    - asyncio.create_task
    - argparse.ArgumentParser
    - group.add_argument
    - os.system
    - parser.parse_args
    - incoming.cancel
    - sys.stdout.write
    - websockets.cli.interactive_client
    - 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:
    - asyncio.get_running_loop
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - loop.connect_read_pipe
    - asyncio.run
    - websockets.cli.print_over_input
    - message.hex
    - websockets.headers.validate_subprotocols
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - sys.stdout.flush
    - logging.getLogger
    - websocket.send
    - parser.add_mutually_exclusive_group
    - transport.close
    - messages.get
    - parser.print_usage
    - websocket.close
    - websockets.asyncio.client.connect.__init__
    - websockets.cli.send_outgoing_messages
    - <builtin>.list
    - <builtin>.print
    - websockets.cli.print_incoming_messages
    - asyncio.wait
    - outgoing.cancel
    - <builtin>.any
    - websockets.cli.main
    - websockets.cli.print_during_input
    - _token_re.fullmatch
    - <builtin>.isinstance
    - asyncio.create_task
    - argparse.ArgumentParser
    - group.add_argument
    - os.system
    - parser.parse_args
    - incoming.cancel
    - sys.stdout.write
    - websockets.cli.interactive_client
    - 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: 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:
    - <builtin>.str
    - websockets.datastructures.Headers.raw_items
    - <builtin>.iter
    - asyncio.Protocol.logger.debug
    - asyncio.Protocol.write
    - typing.cast.write
    - request.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: 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:
    - raw_name.decode
    - status_line.split
    - headers.raw_items
    - <builtin>.super
    - raw_value.strip
    - <builtin>.int
    - raw_reason.decode
    - websockets.legacy.http.read_response
    - websockets.datastructures.Headers.__init__
    - _value_re.fullmatch
    - stream.readline
    - arg.raw_items
    - websockets.legacy.http.read_headers
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.legacy.http.read_line
    - <builtin>.len
    - asyncio.Protocol.logger.debug
    - line.split
    - <builtin>.range
    - line.endswith
    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:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - accepted_extensions.append
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_extension
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    - extension_factory.process_response_params
    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:
    - headers.get_all
    - <builtin>.sum
    - websockets.headers.parse_token
    - _token_re.match
    - websockets.headers.parse_subprotocol
    - _protocol_re.match
    - websockets.headers.peek_ahead
    - typing.cast
    - _OWS_re.match
    - match.group
    - parameters.append
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_upgrade_protocol
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - websockets.headers.parse_list
    - websockets.headers.parse_OWS
    - _token_re.fullmatch
    - _quoted_string_re.match
    - <builtin>.len
    - match.end
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    linkageType: pythonLinkage
    raised:
    - InvalidHeaderValue
    - NegotiationError
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 6
    IfCount: 9
    argCount: 6
    argDefaultValues:
    - <ast.Constant object at 0x7f6f650dc5b0>
    - <ast.Constant object at 0x7f6f650dcbb0>
    - <ast.Constant object at 0x7f6f650dc8b0>
    - <ast.Constant object at 0x7f6f650dc100>
    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:
    - headers.get_all
    - websockets.utils.accept_key
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - frame.data.decode
    - websockets.headers.parse_subprotocol
    - headers.raw_items
    - typing.cast
    - asyncio.Protocol.pings.items
    - _OWS_re.match
    - typing.cast.abort
    - websockets.legacy.framing.Frame.read
    - _unquote_re.sub
    - websockets.headers.parse_extension_item_param
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - websockets.datastructures.Headers.__init__
    - asyncio.current_task
    - websockets.headers.build_host
    - ipaddress.ip_address
    - frames.Frame
    - websockets.frames.Close.check
    - <builtin>.any
    - websockets.asyncio.async_timeout.Timeout.update
    - websockets.headers.parse_list
    - websockets.datastructures.Headers.update
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.str
    - data.encode
    - websockets.headers.parse_upgrade
    - websockets.legacy.http.read_line
    - <builtin>.reversed
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_subprotocol_item
    - items.append
    - int.from_bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - <builtin>.hasattr
    - <builtin>.range
    - fragments.append
    - websockets.legacy.framing.Frame.write
    - request.encode
    - websockets.legacy.framing.prepare_ctrl
    - status_line.split
    - typing.cast.is_closing
    - websockets.headers.parse_token
    - websockets.legacy.handshake.build_request
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - asyncio.Protocol.logger.error
    - websockets.utils.apply_mask
    - <builtin>.int
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.write_eof
    - struct.pack
    - raw_reason.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - pong_waiter.done
    - websockets.headers.parse_upgrade_protocol
    - value.lower
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.headers.parse_extension_item
    - websockets.headers.parse_quoted_string
    - asyncio.Protocol.can_write_eof
    - frames.Opcode
    - struct.unpack
    - <builtin>.isinstance
    - websockets.legacy.handshake.check_response
    - _token_re.fullmatch
    - websockets.headers.parse_OWS
    - websockets.headers.build_extension
    - _quoted_string_re.match
    - match.end
    - asyncio.Protocol.logger.debug
    - typing.NamedTuple.__init__
    - websockets.asyncio.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - line.endswith
    - codecs.getincrementaldecoder
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - typing.cast.write_eof
    - user_pass.encode
    - decoder.decode
    - asyncio.Protocol.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - _protocol_re.match
    - <builtin>.super
    - request_headers.setdefault
    - websockets.legacy.client.WebSocketClientProtocol.process_extensions
    - accepted_extensions.append
    - websockets.headers.build_subprotocol
    - asyncio.shield
    - websockets.frames.Close.parse
    - asyncio.timeout
    - waiter.cancelled
    - time.perf_counter
    - websockets.utils.generate_key
    - random.getrandbits
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - pong_waiter.set_result
    - websockets.legacy.client.WebSocketClientProtocol.write_http_request
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - <builtin>.bytes
    - websockets.headers.parse_extension
    - hashlib.sha1
    - asyncio.Protocol.messages.append
    - stream.readline
    - new_frame.check
    - raw_value.decode
    - <builtin>.len
    - secrets.token_bytes
    - extension_factory.get_request_params
    - base64.b64encode
    - asyncio.Protocol.is_closing
    - raw_name.decode
    - extension.decode
    - <builtin>.sum
    - _token_re.match
    - websockets.legacy.client.WebSocketClientProtocol.read_http_response
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - loop.time
    - websockets.headers.peek_ahead
    - typing.cast.close
    - raw_value.strip
    - <builtin>.iter
    - match.group
    - parameters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - websockets.legacy.http.read_response
    - typing.cast.can_write_eof
    - close.check
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - _value_re.fullmatch
    - arg.raw_items
    - websockets.legacy.http.read_headers
    - asyncio.Protocol.abort
    - <builtin>.tuple
    - speedups.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - websockets.datastructures.Headers.raw_items
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - websockets.legacy.client.WebSocketClientProtocol.process_subprotocol
    - websockets.headers.parse_connection
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - line.split
    - websockets.headers.build_authorization_basic
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.headers.build_extension_item
    - extension_factory.process_response_params
    linkageType: pythonLinkage
    raised:
    - InvalidHeader
    - InvalidStatusCode
    - RedirectHandshake
    returnType: N/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:
    - kwargs.setdefault
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.headers.validate_subprotocols
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - asyncio.get_event_loop
    - logging.getLogger
    - typing.cast
    - warnings.warn
    - <builtin>.list
    - host.encode
    - kwargs.get
    - urllib.parse.quote
    - <builtin>.any
    - kwargs.pop
    - urllib.parse.urlparse
    - websockets.uri.parse_uri
    - _token_re.fullmatch
    - <builtin>.isinstance
    - functools.partial
    - uri.encode
    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:
    - host.encode
    - urllib.parse.urljoin
    - functools.partial
    - <builtin>.dict
    - urllib.parse.quote
    - urllib.parse.urlparse
    - websockets.uri.parse_uri
    - uri.encode
    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>.type
    - <builtin>.int
    - asyncio.sleep
    - traceback.format_exception_only
    - <builtin>.min
    - 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: 632
    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: 635
    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: 645
    functionName: websockets.legacy.client.Connect.__await__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - asyncio.get_running_loop
    - loop.time
    - asyncio.timeout
    - protocol.handshake
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - host.encode
    - websockets.legacy.client.Connect.handle_redirect
    - urllib.parse.urljoin
    - websockets.legacy.client.Connect.__await_impl__
    - urllib.parse.quote
    - websockets.asyncio.async_timeout.Timeout.update
    - urllib.parse.urlparse
    - websockets.uri.parse_uri
    - protocol.wait_closed
    - functools.partial
    - websockets.asyncio.async_timeout.timeout
    - <builtin>.dict
    - <builtin>.range
    - protocol.fail_connection
    - uri.encode
    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: 649
    functionName: websockets.legacy.client.Connect.__await_impl__
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - asyncio.get_running_loop
    - loop.time
    - asyncio.timeout
    - protocol.handshake
    - asyncio.current_task
    - websockets.asyncio.async_timeout.Timeout.__init__
    - websockets.asyncio.async_timeout.Timeout._reschedule
    - host.encode
    - websockets.legacy.client.Connect.handle_redirect
    - urllib.parse.urljoin
    - urllib.parse.quote
    - websockets.asyncio.async_timeout.Timeout.update
    - urllib.parse.urlparse
    - websockets.uri.parse_uri
    - protocol.wait_closed
    - functools.partial
    - websockets.asyncio.async_timeout.timeout
    - <builtin>.dict
    - <builtin>.range
    - protocol.fail_connection
    - uri.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: 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 0x7f6f657f5fd0>
    - <ast.Constant object at 0x7f6f657f5670>
    argNames:
    - path
    - uri
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 684
    functionName: websockets.legacy.client.unix_connect
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - kwargs.setdefault
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.headers.validate_subprotocols
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - asyncio.get_event_loop
    - typing.cast
    - logging.getLogger
    - warnings.warn
    - <builtin>.list
    - host.encode
    - kwargs.get
    - urllib.parse.quote
    - <builtin>.any
    - kwargs.pop
    - urllib.parse.urlparse
    - websockets.uri.parse_uri
    - _token_re.fullmatch
    - <builtin>.isinstance
    - functools.partial
    - websockets.legacy.client.Connect.__init__
    - uri.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: 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:
    - threading.Event
    - <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: 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 0x7f6f652537c0>
    - <ast.Constant object at 0x7f6f65253130>
    - <ast.Name object at 0x7f6f652539d0>
    - <ast.Constant object at 0x7f6f65253730>
    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.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - time.monotonic
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.connection.Connection.send_context
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.set
    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: 907
    functionName: websockets.sync.connection.Connection.send_context
    functionSourceFile: websockets.sync.connection
    functionUses: 11
    functionsReached:
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - time.monotonic
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.set
    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>.isinstance
    - <builtin>.super
    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 0x7f6f657f65b0>
    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:
    - os.pipe
    - logging.getLogger
    linkageType: pythonLinkage
    raised: []
    returnType: N/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.select
    - thread.start
    - poller.register
    - threading.Thread
    - selectors.DefaultSelector
    linkageType: pythonLinkage
    raised: []
    returnType: N/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 0x7f6f65a71af0>
    - <ast.Constant object at 0x7f6f65a71be0>
    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.sync.server.Server.__init__
    - kwargs.setdefault
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - socket.create_server
    - warnings.warn
    - websockets.headers.validate_subprotocols
    - os.pipe
    - <builtin>.any
    - ssl.wrap_socket
    - kwargs.pop
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    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.close
    - sock.settimeout
    - connection.close_socket
    - connection.handshake
    - <builtin>.super
    - connection.recv_events_thread.join
    - sock.setsockopt
    - connection.logger.error
    - websockets.sync.server.ServerConnection.__init__
    - time.monotonic
    - websockets.server.ServerProtocol.__init__
    - sock.do_handshake
    - sock.close
    - connection.start_keepalive
    - <builtin>.isinstance
    - websockets.sync.utils.Deadline.timeout
    - threading.Event
    - websockets.sync.utils.Deadline.__init__
    - <builtin>.setattr
    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 0x7f6f6530dee0>
    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.sync.server.Server.__init__
    - kwargs.setdefault
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - socket.create_server
    - warnings.warn
    - websockets.headers.validate_subprotocols
    - websockets.sync.server.serve
    - os.pipe
    - <builtin>.any
    - ssl.wrap_socket
    - kwargs.pop
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    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 0x7f6f654435b0>
    - <ast.Constant object at 0x7f6f65443880>
    - <ast.Constant object at 0x7f6f65443c40>
    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>.isinstance
    - websockets.sync.server.is_credentials
    - <builtin>.list
    - <builtin>.all
    - <builtin>.dict
    - typing.cast
    linkageType: pythonLinkage
    raised:
    - ValueError
    - 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: 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:
    - websockets.headers.parse_token
    - _token_re.match
    - scheme.lower
    - _token68_re.match
    - websockets.headers.build_www_authenticate_basic
    - base64.b64decode
    - websockets.headers.peek_ahead
    - match.group
    - hmac.compare_digest
    - websockets.headers.parse_authorization_basic
    - user_pass.split
    - _quote_re.sub
    - _quotable_re.fullmatch
    - websockets.headers.parse_token68
    - basic_credentials.encode
    - connection.respond
    - <builtin>.len
    - match.end
    - websockets.headers.build_quoted_string
    - websockets.sync.server.basic_auth.check_credentials
    - websockets.headers.parse_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: 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:
    - logging.LoggerAdapter
    - <builtin>.isinstance
    - queue.SimpleQueue
    - websockets.sync.messages.Assembler.__init__
    - threading.Lock
    - 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 0x7f6f651bf8b0>
    - <ast.Constant object at 0x7f6f651bf8e0>
    - <ast.Lambda object at 0x7f6f651bfb50>
    - <ast.Lambda object at 0x7f6f651bf670>
    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.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - time.monotonic
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.connection.Connection.send_context
    - websockets.sync.connection.Connection.close
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.set
    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 0x7f6f64fabe80>
    - <ast.Constant object at 0x7f6f64fab100>
    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.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - time.monotonic
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.connection.Connection.send_context
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.set
    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.messages.Assembler.close
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.messages.Assembler.get
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - time.monotonic
    - websockets.sync.messages.Assembler.get_next_frame
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.send_data
    - frames.append
    - queued.append
    - websockets.sync.connection.Connection.recv
    - websockets.sync.messages.Assembler.maybe_resume
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.reset_queue
    - websockets.sync.connection.Connection.send_context
    - data.decode
    - pong_waiter.set
    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 0x7f6f64cdb3a0>
    - <ast.Constant object at 0x7f6f64cdbf40>
    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.messages.Assembler.close
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.messages.Assembler.get
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - time.monotonic
    - websockets.sync.messages.Assembler.get_next_frame
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.connection.Connection.send_data
    - frames.append
    - queued.append
    - websockets.sync.messages.Assembler.maybe_resume
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.reset_queue
    - websockets.sync.connection.Connection.send_context
    - data.decode
    - pong_waiter.set
    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:
    - typing.overload
    - contextlib.contextmanager
    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 0x7f6f651cedf0>
    - <ast.Constant object at 0x7f6f651ce8e0>
    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.get_next_frame
    - frames.append
    - queued.append
    - websockets.sync.messages.Assembler.maybe_resume
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.reset_queue
    - websockets.sync.messages.Assembler.<lambda2>
    - 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 0x7f6f650dc7f0>
    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.messages.Assembler.get_next_frame
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - websockets.sync.messages.Assembler.maybe_resume
    - websockets.sync.utils.Deadline.timeout
    - decoder.decode
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.messages.Assembler.get_iter
    - websockets.sync.connection.Connection.send_context
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - time.monotonic
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    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 0x7f6f65a4de80>
    argNames:
    - self
    - decode
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 211
    functionName: websockets.sync.messages.Assembler.get_iter
    functionSourceFile: websockets.sync.messages
    functionUses: 1
    functionsReached:
    - websockets.sync.messages.Assembler.get_next_frame
    - websockets.sync.messages.Assembler.maybe_resume
    - decoder.decode
    - websockets.sync.messages.Assembler.<lambda2>
    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 0x7f6f65004040>
    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:
    - <builtin>.isinstance
    - <builtin>.iter
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - time.monotonic
    - message.encode
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - chunk.encode
    - websockets.sync.connection.Connection.send_context
    - <builtin>.next
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.set
    linkageType: pythonLinkage
    raised:
    - TypeError
    - ConcurrencyError
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 2
    IfCount: 4
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f6f65a5d400>
    - <ast.Constant object at 0x7f6f65a5d490>
    argNames:
    - self
    - data
    - ack_on_close
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 603
    functionName: websockets.sync.connection.Connection.ping
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - data.encode
    - <builtin>.isinstance
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - random.getrandbits
    - threading.Event
    - websockets.sync.utils.Deadline.timeout
    - struct.pack
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.connection.Connection.send_context
    - <builtin>.bytes
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - time.monotonic
    - websockets.sync.connection.Connection.set_recv_exc
    - websockets.sync.connection.Connection.send_data
    - pong_waiter.set
    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 0x7f6f64d81b80>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 662
    functionName: websockets.sync.connection.Connection.pong
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - data.encode
    - <builtin>.isinstance
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - time.monotonic
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.connection.Connection.send_context
    - <builtin>.bytes
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.set
    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: 689
    functionName: websockets.sync.connection.Connection.process_event
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - websockets.sync.messages.Assembler.maybe_pause
    - time.monotonic
    - ping_ids.append
    - websockets.sync.messages.Assembler.put
    - <builtin>.bytes
    - websockets.sync.messages.Assembler.<lambda1>
    - websockets.sync.connection.Connection.acknowledge_pings
    - pong_waiter.set
    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: 273
    functionName: websockets.sync.messages.Assembler.put
    functionSourceFile: websockets.sync.messages
    functionUses: 1
    functionsReached:
    - websockets.sync.messages.Assembler.<lambda1>
    - websockets.sync.messages.Assembler.maybe_pause
    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: 703
    functionName: websockets.sync.connection.Connection.acknowledge_pings
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - time.monotonic
    - ping_ids.append
    - 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: 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: 736
    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: 749
    functionName: websockets.sync.connection.Connection.keepalive
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.wait
    - struct.pack
    - websockets.sync.connection.Connection.ping
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - time.monotonic
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - random.getrandbits
    - <builtin>.bytes
    - websockets.sync.connection.Connection.send_data
    - data.encode
    - <builtin>.isinstance
    - websockets.sync.utils.Deadline.timeout
    - threading.Event
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.connection.Connection.send_context
    - 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: 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: 788
    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: 3
    functionLinenumber: 801
    functionName: websockets.sync.connection.Connection.recv_events
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - time.monotonic
    - websockets.sync.utils.Deadline.timeout
    - <builtin>.super
    - websockets.sync.client.ClientConnection.process_event
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.server.ServerConnection.process_event
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.set
    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: 1038
    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: 1016
    functionName: websockets.sync.connection.Connection.send_data
    functionSourceFile: websockets.sync.connection
    functionUses: 13
    functionsReached:
    - time.monotonic
    - websockets.sync.utils.Deadline.timeout
    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: 103
    functionName: websockets.sync.client.ClientConnection.process_event
    functionSourceFile: websockets.sync.client
    functionUses: 1
    functionsReached:
    - <builtin>.isinstance
    - <builtin>.super
    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: 1049
    functionName: websockets.sync.connection.Connection.close_socket
    functionSourceFile: websockets.sync.connection
    functionUses: 13
    functionsReached:
    - websockets.sync.messages.Assembler.close
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - 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: 324
    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 0x7f6f65a47700>
    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: 311
    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: 298
    functionName: websockets.sync.messages.Assembler.maybe_pause
    functionSourceFile: websockets.sync.messages
    functionUses: 2
    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: 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.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: 96
    functionName: websockets.sync.router.route
    functionSourceFile: websockets.sync.router
    functionUses: 1
    functionsReached:
    - websockets.sync.server.Server.__init__
    - kwargs.setdefault
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - socket.create_server
    - warnings.warn
    - websockets.headers.validate_subprotocols
    - websockets.sync.server.serve
    - os.pipe
    - <builtin>.any
    - ssl.wrap_socket
    - kwargs.pop
    - websockets.sync.router.Router.__init__
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    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 0x7f6f65a5bca0>
    argNames:
    - url_map
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 198
    functionName: websockets.sync.router.unix_route
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached:
    - websockets.sync.server.Server.__init__
    - kwargs.setdefault
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.list
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - socket.create_server
    - warnings.warn
    - websockets.headers.validate_subprotocols
    - websockets.sync.server.serve
    - os.pipe
    - <builtin>.any
    - ssl.wrap_socket
    - websockets.sync.router.route
    - kwargs.pop
    - websockets.sync.router.Router.__init__
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - logging.getLogger
    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 0x7f6f65440a60>
    - <ast.Constant object at 0x7f6f65440610>
    argNames:
    - self
    - url_map
    - server_name
    - url_scheme
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 43
    functionName: websockets.sync.router.Router.__init__
    functionSourceFile: websockets.sync.router
    functionUses: 2
    functionsReached: []
    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: 55
    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: 63
    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: 68
    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: 71
    functionName: websockets.sync.router.Router.route_request
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached:
    - url_map_adapter.match
    - connection.respond
    - websockets.sync.router.Router.get_server_name
    - websockets.sync.router.Router.redirect
    - urllib.parse.urlparse
    - websockets.sync.router.Router.not_found
    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: 92
    functionName: websockets.sync.router.Router.handler
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached:
    - connection.handler
    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: 188
    functionName: websockets.sync.router.route.process_request
    functionSourceFile: websockets.sync.router
    functionUses: 0
    functionsReached:
    - router.route_request
    linkageType: 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: 54
    functionName: websockets.sync.client.ClientConnection.__init__
    functionSourceFile: websockets.sync.client
    functionUses: 2
    functionsReached:
    - threading.Event
    - <builtin>.super
    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 0x7f6f65161160>
    - <ast.Name object at 0x7f6f65161670>
    - <ast.Constant object at 0x7f6f65161e20>
    argNames:
    - self
    - additional_headers
    - user_agent_header
    - timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 75
    functionName: websockets.sync.client.ClientConnection.handshake
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.connection.Connection.acknowledge_pending_pings
    - time.monotonic
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.connection.Connection.send_context
    - <builtin>.TimeoutError
    - websockets.sync.messages.Assembler.<lambda2>
    - websockets.sync.messages.Assembler.close
    - websockets.sync.connection.Connection.send_data
    - websockets.sync.connection.Connection.set_recv_exc
    - pong_waiter.set
    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: 117
    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: 129
    functionName: websockets.sync.client.connect
    functionSourceFile: websockets.sync.client
    functionUses: 1
    functionsReached:
    - urllib.request.getproxies
    - websockets.headers.validate_subprotocols
    - ssl.wrap_socket
    - ssl.MemoryBIO
    - typing.cast
    - proxies.get
    - websockets.datastructures.Headers.__init__
    - websockets.headers.build_host
    - ipaddress.ip_address
    - websockets.http11.read_body
    - socket.create_connection
    - urllib.parse.quote
    - <builtin>.any
    - websockets.uri.parse_uri
    - websockets.datastructures.Headers.update
    - <builtin>.str
    - websockets.http11.parse_line
    - python_socks.sync.Proxy
    - socket.socket
    - <builtin>.range
    - uri.encode
    - websockets.streams.StreamReader.feed_data
    - status_line.split
    - headers.get
    - websockets.uri.get_proxy
    - websockets.streams.StreamReader.read_exact
    - typing.cast.sendall
    - websockets.streams.StreamReader.__init__
    - <builtin>.int
    - raw_reason.decode
    - ssl_context.wrap_bio
    - <builtin>.list
    - <builtin>.bytearray
    - sock.sendall
    - websockets.streams.StreamReader.feed_eof
    - kwargs.pop
    - raw_chunk_size.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.sync.client.SSLSSLSocket.run_io
    - websockets.http11.Response.parse
    - websockets.sync.utils.Deadline.timeout
    - threading.Event
    - websockets.sync.utils.Deadline.__init__
    - websockets.streams.StreamReader.read_line
    - line.endswith
    - user_pass.encode
    - sock.settimeout
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - websockets.uri.parse_proxy
    - websockets.http11.parse_headers
    - websockets.sync.client.prepare_connect_request
    - <builtin>.super
    - connection.recv_events_thread.join
    - websockets.sync.client.connect_socks_proxy
    - warnings.warn
    - sock.close
    - websockets.utils.generate_key
    - host.encode
    - <builtin>.next
    - connection.start_keepalive
    - urllib.parse.urlparse
    - raw_value.decode
    - sock.recv
    - <builtin>.len
    - secrets.token_bytes
    - websockets.streams.StreamReader.read_to_eof
    - ssl.create_default_context
    - base64.b64encode
    - proxy.startswith
    - raw_name.decode
    - kwargs.setdefault
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - typing.cast.setsockopt
    - websockets.sync.client.SSLSSLSocket.__init__
    - connection.close_socket
    - connection.handshake
    - proxy.encode
    - typing.cast.close
    - python_socks.sync.Proxy.connect
    - raw_value.strip
    - websockets.sync.client.connect_http_proxy
    - urllib.request.proxy_bypass
    - websockets.sync.client.ClientConnection.__init__
    - time.monotonic
    - websockets.datastructures.Headers.serialize
    - chunk_size_line.split
    - typing.cast.recv
    - _value_re.fullmatch
    - typing.cast.settimeout
    - arg.raw_items
    - typing.cast.connect
    - <builtin>.tuple
    - line.split
    - websockets.headers.build_authorization_basic
    - websockets.client.ClientProtocol.__init__
    - websockets.sync.client.read_connect_response
    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: 453
    functionName: websockets.sync.client.connect_socks_proxy
    functionSourceFile: websockets.sync.client
    functionUses: 2
    functionsReached:
    - kwargs.setdefault
    - python_socks.sync.Proxy.connect
    - python_socks.sync.Proxy
    - websockets.sync.utils.Deadline.timeout
    - time.monotonic
    linkageType: pythonLinkage
    raised:
    - ImportError
    - ProxyError
    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: 532
    functionName: websockets.sync.client.connect_http_proxy
    functionSourceFile: websockets.sync.client
    functionUses: 2
    functionsReached:
    - raw_name.decode
    - kwargs.setdefault
    - websockets.streams.StreamReader.feed_data
    - status_line.split
    - user_pass.encode
    - sock.settimeout
    - headers.get
    - websockets.streams.StreamReader.read_exact
    - <builtin>.range
    - ssl.wrap_socket
    - websockets.http11.parse_headers
    - websockets.sync.client.prepare_connect_request
    - <builtin>.super
    - websockets.streams.StreamReader.__init__
    - raw_value.strip
    - <builtin>.int
    - raw_reason.decode
    - time.monotonic
    - websockets.datastructures.Headers.__init__
    - websockets.headers.build_host
    - sock.close
    - ipaddress.ip_address
    - <builtin>.bytearray
    - websockets.datastructures.Headers.serialize
    - chunk_size_line.split
    - websockets.http11.read_body
    - _value_re.fullmatch
    - sock.sendall
    - socket.create_connection
    - websockets.streams.StreamReader.feed_eof
    - <builtin>.next
    - raw_chunk_size.decode
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - sock.recv
    - <builtin>.isinstance
    - _token_re.fullmatch
    - websockets.http11.Response.parse
    - <builtin>.str
    - websockets.http11.parse_line
    - <builtin>.len
    - websockets.sync.utils.Deadline.timeout
    - websockets.streams.StreamReader.read_to_eof
    - ssl.create_default_context
    - line.split
    - websockets.headers.build_authorization_basic
    - base64.b64encode
    - websockets.sync.client.read_connect_response
    - websockets.streams.StreamReader.read_line
    - line.endswith
    linkageType: pythonLinkage
    raised: []
    returnType: N/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 0x7f6f65448c10>
    argNames:
    - self
    - sock
    - ssl_context
    - server_hostname
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 584
    functionName: websockets.sync.client.SSLSSLSocket.__init__
    functionSourceFile: websockets.sync.client
    functionUses: 2
    functionsReached:
    - ssl_context.wrap_bio
    - websockets.sync.client.SSLSSLSocket.run_io
    - typing.cast.recv
    - typing.cast.sendall
    - ssl.MemoryBIO
    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 0x7f6f64ee1040>
    - <ast.Constant object at 0x7f6f64ee1130>
    argNames:
    - path
    - uri
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 394
    functionName: websockets.sync.client.unix_connect
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - urllib.request.getproxies
    - websockets.headers.validate_subprotocols
    - ssl.wrap_socket
    - ssl.MemoryBIO
    - typing.cast
    - proxies.get
    - websockets.datastructures.Headers.__init__
    - websockets.headers.build_host
    - ipaddress.ip_address
    - websockets.http11.read_body
    - socket.create_connection
    - urllib.parse.quote
    - <builtin>.any
    - websockets.uri.parse_uri
    - websockets.datastructures.Headers.update
    - <builtin>.str
    - websockets.http11.parse_line
    - python_socks.sync.Proxy
    - socket.socket
    - <builtin>.range
    - uri.encode
    - websockets.streams.StreamReader.feed_data
    - status_line.split
    - headers.get
    - websockets.uri.get_proxy
    - websockets.streams.StreamReader.read_exact
    - typing.cast.sendall
    - websockets.streams.StreamReader.__init__
    - <builtin>.int
    - raw_reason.decode
    - ssl_context.wrap_bio
    - <builtin>.list
    - <builtin>.bytearray
    - sock.sendall
    - websockets.streams.StreamReader.feed_eof
    - kwargs.pop
    - raw_chunk_size.decode
    - _token_re.fullmatch
    - <builtin>.isinstance
    - websockets.sync.client.SSLSSLSocket.run_io
    - websockets.http11.Response.parse
    - websockets.sync.utils.Deadline.timeout
    - threading.Event
    - websockets.sync.utils.Deadline.__init__
    - websockets.streams.StreamReader.read_line
    - line.endswith
    - user_pass.encode
    - sock.settimeout
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - websockets.uri.parse_proxy
    - websockets.http11.parse_headers
    - websockets.sync.client.prepare_connect_request
    - <builtin>.super
    - connection.recv_events_thread.join
    - websockets.sync.client.connect_socks_proxy
    - warnings.warn
    - websockets.sync.client.connect
    - sock.close
    - websockets.utils.generate_key
    - host.encode
    - kwargs.get
    - <builtin>.next
    - connection.start_keepalive
    - urllib.parse.urlparse
    - raw_value.decode
    - sock.recv
    - <builtin>.len
    - secrets.token_bytes
    - websockets.streams.StreamReader.read_to_eof
    - ssl.create_default_context
    - base64.b64encode
    - proxy.startswith
    - raw_name.decode
    - kwargs.setdefault
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - typing.cast.setsockopt
    - websockets.sync.client.SSLSSLSocket.__init__
    - connection.close_socket
    - connection.handshake
    - proxy.encode
    - typing.cast.close
    - python_socks.sync.Proxy.connect
    - raw_value.strip
    - websockets.sync.client.connect_http_proxy
    - urllib.request.proxy_bypass
    - websockets.sync.client.ClientConnection.__init__
    - time.monotonic
    - websockets.datastructures.Headers.serialize
    - chunk_size_line.split
    - typing.cast.recv
    - _value_re.fullmatch
    - typing.cast.settimeout
    - arg.raw_items
    - typing.cast.connect
    - <builtin>.tuple
    - line.split
    - websockets.headers.build_authorization_basic
    - websockets.client.ClientProtocol.__init__
    - websockets.sync.client.read_connect_response
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 0
    IfCount: 2
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f6f65808940>
    argNames:
    - proxy
    - ws_uri
    - user_agent_header
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 479
    functionName: websockets.sync.client.prepare_connect_request
    functionSourceFile: websockets.sync.client
    functionUses: 3
    functionsReached:
    - websockets.headers.build_host
    - <builtin>.str
    - <builtin>.isinstance
    - ipaddress.ip_address
    - websockets.datastructures.Headers.serialize
    - user_pass.encode
    - websockets.headers.build_authorization_basic
    - base64.b64encode
    - arg.raw_items
    - websockets.datastructures.Headers.__init__
    - <builtin>.super
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    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: 498
    functionName: websockets.sync.client.read_connect_response
    functionSourceFile: websockets.sync.client
    functionUses: 3
    functionsReached:
    - raw_name.decode
    - websockets.streams.StreamReader.feed_data
    - status_line.split
    - sock.settimeout
    - headers.get
    - websockets.streams.StreamReader.read_exact
    - websockets.http11.parse_headers
    - <builtin>.super
    - websockets.streams.StreamReader.__init__
    - raw_value.strip
    - <builtin>.int
    - raw_reason.decode
    - time.monotonic
    - websockets.datastructures.Headers.__init__
    - <builtin>.bytearray
    - chunk_size_line.split
    - websockets.http11.read_body
    - _value_re.fullmatch
    - websockets.streams.StreamReader.feed_eof
    - <builtin>.next
    - raw_chunk_size.decode
    - arg.raw_items
    - <builtin>.tuple
    - websockets.datastructures.Headers.update
    - raw_value.decode
    - sock.recv
    - <builtin>.isinstance
    - _token_re.fullmatch
    - websockets.http11.Response.parse
    - websockets.http11.parse_line
    - <builtin>.len
    - websockets.sync.utils.Deadline.timeout
    - websockets.streams.StreamReader.read_to_eof
    - line.split
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    - line.endswith
    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: 600
    functionName: websockets.sync.client.SSLSSLSocket.run_io
    functionSourceFile: websockets.sync.client
    functionUses: 6
    functionsReached:
    - typing.cast.sendall
    - typing.cast.recv
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 630
    functionName: websockets.sync.client.SSLSSLSocket.recv
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - typing.cast.sendall
    - websockets.sync.client.SSLSSLSocket.run_io
    - typing.cast.recv
    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: 636
    functionName: websockets.sync.client.SSLSSLSocket.send
    functionSourceFile: websockets.sync.client
    functionUses: 1
    functionsReached:
    - typing.cast.sendall
    - websockets.sync.client.SSLSSLSocket.run_io
    - typing.cast.recv
    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: 639
    functionName: websockets.sync.client.SSLSSLSocket.sendall
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - view.cast
    - <builtin>.memoryview
    - websockets.sync.client.SSLSSLSocket.run_io
    - <builtin>.len
    - typing.cast.recv
    - websockets.sync.client.SSLSSLSocket.send
    - 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: 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: 650
    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_request_parser':
  - 41
  - 42
  - 6
  '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_request_parser.main':
  - 37
  - 38
  '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_request_parser.test_one_input':
  - 13
  - 14
  - 15
  - 17
  - 22
  - 24
  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:
  - 38
  websockets.asyncio.client.ClientConnection:
  - 42
  websockets.asyncio.client.ClientConnection.__init__:
  - 85
  - 77
  websockets.asyncio.client.ClientConnection.handshake:
  - 96
  - 97
  - 98
  - 99
  - 100
  - 101
  - 102
  - 104
  - 113
  - 92
  websockets.asyncio.client.ClientConnection.process_event:
  - 128
  - 117
  - 122
  - 123
  - 125
  websockets.asyncio.client.HTTPProxyConnection.__init__:
  - 755
  - 756
  - 764
  - 763
  websockets.asyncio.client.HTTPProxyConnection.connection_lost:
  - 800
  - 798
  - 799
  websockets.asyncio.client.HTTPProxyConnection.connection_made:
  - 785
  - 786
  - 783
  websockets.asyncio.client.HTTPProxyConnection.data_received:
  - 790
  - 791
  websockets.asyncio.client.HTTPProxyConnection.eof_received:
  - 794
  - 795
  websockets.asyncio.client.HTTPProxyConnection.run_parser:
  - 768
  - 771
  - 772
  - 774
  - 776
  - 780
  websockets.asyncio.client.connect:
  - 178
  websockets.asyncio.client.connect.__aexit__:
  - 597
  websockets.asyncio.client.connect.__aiter__:
  - 613
  - 619
  - 621
  - 626
  - 627
  - 628
  - 629
  - 633
  - 635
  - 606
  websockets.asyncio.client.connect.__await__:
  - 537
  websockets.asyncio.client.connect.__await_impl__:
  - 545
  - 573
  - 550
  - 559
  - 561
  - 563
  - 567
  - 541
  - 542
  - 543
  websockets.asyncio.client.connect.__init__:
  - 331
  - 332
  - 334
  - 335
  - 336
  - 339
  - 340
  - 342
  websockets.asyncio.client.connect.__init__.protocol_factory:
  - 347
  - 356
  websockets.asyncio.client.connect.create_connection:
  - 385
  - 387
  - 388
  - 393
  - 394
  - 395
  - 396
  - 399
  - 402
  - 403
  - 404
  - 405
  - 406
  - 408
  - 411
  - 414
  - 419
  - 422
  - 423
  - 425
  - 430
  - 431
  - 432
  - 437
  - 442
  - 449
  - 450
  - 451
  - 452
  - 453
  - 454
  - 455
  - 460
  - 465
  - 466
  - 467
  - 469
  - 376
  - 377
  - 378
  - 380
  - 383
  websockets.asyncio.client.connect.create_connection.factory:
  - 391
  websockets.asyncio.client.connect.process_redirect:
  - 480
  - 515
  - 516
  - 522
  - 523
  - 524
  - 505
  - 494
  - 495
  - 496
  - 526
  - 499
  - 500
  - 473
  - 506
  - 509
  - 479
  websockets.asyncio.client.connect_http_proxy:
  - 809
  - 810
  - 818
  - 820
  websockets.asyncio.client.connect_http_proxy.<lambda1>:
  - 810
  websockets.asyncio.client.connect_socks_proxy:
  - 705
  - 706
  - 718
  websockets.asyncio.client.prepare_connect_request:
  - 737
  - 741
  - 730
  - 731
  - 732
  - 733
  - 735
  websockets.asyncio.client.process_exception:
  - 162
  - 164
  - 132
  - 166
  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:
  - 801
  - 803
  - 785
  - 794
  - 795
  - 796
  websockets.asyncio.connection.Connection.acknowledge_pings:
  - 769
  - 770
  - 772
  - 773
  - 774
  - 781
  - 755
  - 760
  - 763
  websockets.asyncio.connection.Connection.close:
  - 644
  - 620
  - 637
  - 638
  - 639
  websockets.asyncio.connection.Connection.close_code:
  - 192
  websockets.asyncio.connection.Connection.close_reason:
  - 204
  websockets.asyncio.connection.Connection.connection_lost:
  - 1024
  - 1029
  - 1032
  - 1034
  - 1035
  - 1036
  - 1037
  - 1039
  - 1014
  - 1017
  - 1020
  - 1021
  - 1023
  websockets.asyncio.connection.Connection.connection_made:
  - 1008
  - 1002
  - 1003
  websockets.asyncio.connection.Connection.data_received:
  - 1088
  - 1089
  - 1091
  - 1094
  - 1095
  - 1096
  - 1098
  - 1100
  - 1078
  - 1081
  - 1085
  - 1087
  websockets.asyncio.connection.Connection.drain:
  - 1062
  - 1063
  - 1066
  - 1067
  - 1068
  - 1070
  - 1072
  websockets.asyncio.connection.Connection.eof_received:
  - 1120
  - 1104
  - 1107
  - 1111
  - 1118
  websockets.asyncio.connection.Connection.keepalive:
  - 836
  - 806
  - 838
  - 839
  - 840
  - 841
  - 817
  - 850
  - 824
  - 825
  - 826
  - 828
  - 830
  websockets.asyncio.connection.Connection.local_address:
  - 152
  - 143
  websockets.asyncio.connection.Connection.ping:
  - 704
  - 706
  - 709
  - 710
  - 690
  - 691
  - 692
  - 661
  - 693
  - 694
  - 697
  - 699
  websockets.asyncio.connection.Connection.pong:
  - 736
  - 714
  - 728
  - 729
  - 730
  - 731
  - 735
  websockets.asyncio.connection.Connection.process_event:
  - 741
  - 747
  - 748
  - 749
  - 751
  - 752
  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:
  - 1052
  - 1053
  - 1054
  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:
  - 896
  - 905
  - 911
  - 913
  - 916
  - 917
  - 919
  - 920
  - 932
  - 933
  - 934
  - 939
  - 941
  - 942
  - 947
  - 951
  - 955
  - 956
  - 958
  - 866
  - 888
  - 891
  websockets.asyncio.connection.Connection.send_data:
  - 962
  - 969
  - 970
  - 971
  - 974
  - 975
  - 976
  - 980
  - 985
  - 986
  - 987
  websockets.asyncio.connection.Connection.set_recv_exc:
  - 994
  - 990
  websockets.asyncio.connection.Connection.start_keepalive:
  - 857
  - 858
  - 853
  websockets.asyncio.connection.Connection.state:
  - 169
  websockets.asyncio.connection.Connection.subprotocol:
  - 182
  websockets.asyncio.connection.Connection.wait_closed:
  - 658
  - 651
  websockets.asyncio.connection.broadcast:
  - 1185
  - 1187
  - 1188
  - 1193
  - 1194
  - 1198
  - 1201
  - 1204
  - 1205
  - 1206
  - 1207
  - 1209
  - 1217
  - 1218
  - 1220
  - 1221
  - 1223
  - 1225
  - 1227
  - 1229
  - 1234
  - 1140
  websockets.asyncio.messages:
  - 16
  - 18
  websockets.asyncio.messages.Assembler:
  - 70
  websockets.asyncio.messages.Assembler.__init__:
  - 99
  - 101
  - 103
  - 104
  - 106
  - 93
  websockets.asyncio.messages.Assembler.close:
  - 314
  - 308
  - 301
  websockets.asyncio.messages.Assembler.get:
  - 160
  - 129
  - 162
  - 169
  - 173
  - 175
  - 177
  - 184
  - 150
  - 182
  - 120
  - 183
  - 123
  - 126
  - 159
  websockets.asyncio.messages.Assembler.get_iter:
  - 192
  - 257
  - 258
  - 195
  - 260
  - 198
  - 234
  - 238
  - 240
  - 242
  - 243
  - 244
  - 246
  - 254
  - 189
  - 222
  - 255
  websockets.asyncio.messages.Assembler.maybe_pause:
  - 281
  - 287
  - 285
  - 279
  websockets.asyncio.messages.Assembler.maybe_resume:
  - 296
  - 290
  - 292
  - 298
  websockets.asyncio.messages.Assembler.put:
  - 272
  - 265
  - 275
  - 276
  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:
  - 41
  websockets.asyncio.router.Router.__init__:
  - 52
  websockets.asyncio.router.Router.get_server_name:
  - 58
  websockets.asyncio.router.Router.handler:
  - 93
  - 94
  websockets.asyncio.router.Router.not_found:
  - 69
  websockets.asyncio.router.Router.redirect:
  - 64
  websockets.asyncio.router.Router.route_request:
  - 74
  - 75
  - 76
  - 80
  - 81
  - 86
  - 88
  websockets.asyncio.router.route:
  - 104
  - 170
  - 202
  - 173
  - 176
  - 184
  - 185
  websockets.asyncio.router.route.process_request:
  - 200
  - 195
  - 196
  - 198
  websockets.asyncio.router.unix_route:
  - 209
  - 220
  websockets.asyncio.server.Server:
  - 229
  websockets.asyncio.server.Server.__aexit__:
  - 560
  - 559
  websockets.asyncio.server.Server.__init__:
  - 290
  - 291
  - 284
  - 301
  websockets.asyncio.server.Server._close:
  - 448
  - 450
  - 454
  - 459
  - 460
  - 463
  - 432
  - 467
  - 468
  - 471
  - 440
  - 473
  - 443
  websockets.asyncio.server.Server.close:
  - 409
  - 426
  - 427
  - 428
  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:
  - 497
  - 501
  websockets.asyncio.server.Server.is_serving:
  - 504
  - 508
  websockets.asyncio.server.Server.serve_forever:
  - 540
  - 525
  websockets.asyncio.server.Server.sockets:
  - 544
  websockets.asyncio.server.Server.start_connection_handler:
  - 406
  - 398
  websockets.asyncio.server.Server.start_serving:
  - 522
  - 511
  websockets.asyncio.server.Server.wait_closed:
  - 476
  - 494
  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:
  - 878
  - 913
  - 916
  - 917
  - 918
  - 919
  - 920
  - 921
  - 926
  websockets.asyncio.server.basic_auth.check_credentials:
  - 933
  websockets.asyncio.server.basic_auth.process_request:
  - 961
  - 965
  - 968
  - 969
  - 972
  - 941
  - 973
  - 977
  - 951
  - 955
  - 959
  websockets.asyncio.server.is_credentials:
  - 870
  websockets.asyncio.server.serve:
  - 565
  websockets.asyncio.server.serve.__aexit__:
  - 824
  - 823
  websockets.asyncio.server.serve.__await__:
  - 830
  websockets.asyncio.server.serve.__await_impl__:
  - 834
  websockets.asyncio.server.serve.__init__:
  - 737
  - 738
  - 739
  - 805
  - 742
  - 806
  - 807
  - 745
  - 810
  - 754
  - 755
  - 756
  - 757
  - 734
  - 735
  websockets.asyncio.server.serve.__init__.factory:
  - 760
  - 785
  - 794
  - 772
  websockets.asyncio.server.serve.__init__.factory.protocol_select_subprotocol:
  - 782
  websockets.asyncio.server.unix_serve:
  - 861
  - 847
  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:
  - 181
  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:
  - 320
  - 297
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__:
  - 336
  - 342
  - 330
  - 334
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.get_request_params:
  - 355
  - 359
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.process_response_params:
  - 416
  - 450
  - 451
  - 388
  - 454
  - 458
  - 460
  - 429
  - 463
  - 433
  - 402
  - 371
  - 403
  - 435
  - 377
  - 415
  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
  - 132
  - 103
  - 135
  - 154
  - 140
  - 109
  - 110
  - 141
  - 112
  - 144
  - 146
  - 151
  - 120
  - 122
  - 126
  - 127
  websockets.extensions.permessage_deflate.PerMessageDeflate.encode:
  - 194
  - 165
  - 197
  - 200
  - 170
  - 176
  - 178
  - 179
  - 185
  - 186
  - 191
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory:
  - 497
  - 523
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__:
  - 547
  - 534
  - 538
  - 540
  - 542
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.process_request_params:
  - 609
  - 610
  - 580
  - 644
  - 645
  - 649
  - 650
  - 652
  - 654
  - 623
  - 658
  - 627
  - 596
  - 597
  - 565
  - 629
  - 664
  - 571
  websockets.extensions.permessage_deflate._build_parameters:
  - 224
  - 225
  - 226
  - 227
  - 228
  - 229
  - 230
  - 231
  - 217
  - 222
  - 223
  websockets.extensions.permessage_deflate._extract_parameters:
  - 259
  - 260
  - 262
  - 267
  - 268
  - 238
  - 270
  - 271
  - 275
  - 276
  - 278
  - 280
  - 281
  - 250
  - 251
  - 252
  - 254
  websockets.extensions.permessage_deflate.enable_client_permessage_deflate:
  - 482
  - 484
  - 488
  - 489
  - 475
  websockets.extensions.permessage_deflate.enable_server_permessage_deflate:
  - 677
  - 684
  - 686
  - 690
  - 691
  websockets.frames.Close:
  - 355
  websockets.frames.Close.__str__:
  - 368
  - 372
  - 374
  - 377
  - 380
  websockets.frames.Close.check:
  - 425
  - 418
  websockets.frames.Close.parse:
  - 387
  - 398
  - 399
  - 400
  - 401
  - 402
  - 404
  - 405
  websockets.frames.Close.serialize:
  - 410
  - 414
  - 415
  websockets.frames.CloseCode:
  - 56
  websockets.frames.Frame:
  - 150
  - 126
  websockets.frames.Frame.__str__:
  - 161
  - 194
  - 164
  - 165
  - 198
  - 169
  - 171
  - 172
  - 173
  - 174
  - 175
  - 182
  - 153
  - 186
  - 188
  - 189
  - 158
  websockets.frames.Frame.check:
  - 336
  - 343
  - 346
  - 347
  - 349
  websockets.frames.Frame.parse:
  - 257
  - 258
  - 261
  - 262
  - 263
  - 265
  - 267
  - 269
  - 270
  - 272
  - 211
  - 231
  - 232
  - 241
  - 245
  - 249
  - 250
  - 251
  - 252
  - 253
  - 254
  - 255
  websockets.frames.Frame.serialize:
  - 282
  - 294
  - 296
  - 298
  - 299
  - 301
  - 314
  - 315
  - 316
  - 317
  - 318
  - 320
  - 322
  - 323
  - 324
  - 327
  - 328
  - 331
  - 333
  websockets.frames.Opcode:
  - 38
  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
  - 282
  - 269
  - 273
  - 275
  - 244
  - 277
  - 279
  - 249
  - 218
  - 252
  - 253
  - 286
  websockets.http11.Response.serialize:
  - 296
  - 289
  - 295
  websockets.http11.d:
  - 51
  - 55
  websockets.http11.parse_headers:
  - 353
  - 356
  - 360
  - 331
  - 363
  - 365
  - 366
  - 369
  - 370
  - 350
  - 351
  websockets.http11.parse_line:
  - 304
  - 323
  - 319
  websockets.http11.read_body:
  - 390
  - 398
  - 399
  - 404
  - 405
  - 407
  - 408
  - 410
  - 411
  - 413
  - 417
  - 418
  - 421
  - 424
  - 426
  - 428
  - 429
  - 431
  - 435
  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__:
  - 641
  websockets.legacy.client.Connect.__aiter__:
  - 611
  - 613
  - 615
  - 617
  - 619
  - 621
  - 624
  - 601
  - 605
  - 606
  - 607
  websockets.legacy.client.Connect.__await__:
  - 647
  websockets.legacy.client.Connect.__await_impl__:
  - 650
  - 651
  - 652
  - 654
  - 662
  - 663
  - 664
  - 667
  - 668
  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:
  - 689
  - 705
  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__:
  - 39
  websockets.legacy.framing.Frame.check:
  - 42
  websockets.legacy.framing.Frame.new_frame:
  - 29
  websockets.legacy.framing.Frame.read:
  - 53
  - 71
  - 72
  - 81
  - 85
  - 89
  - 90
  - 91
  - 92
  - 93
  - 94
  - 95
  - 97
  - 98
  - 101
  - 102
  - 103
  - 105
  - 107
  - 109
  - 110
  - 112
  - 114
  websockets.legacy.framing.Frame.write:
  - 130
  - 147
  websockets.legacy.framing.parse_close:
  - 216
  - 205
  websockets.legacy.framing.prepare_ctrl:
  - 192
  - 175
  - 189
  - 190
  - 191
  websockets.legacy.framing.prepare_data:
  - 168
  - 167
  - 166
  - 151
  websockets.legacy.framing.serialize_close:
  - 225
  - 221
  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__:
  - 472
  - 484
  websockets.legacy.protocol.WebSocketCommonProtocol.__init__:
  - 265
  - 268
  - 279
  - 177
  - 178
  - 181
  - 184
  - 186
  - 190
  - 191
  - 193
  - 204
  - 205
  - 208
  - 209
  - 210
  - 211
  - 214
  - 227
  - 233
  - 240
  - 241
  - 245
  - 247
  - 249
  - 254
  websockets.legacy.protocol.WebSocketCommonProtocol._drain:
  - 321
  - 322
  - 329
  - 330
  - 317
  - 318
  - 319
  websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper:
  - 305
  - 307
  - 310
  - 311
  - 313
  websockets.legacy.protocol.WebSocketCommonProtocol.abort_pings:
  - 1443
  - 1428
  - 1435
  - 1437
  - 1438
  websockets.legacy.protocol.WebSocketCommonProtocol.close:
  - 772
  - 773
  - 778
  - 754
  - 755
  - 760
  - 730
  websockets.legacy.protocol.WebSocketCommonProtocol.close_code:
  - 448
  - 437
  - 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
  - 466
  - 455
  websockets.legacy.protocol.WebSocketCommonProtocol.close_transport:
  - 1344
  - 1318
  - 1325
  - 1329
  - 1330
  - 1331
  - 1333
  - 1335
  - 1336
  - 1339
  - 1340
  - 1341
  websockets.legacy.protocol.WebSocketCommonProtocol.closed:
  - 426
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc:
  - 881
  - 893
  - 887
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_lost:
  - 1501
  - 1504
  - 1474
  - 1476
  - 1481
  - 1483
  - 1485
  - 1486
  - 1487
  - 1489
  - 1493
  - 1496
  - 1499
  - 1469
  - 1502
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_made:
  - 1448
  - 1466
  - 1461
  - 1462
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_open:
  - 333
  - 342
  - 343
  - 345
  - 347
  - 349
  websockets.legacy.protocol.WebSocketCommonProtocol.data_received:
  - 1521
  websockets.legacy.protocol.WebSocketCommonProtocol.drain:
  - 1177
  - 1180
  - 1174
  websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open:
  - 929
  - 903
  - 910
  - 914
  - 915
  - 920
  - 923
  websockets.legacy.protocol.WebSocketCommonProtocol.eof_received:
  - 1536
  - 1524
  websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection:
  - 1412
  - 1413
  - 1388
  - 1389
  - 1421
  - 1424
  - 1393
  - 1394
  - 1425
  - 1400
  - 1401
  - 1370
  websockets.legacy.protocol.WebSocketCommonProtocol.host:
  - 354
  websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping:
  - 1249
  - 1250
  - 1219
  - 1251
  - 1229
  - 1261
  - 1234
  - 1236
  - 1237
  - 1239
  - 1241
  - 1246
  - 1247
  websockets.legacy.protocol.WebSocketCommonProtocol.local_address:
  - 388
  - 372
  websockets.legacy.protocol.WebSocketCommonProtocol.open:
  - 412
  - 422
  websockets.legacy.protocol.WebSocketCommonProtocol.ping:
  - 832
  - 833
  - 836
  - 841
  - 843
  - 845
  - 848
  - 850
  - 794
  - 830
  websockets.legacy.protocol.WebSocketCommonProtocol.pong:
  - 873
  - 875
  - 853
  - 871
  websockets.legacy.protocol.WebSocketCommonProtocol.port:
  - 360
  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:
  - 1029
  - 1030
  - 1035
  - 1036
  - 1037
  - 1038
  - 1007
  - 1067
  - 1070
  - 1053
  - 1071
  - 1073
  - 1075
  - 1077
  - 1015
  - 1018
  - 1021
  - 1023
  websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append:
  - 1057
  - 1063
  - 1064
  - 1065
  - 1042
  - 1048
  - 1049
  - 1050
  websockets.legacy.protocol.WebSocketCommonProtocol.recv:
  - 548
  - 549
  - 518
  - 489
  - 554
  - 557
  - 560
  - 561
  - 532
  - 533
  - 538
  websockets.legacy.protocol.WebSocketCommonProtocol.remote_address:
  - 392
  - 408
  websockets.legacy.protocol.WebSocketCommonProtocol.resume_writing:
  - 1515
  - 1517
  - 1518
  websockets.legacy.protocol.WebSocketCommonProtocol.secure:
  - 365
  websockets.legacy.protocol.WebSocketCommonProtocol.send:
  - 641
  - 643
  - 645
  - 647
  - 650
  - 652
  - 655
  - 658
  - 659
  - 660
  - 662
  - 665
  - 670
  - 674
  - 679
  - 682
  - 684
  - 689
  - 691
  - 695
  - 697
  - 570
  - 700
  - 704
  - 705
  - 707
  - 710
  - 715
  - 719
  - 620
  - 625
  - 630
  - 631
  - 632
  - 636
  websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data:
  - 961
  - 995
  - 964
  - 965
  - 937
  - 1001
  - 1004
  - 976
  - 945
  - 948
  - 952
  - 953
  - 954
  - 987
  - 956
  - 991
  websockets.legacy.protocol.WebSocketCommonProtocol.wait_closed:
  - 781
  - 791
  websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost:
  - 1347
  - 1354
  - 1356
  - 1357
  - 1363
  websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame:
  - 1216
  - 1194
  - 1203
  - 1206
  - 1207
  - 1210
  - 1212
  - 1213
  websockets.legacy.protocol.WebSocketCommonProtocol.write_frame:
  - 1186
  - 1190
  - 1191
  websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync:
  - 1160
  - 1161
  - 1158
  - 1159
  websockets.legacy.protocol.broadcast:
  - 1550
  - 1595
  - 1598
  - 1599
  - 1603
  - 1605
  - 1606
  - 1609
  - 1610
  - 1611
  - 1612
  - 1614
  - 1620
  - 1622
  - 1623
  - 1625
  - 1627
  - 1629
  - 1631
  - 1636
  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:
  - 651
  websockets.legacy.server.WebSocketServer.__aexit__:
  - 880
  - 879
  websockets.legacy.server.WebSocketServer.__init__:
  - 672
  - 667
  - 668
  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:
  - 705
  - 706
  - 710
  - 681
  - 695
  - 696
  - 697
  - 698
  - 699
  - 700
  - 701
  websockets.legacy.server.WebSocketServerProtocol:
  - 58
  websockets.legacy.server.WebSocketServerProtocol.__init__:
  - 116
  - 117
  - 118
  - 120
  - 121
  - 126
  websockets.legacy.server.WebSocketServerProtocol.connection_made:
  - 138
  - 147
  - 148
  - 142
  websockets.legacy.server.WebSocketServerProtocol.handler:
  - 263
  - 264
  - 151
  - 161
  - 162
  - 173
  - 175
  - 176
  - 177
  - 180
  - 181
  - 183
  - 184
  - 185
  - 188
  - 189
  - 196
  - 197
  - 198
  - 199
  - 206
  - 207
  - 210
  - 213
  - 220
  - 221
  - 222
  - 224
  - 225
  - 226
  - 228
  - 229
  - 232
  - 236
  - 238
  - 239
  - 240
  - 244
  - 248
  - 254
  websockets.legacy.server.WebSocketServerProtocol.handshake:
  - 641
  - 643
  - 645
  - 562
  - 582
  - 586
  - 587
  - 591
  - 595
  - 600
  - 607
  - 610
  - 612
  - 614
  - 618
  - 622
  - 624
  - 626
  - 629
  - 632
  - 633
  - 634
  - 635
  - 637
  - 638
  - 639
  websockets.legacy.server.WebSocketServerProtocol.process_extensions:
  - 448
  - 449
  - 477
  - 452
  - 453
  - 455
  - 460
  - 467
  - 468
  - 405
  - 445
  - 478
  - 447
  websockets.legacy.server.WebSocketServerProtocol.process_origin:
  - 390
  - 393
  - 394
  - 395
  - 396
  - 376
  websockets.legacy.server.WebSocketServerProtocol.process_request:
  - 326
  - 360
  - 361
  - 362
  - 366
  websockets.legacy.server.WebSocketServerProtocol.process_subprotocol:
  - 486
  - 502
  - 504
  - 505
  - 506
  - 509
  websockets.legacy.server.WebSocketServerProtocol.read_http_request:
  - 288
  - 267
  - 279
  - 285
  - 286
  - 287
  websockets.legacy.server.WebSocketServerProtocol.select_subprotocol:
  - 544
  - 545
  - 547
  - 548
  - 550
  - 520
  - 552
  websockets.legacy.server.WebSocketServerProtocol.select_subprotocol.<lambda1>:
  - 552
  websockets.legacy.server.WebSocketServerProtocol.write_http_response:
  - 320
  - 321
  - 298
  - 306
  - 307
  - 308
  - 309
  - 310
  - 311
  - 316
  - 318
  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:
  - 44
  - 70
  websockets.protocol.Protocol:
  - 74
  websockets.protocol.Protocol.__init__:
  - 100
  - 101
  - 104
  - 105
  - 107
  - 110
  - 144
  - 119
  - 155
  - 158
  - 159
  websockets.protocol.Protocol.close_code:
  - 185
  - 195
  - 197
  websockets.protocol.Protocol.close_exc:
  - 248
  - 239
  - 223
  websockets.protocol.Protocol.close_expected:
  - 520
  - 553
  - 555
  - 557
  websockets.protocol.Protocol.close_reason:
  - 216
  - 204
  - 214
  websockets.protocol.Protocol.data_to_send:
  - 500
  websockets.protocol.Protocol.discard:
  - 644
  - 658
  - 659
  - 660
  - 661
  - 664
  - 665
  - 668
  websockets.protocol.Protocol.events_received:
  - 484
  websockets.protocol.Protocol.fail:
  - 453
  - 454
  - 455
  - 456
  - 457
  - 463
  - 435
  - 471
  - 472
  - 478
  - 479
  websockets.protocol.Protocol.parse:
  - 640
  - 565
  - 577
  - 578
  - 579
  - 588
  - 589
  - 594
  - 595
  - 598
  - 603
  - 610
  - 611
  - 613
  - 616
  - 620
  - 624
  - 628
  - 629
  - 633
  - 635
  websockets.protocol.Protocol.receive_data:
  - 272
  - 273
  - 260
  websockets.protocol.Protocol.receive_eof:
  - 289
  - 291
  - 276
  - 292
  websockets.protocol.Protocol.recv_frame:
  - 674
  - 678
  - 679
  - 681
  - 682
  - 684
  - 685
  - 687
  - 690
  - 692
  - 695
  - 696
  - 698
  - 703
  - 706
  - 707
  - 711
  - 720
  - 725
  - 736
  - 737
  - 744
  - 745
  - 751
  websockets.protocol.Protocol.send_binary:
  - 344
  - 361
  - 364
  - 359
  websockets.protocol.Protocol.send_close:
  - 384
  - 386
  - 387
  - 389
  - 392
  - 393
  - 395
  - 367
  websockets.protocol.Protocol.send_continuation:
  - 297
  - 315
  - 318
  - 313
  websockets.protocol.Protocol.send_eof:
  - 768
  - 769
  - 770
  websockets.protocol.Protocol.send_frame:
  - 756
  - 757
  - 758
  - 759
  websockets.protocol.Protocol.send_ping:
  - 416
  - 403
  - 414
  websockets.protocol.Protocol.send_pong:
  - 432
  - 419
  - 430
  websockets.protocol.Protocol.send_text:
  - 336
  - 321
  - 338
  - 341
  websockets.protocol.Protocol.state:
  - 180
  - 179
  - 164
  websockets.protocol.Side:
  - 48
  - 50
  websockets.protocol.State:
  - 58
  - 60
  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:
  - 570
  - 571
  websockets.sync.client.ClientConnection:
  - 29
  websockets.sync.client.ClientConnection.__init__:
  - 65
  - 66
  websockets.sync.client.ClientConnection.handshake:
  - 100
  - 81
  - 85
  - 86
  - 87
  - 88
  - 89
  - 90
  - 91
  - 93
  websockets.sync.client.ClientConnection.process_event:
  - 104
  - 109
  - 110
  - 112
  - 115
  websockets.sync.client.ClientConnection.recv_events:
  - 126
  - 123
  - 118
  websockets.sync.client.SSLSSLSocket:
  - 575
  websockets.sync.client.SSLSSLSocket.__getattr__:
  - 651
  websockets.sync.client.SSLSSLSocket.__init__:
  - 593
  - 598
  - 590
  - 591
  websockets.sync.client.SSLSSLSocket.recv:
  - 632
  websockets.sync.client.SSLSSLSocket.run_io:
  - 612
  - 613
  - 614
  - 617
  - 618
  - 619
  - 620
  - 622
  - 625
  - 605
  websockets.sync.client.SSLSSLSocket.send:
  - 637
  websockets.sync.client.SSLSSLSocket.sendall:
  - 642
  - 643
  - 645
  websockets.sync.client.connect:
  - 256
  - 257
  - 386
  - 259
  - 387
  - 262
  - 263
  - 390
  - 265
  - 266
  - 267
  - 270
  - 272
  - 274
  - 275
  - 280
  - 282
  - 288
  - 161
  - 289
  - 290
  - 291
  - 293
  - 294
  - 295
  - 296
  - 298
  - 304
  - 306
  - 308
  - 313
  - 325
  - 326
  - 330
  - 334
  - 335
  - 339
  - 340
  - 341
  - 342
  - 344
  - 345
  - 346
  - 348
  - 350
  - 351
  - 355
  - 376
  - 366
  - 241
  - 242
  - 243
  - 375
  - 248
  - 249
  - 380
  - 253
  - 254
  - 383
  websockets.sync.client.connect_http_proxy:
  - 544
  - 545
  - 549
  - 550
  - 551
  - 552
  - 554
  - 555
  - 556
  - 560
  - 562
  - 564
  websockets.sync.client.connect_socks_proxy:
  - 468
  - 459
  - 460
  - 472
  websockets.sync.client.prepare_connect_request:
  - 484
  - 485
  - 486
  - 487
  - 489
  - 491
  - 495
  websockets.sync.client.read_connect_response:
  - 513
  - 514
  - 516
  - 518
  - 529
  - 499
  - 500
  - 508
  - 509
  - 510
  - 511
  websockets.sync.client.unix_connect:
  - 415
  - 417
  - 421
  - 399
  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:
  - 737
  - 743
  - 744
  - 745
  - 747
  websockets.sync.connection.Connection.acknowledge_pings:
  - 704
  - 710
  - 713
  - 719
  - 723
  - 724
  - 725
  - 726
  - 733
  websockets.sync.connection.Connection.close:
  - 590
  - 591
  - 592
  - 597
  - 572
  websockets.sync.connection.Connection.close_code:
  - 193
  websockets.sync.connection.Connection.close_reason:
  - 205
  websockets.sync.connection.Connection.close_socket:
  - 1059
  - 1062
  - 1067
  - 1071
  - 1074
  - 1050
  websockets.sync.connection.Connection.keepalive:
  - 768
  - 769
  - 771
  - 773
  - 774
  - 775
  - 777
  - 778
  - 779
  - 780
  - 750
  - 786
  - 760
  - 761
  - 765
  websockets.sync.connection.Connection.local_address:
  - 144
  - 153
  websockets.sync.connection.Connection.ping:
  - 608
  - 641
  - 642
  - 643
  - 644
  - 645
  - 648
  - 650
  - 655
  - 657
  - 658
  - 659
  websockets.sync.connection.Connection.pong:
  - 677
  - 678
  - 679
  - 680
  - 684
  - 685
  - 663
  websockets.sync.connection.Connection.process_event:
  - 690
  - 696
  - 697
  - 698
  - 700
  - 701
  websockets.sync.connection.Connection.recv:
  - 258
  - 319
  - 263
  - 329
  - 330
  - 268
  - 271
  - 337
  - 252
  - 255
  websockets.sync.connection.Connection.recv_events:
  - 899
  - 901
  - 904
  - 802
  - 814
  - 815
  - 816
  - 818
  - 819
  - 828
  - 831
  - 837
  - 840
  - 844
  - 846
  - 847
  - 855
  - 858
  - 861
  - 862
  - 871
  - 873
  - 879
  - 882
  - 886
  - 893
  - 895
  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:
  - 912
  - 937
  - 940
  - 945
  - 954
  - 962
  - 965
  - 967
  - 968
  - 989
  - 990
  - 994
  - 995
  - 997
  - 1001
  - 1006
  - 1010
  - 1011
  - 1013
  websockets.sync.connection.Connection.send_data:
  - 1026
  - 1027
  - 1028
  - 1029
  - 1030
  - 1031
  - 1034
  - 1017
  websockets.sync.connection.Connection.set_recv_exc:
  - 1045
  - 1046
  - 1039
  websockets.sync.connection.Connection.start_keepalive:
  - 793
  - 795
  - 789
  - 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:
  - 325
  - 333
  - 338
  - 340
  - 342
  - 345
  websockets.sync.messages.Assembler.get:
  - 129
  - 132
  - 158
  - 166
  - 169
  - 171
  - 173
  - 180
  - 181
  - 186
  - 189
  - 191
  - 196
  - 197
  - 198
  - 117
  - 120
  - 123
  - 126
  websockets.sync.messages.Assembler.get_iter:
  - 256
  - 258
  - 262
  - 264
  - 266
  - 203
  - 267
  - 237
  - 206
  - 269
  - 209
  - 212
  - 248
  - 250
  - 252
  - 254
  - 255
  websockets.sync.messages.Assembler.get_next_frame:
  - 75
  - 77
  - 84
  - 85
  - 87
  - 90
  websockets.sync.messages.Assembler.maybe_pause:
  - 299
  - 301
  - 304
  - 307
  - 309
  websockets.sync.messages.Assembler.maybe_resume:
  - 320
  - 322
  - 312
  - 314
  - 317
  websockets.sync.messages.Assembler.put:
  - 274
  - 282
  - 285
  - 286
  websockets.sync.messages.Assembler.reset_queue:
  - 104
  - 107
  - 108
  - 110
  - 111
  websockets.sync.router.Router:
  - 41
  websockets.sync.router.Router.__init__:
  - 52
  websockets.sync.router.Router.get_server_name:
  - 58
  websockets.sync.router.Router.handler:
  - 93
  - 94
  websockets.sync.router.Router.not_found:
  - 69
  websockets.sync.router.Router.redirect:
  - 64
  websockets.sync.router.Router.route_request:
  - 74
  - 75
  - 76
  - 80
  - 81
  - 86
  - 88
  websockets.sync.router.route:
  - 196
  - 166
  - 104
  - 169
  - 172
  - 180
  - 181
  websockets.sync.router.route.process_request:
  - 192
  - 194
  - 191
  websockets.sync.router.unix_route:
  - 203
  - 214
  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.typing:
  - 33
  - 66
  - 35
  - 69
  - 38
  - 70
  - 73
  - 74
  - 43
  - 47
  - 48
  - 51
  - 52
  - 55
  - 23
  - 56
  - 60
  websockets.uri.Proxy:
  - 113
  websockets.uri.Proxy.user_info:
  - 136
  websockets.uri.WebSocketURI:
  - 19
  websockets.uri.WebSocketURI.resource_name:
  - 49
  - 45
  websockets.uri.WebSocketURI.user_info:
  - 55
  websockets.uri.get_proxy:
  - 193
  - 197
  - 212
  - 213
  - 218
  - 219
  - 220
  - 221
  websockets.uri.parse_proxy:
  - 161
  - 163
  - 165
  - 143
  - 175
  - 179
  - 189
  - 183
  - 184
  - 186
  - 187
  - 156
  - 157
  - 159
  websockets.uri.parse_uri:
  - 96
  - 100
  - 101
  - 102
  - 103
  - 105
  - 106
  - 75
  - 76
  - 108
  - 78
  - 80
  - 92
  - 62
  websockets.utils.accept_key:
  - 32
  - 25
  - 33
  websockets.utils.apply_mask:
  - 37
  - 45
  - 48
  - 49
  - 50
  - 51
  websockets.utils.generate_key:
  - 16
  - 20
  - 21
  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_request_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.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.uri.Proxy: []
  websockets.uri.WebSocketURI: []
ep:
  func_name: test_one_input
  module: '...inspector.light.source_files.src.websockets.fuzzing.fuzz_http11_request_parser'
