All classes:
- websockets.datastructures.MultipleValuesError
- websockets.datastructures.Headers
- websockets.datastructures.SupportsKeysAndGetItem
- websockets.extensions.base.Extension
- websockets.extensions.base.ClientExtensionFactory
- websockets.extensions.base.ServerExtensionFactory
- websockets.frames.Opcode
- websockets.frames.CloseCode
- websockets.frames.Frame
- websockets.frames.Close
- websockets.http11.Request
- websockets.http11.Response
- websockets.exceptions.WebSocketException
- websockets.exceptions.ConnectionClosed
- websockets.exceptions.ConnectionClosedError
- websockets.exceptions.ConnectionClosedOK
- websockets.exceptions.InvalidHandshake
- websockets.exceptions.SecurityError
- websockets.exceptions.InvalidMessage
- websockets.exceptions.InvalidHeader
- websockets.exceptions.InvalidHeaderFormat
- websockets.exceptions.InvalidHeaderValue
- websockets.exceptions.InvalidOrigin
- websockets.exceptions.InvalidUpgrade
- websockets.exceptions.InvalidStatus
- websockets.exceptions.InvalidStatusCode
- websockets.exceptions.NegotiationError
- websockets.exceptions.DuplicateParameter
- websockets.exceptions.InvalidParameterName
- websockets.exceptions.InvalidParameterValue
- websockets.exceptions.AbortHandshake
- websockets.exceptions.RedirectHandshake
- websockets.exceptions.InvalidState
- websockets.exceptions.InvalidURI
- websockets.exceptions.PayloadTooBig
- websockets.exceptions.ProtocolError
- websockets.streams.StreamReader
- websockets.uri.WebSocketURI
- websockets.protocol.Side
- websockets.protocol.State
- websockets.protocol.Protocol
- websockets.extensions.permessage_deflate.PerMessageDeflate
- websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory
- websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory
- websockets.legacy.async_timeout._State
- websockets.legacy.async_timeout.Timeout
- websockets.legacy.framing.Frame
- websockets.legacy.protocol.WebSocketCommonProtocol
- websockets.legacy.server.WebSocketServerProtocol
- websockets.legacy.server.WebSocketServer
- websockets.legacy.server.Serve
- websockets.server.ServerProtocol
- websockets.server.ServerConnection
- websockets.legacy.auth.BasicAuthWebSocketServerProtocol
- websockets.legacy.client.WebSocketClientProtocol
- websockets.legacy.client.Connect
- websockets.client.ClientProtocol
- websockets.client.ClientConnection
- websockets.sync.messages.Assembler
- websockets.sync.utils.Deadline
- websockets.sync.connection.Connection
- websockets.sync.client.ClientConnection
- websockets.sync.server.ServerConnection
- websockets.sync.server.WebSocketServer
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: '...websockets.fuzzing.fuzz_websocket_parser'
    functionSourceFile: '...websockets.fuzzing.fuzz_websocket_parser'
    functionUses: 0
    functionsReached:
    - atheris.instrument_imports
    - atheris.Setup
    - atheris.Fuzz
    - '...websockets.fuzzing.fuzz_websocket_parser.main'
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 3
    functionLinenumber: 12
    functionName: '...websockets.fuzzing.fuzz_websocket_parser.test_one_input'
    functionSourceFile: '...websockets.fuzzing.fuzz_websocket_parser'
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.feed_data
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - <builtin>.next
    - struct.unpack
    - <builtin>.bytearray
    - fdp.ConsumeInt
    - int.from_bytes
    - speedups.apply_mask
    - fdp.ConsumeBytes
    - websockets.streams.StreamReader.read_exact
    - websockets.frames.Frame.parse
    - extension.decode
    - atheris.FuzzedDataProvider
    - fdp.ConsumeBool
    - <builtin>.isinstance
    - <builtin>.len
    - websockets.streams.StreamReader.__init__
    - enum.IntEnum.__init__
    - frame.check
    - websockets.streams.StreamReader.feed_eof
    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: atheris.FuzzedDataProvider
    functionSourceFile: atheris
    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: fdp.ConsumeBool
    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: fdp.ConsumeInt
    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: fdp.ConsumeBytes
    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: 16
    functionName: websockets.streams.StreamReader.__init__
    functionSourceFile: websockets.streams
    functionUses: 2
    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: 2
    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: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised:
    - EOFError
    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: 197
    functionName: websockets.frames.Frame.parse
    functionSourceFile: websockets.frames
    functionUses: 3
    functionsReached:
    - websockets.streams.StreamReader.read_exact
    - <builtin>.len
    - struct.unpack
    - extension.decode
    - enum.IntEnum.__init__
    - frame.check
    - <builtin>.reversed
    - websockets.utils.apply_mask
    - int.from_bytes
    - 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: <builtin>.next
    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: <builtin>.isinstance
    functionSourceFile: <builtin>
    functionUses: 59
    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: 45
    functionName: '...websockets.fuzzing.fuzz_websocket_parser.main'
    functionSourceFile: '...websockets.fuzzing.fuzz_websocket_parser'
    functionUses: 1
    functionsReached:
    - atheris.Setup
    - atheris.Fuzz
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 1
    IfCount: 7
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 149
    functionName: websockets.frames.Frame.__str__
    functionSourceFile: websockets.frames
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - struct.unpack
    - close.check
    - <builtin>.filter
    - <builtin>.repr
    - <builtin>.str
    - websockets.frames.Close.parse
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 80
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 430
    functionName: websockets.frames.Close.parse
    functionSourceFile: websockets.frames
    functionUses: 13
    functionsReached:
    - struct.unpack
    - <builtin>.len
    - close.check
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 20
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 6
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: struct.unpack
    functionSourceFile: struct
    functionUses: 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: enum.IntEnum.__init__
    functionSourceFile: ''
    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: speedups.apply_mask
    functionSourceFile: speedups
    functionUses: 24
    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: 24
    functionsReached:
    - <builtin>.len
    - int.from_bytes
    linkageType: pythonLinkage
    raised:
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.reversed
    functionSourceFile: <builtin>
    functionUses: 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: extension.decode
    functionSourceFile: <builtin>
    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: frame.check
    functionSourceFile: <builtin>
    functionUses: 4
    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: 273
    functionName: websockets.frames.Frame.serialize
    functionSourceFile: websockets.frames
    functionUses: 11
    functionsReached:
    - <builtin>.len
    - io.BytesIO
    - output.write
    - output.getvalue
    - secrets.token_bytes
    - extension.encode
    - websockets.utils.apply_mask
    - struct.pack
    - int.from_bytes
    - 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: 332
    functionName: websockets.frames.Frame.check
    functionSourceFile: websockets.frames
    functionUses: 12
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extension.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: io.BytesIO
    functionSourceFile: io
    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: struct.pack
    functionSourceFile: struct
    functionUses: 32
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: secrets.token_bytes
    functionSourceFile: secrets
    functionUses: 20
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    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: 350
    functionName: websockets.frames.prepare_data
    functionSourceFile: websockets.frames
    functionUses: 2
    functionsReached:
    - typing.cast.encode
    - <builtin>.isinstance
    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: typing.cast.encode
    functionSourceFile: typing
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    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: 374
    functionName: websockets.frames.prepare_ctrl
    functionSourceFile: websockets.frames
    functionUses: 13
    functionsReached:
    - <builtin>.isinstance
    - data.encode
    - <builtin>.bytes
    linkageType: pythonLinkage
    raised:
    - TypeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: data.encode
    functionSourceFile: <builtin>
    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: <builtin>.bytes
    functionSourceFile: <builtin>
    functionUses: 16
    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: 411
    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: 14
    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: 453
    functionName: websockets.frames.Close.serialize
    functionSourceFile: websockets.frames
    functionUses: 22
    functionsReached:
    - struct.pack
    - websockets.frames.Close.check
    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: 461
    functionName: websockets.frames.Close.check
    functionSourceFile: ''
    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: 43
    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: 66
    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: 76
    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: 109
    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: 9
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.typing
    functionSourceFile: websockets.typing
    functionUses: 0
    functionsReached:
    - typing.NewType
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.NewType
    functionSourceFile: typing
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.utils
    functionSourceFile: websockets.utils
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 15
    functionName: websockets.utils.generate_key
    functionSourceFile: websockets.utils
    functionUses: 7
    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: 21
    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:
    - base64.b64encode
    - hashlib.sha1
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: hashlib.sha1
    functionSourceFile: hashlib
    functionUses: 12
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: int.from_bytes
    functionSourceFile: <builtin>
    functionUses: 28
    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>.set
    - websockets.imports.lazy_import
    - <builtin>.globals
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 2
    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 0x7f14813cc970>
    - <ast.Constant object at 0x7f14813cc2b0>
    argNames:
    - namespace
    - aliases
    - deprecated_aliases
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 31
    functionName: websockets.imports.lazy_import
    functionSourceFile: websockets.imports
    functionUses: 2
    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.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: 10
    functionName: websockets.imports.import_name
    functionSourceFile: websockets.imports
    functionUses: 1
    functionsReached:
    - <builtin>.len
    - <builtin>.getattr
    - <builtin>.__import__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.__import__
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.getattr
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.set
    functionSourceFile: <builtin>
    functionUses: 16
    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: 70
    functionName: websockets.imports.lazy_import.__getattr__
    functionSourceFile: websockets.imports
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - websockets.imports.import_name
    - <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: 0
    functionLinenumber: -1
    functionName: warnings.warn
    functionSourceFile: warnings
    functionUses: 20
    functionsReached: []
    linkageType: 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: 96
    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: 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: 2
    functionLinenumber: -1
    functionName: websockets.version
    functionSourceFile: websockets.version
    functionUses: 0
    functionsReached:
    - subprocess.run
    - remainder.replace
    - importlib.metadata.version
    - websockets.version.get_version
    - match.groups
    - pathlib.Path
    - re.fullmatch
    - websockets.version.get_commit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - tag
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 31
    functionName: websockets.version.get_version
    functionSourceFile: websockets.version
    functionUses: 1
    functionsReached:
    - subprocess.run
    - remainder.replace
    - importlib.metadata.version
    - re.fullmatch
    - match.groups
    - pathlib.Path
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 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: 2
    argDefaultValues: []
    argNames:
    - tag
    - version
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 74
    functionName: websockets.version.get_commit
    functionSourceFile: websockets.version
    functionUses: 1
    functionsReached:
    - match.groups
    - re.fullmatch
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.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: 3
    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: 7
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    - 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: 3
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 99
    functionName: websockets.streams.StreamReader.at_eof
    functionSourceFile: websockets.streams
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 146
    functionName: websockets.streams.StreamReader.discard
    functionSourceFile: websockets.streams
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.exceptions
    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: 4
    argDefaultValues:
    - <ast.Constant object at 0x7f14812477c0>
    argNames:
    - self
    - rcvd
    - sent
    - rcvd_then_sent
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 90
    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: 100
    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: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 122
    functionName: websockets.exceptions.ConnectionClosed.code
    functionSourceFile: websockets.exceptions
    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: 128
    functionName: websockets.exceptions.ConnectionClosed.reason
    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 0x7f1481cefe80>
    argNames:
    - self
    - name
    - value
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 183
    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: 187
    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: 204
    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: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.super
    functionSourceFile: <builtin>
    functionUses: 44
    functionsReached: []
    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: 223
    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
    - response
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 240
    functionName: websockets.exceptions.InvalidStatus.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 243
    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: []
    argNames:
    - self
    - status_code
    - headers
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 256
    functionName: websockets.exceptions.InvalidStatusCode.__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: 260
    functionName: websockets.exceptions.InvalidStatusCode.__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: 277
    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: 280
    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: 290
    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: 293
    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: 303
    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: 307
    functionName: websockets.exceptions.InvalidParameterValue.__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: 4
    argDefaultValues:
    - <ast.Constant object at 0x7f14813ccfd0>
    argNames:
    - self
    - status
    - headers
    - body
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 331
    functionName: websockets.exceptions.AbortHandshake.__init__
    functionSourceFile: websockets.exceptions
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - http.HTTPStatus
    - <builtin>.super
    - <builtin>.tuple
    - websockets.datastructures.Headers.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: http.HTTPStatus
    functionSourceFile: http
    functionUses: 3
    functionsReached: []
    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: 74
    functionName: websockets.datastructures.Headers.__init__
    functionSourceFile: websockets.datastructures
    functionUses: 19
    functionsReached:
    - <builtin>.isinstance
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - <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: 1
    functionLinenumber: 342
    functionName: websockets.exceptions.AbortHandshake.__str__
    functionSourceFile: websockets.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: 358
    functionName: websockets.exceptions.RedirectHandshake.__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: 361
    functionName: websockets.exceptions.RedirectHandshake.__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
    - uri
    - msg
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 382
    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: 386
    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: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.http11
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached:
    - re.compile
    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: 23
    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: 68
    functionName: websockets.http11.Request.exception
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 1
    IfCount: 4
    argCount: 2
    argDefaultValues: []
    argNames:
    - cls
    - read_line
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 77
    functionName: websockets.http11.Request.parse
    functionSourceFile: websockets.http11
    functionUses: 2
    functionsReached:
    - raw_value.decode
    - line.split
    - <builtin>.super
    - <builtin>.range
    - _value_re.fullmatch
    - request_line.split
    - line.endswith
    - <builtin>.tuple
    - websockets.datastructures.Headers.__init__
    - websockets.streams.StreamReader.read_line
    - raw_value.strip
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - raw_path.decode
    - websockets.http11.parse_headers
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.len
    - websockets.http11.parse_line
    - raw_name.decode
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    - NotImplementedError
    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: 340
    functionName: websockets.http11.parse_line
    functionSourceFile: websockets.http11
    functionUses: 6
    functionsReached:
    - <builtin>.len
    - line.endswith
    - websockets.streams.StreamReader.read_line
    linkageType: pythonLinkage
    raised:
    - EOFError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: request_line.split
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: raw_path.decode
    functionSourceFile: <builtin>
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - read_line
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 289
    functionName: websockets.http11.parse_headers
    functionSourceFile: websockets.http11
    functionUses: 5
    functionsReached:
    - raw_value.decode
    - <builtin>.isinstance
    - <builtin>.len
    - raw_value.strip
    - _value_re.fullmatch
    - arg.raw_items
    - line.split
    - websockets.http11.parse_line
    - websockets.datastructures.Headers.update
    - raw_name.decode
    - <builtin>.super
    - line.endswith
    - <builtin>.tuple
    - _token_re.fullmatch
    - websockets.datastructures.Headers.__init__
    - <builtin>.range
    - websockets.streams.StreamReader.read_line
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 139
    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: 172
    functionName: websockets.http11.Response.exception
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached:
    - warnings.warn
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 11
    ICount: 1
    IfCount: 7
    argCount: 4
    argDefaultValues: []
    argNames:
    - cls
    - read_line
    - read_exact
    - read_to_eof
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 181
    functionName: websockets.http11.Response.parse
    functionSourceFile: websockets.http11
    functionUses: 2
    functionsReached:
    - raw_value.decode
    - line.split
    - <builtin>.super
    - <builtin>.int
    - <builtin>.range
    - _value_re.fullmatch
    - websockets.streams.StreamReader.read_to_eof
    - line.endswith
    - <builtin>.tuple
    - websockets.datastructures.Headers.__init__
    - websockets.streams.StreamReader.read_line
    - websockets.streams.StreamReader.read_exact
    - raw_value.strip
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - websockets.http11.parse_headers
    - _token_re.fullmatch
    - <builtin>.len
    - <builtin>.isinstance
    - status_line.split
    - websockets.http11.parse_line
    - raw_reason.decode
    - raw_name.decode
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    - 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: status_line.split
    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>.int
    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: _value_re.fullmatch
    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: raw_reason.decode
    functionSourceFile: <builtin>
    functionUses: 6
    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: 0
    functionLinenumber: 275
    functionName: websockets.http11.Response.serialize
    functionSourceFile: websockets.http11
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.range
    functionSourceFile: <builtin>
    functionUses: 21
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: _token_re.fullmatch
    functionSourceFile: <builtin>
    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: raw_value.strip
    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: raw_name.decode
    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: raw_value.decode
    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: line.endswith
    functionSourceFile: <builtin>
    functionUses: 17
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.datastructures
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 26
    functionName: websockets.datastructures.MultipleValuesError.__str__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - <builtin>.repr
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 138
    functionName: websockets.datastructures.Headers.update
    functionSourceFile: websockets.datastructures
    functionUses: 20
    functionsReached:
    - <builtin>.isinstance
    - <builtin>.super
    - <builtin>.tuple
    - arg.raw_items
    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.__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: 82
    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: 85
    functionName: websockets.datastructures.Headers.copy
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 91
    functionName: websockets.datastructures.Headers.serialize
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 97
    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: 12
    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: 100
    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: 10
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 103
    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: 108
    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: 115
    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: 119
    functionName: websockets.datastructures.Headers.__delitem__
    functionSourceFile: websockets.datastructures
    functionUses: 0
    functionsReached:
    - key.lower
    - k.lower
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: k.lower
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 0
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - other
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 125
    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: 130
    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: 21
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 21
    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: 150
    functionName: websockets.datastructures.Headers.get_all
    functionSourceFile: websockets.datastructures
    functionUses: 7
    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: 160
    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: 175
    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: 178
    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.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: 40
    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: 50
    functionName: websockets.uri.WebSocketURI.user_info
    functionSourceFile: websockets.uri
    functionUses: 0
    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: 10
    functionsReached:
    - host.encode
    - urllib.parse.quote
    - urllib.parse.urlparse
    - 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.urlparse
    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: uri.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: host.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: urllib.parse.quote
    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: websockets.server
    functionSourceFile: websockets.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: 74
    functionName: websockets.server.ServerProtocol.__init__
    functionSourceFile: websockets.server
    functionUses: 1
    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: <builtin>.setattr
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 6
    IfCount: 5
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - request
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 108
    functionName: websockets.server.ServerProtocol.accept
    functionSourceFile: websockets.server
    functionUses: 0
    functionsReached:
    - websockets.headers.parse_list
    - base64.b64decode
    - match.group
    - http.HTTPStatus
    - websockets.server.ServerProtocol.process_request
    - websockets.headers.parse_connection_option
    - <builtin>.super
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - <builtin>.str
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - websockets.server.ServerProtocol.select_subprotocol
    - hashlib.sha1
    - items.append
    - extension_headers.append
    - <builtin>.set
    - websockets.server.ServerProtocol.process_extensions
    - <builtin>.tuple
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.datastructures.Headers.__init__
    - text.encode
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.parse_connection
    - email.utils.formatdate
    - _quoted_string_re.match
    - _unquote_re.sub
    - arg.raw_items
    - websockets.utils.accept_key
    - websockets.headers.parse_extension
    - websockets.datastructures.Headers.update
    - websockets.headers.parse_quoted_string
    - websockets.exceptions.InvalidStatus.__init__
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - websockets.server.ServerProtocol.process_subprotocol
    - _token_re.fullmatch
    - websockets.headers.build_extension_item
    - <builtin>.any
    - <builtin>.len
    - <builtin>.isinstance
    - base64.b64encode
    - websockets.headers.build_extension
    - ext_factory.process_request_params
    - key.encode
    - websockets.headers.parse_subprotocol
    - websockets.server.ServerProtocol.reject
    - websockets.headers.parse_token
    - match.end
    - headers.get
    - value.lower
    - websockets.headers.parse_upgrade
    - accepted_extensions.append
    - websockets.headers.peek_ahead
    - websockets.server.ServerProtocol.process_origin
    - _OWS_re.match
    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: 197
    functionName: websockets.server.ServerProtocol.process_request
    functionSourceFile: websockets.server
    functionUses: 1
    functionsReached:
    - websockets.headers.parse_list
    - base64.b64decode
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - websockets.server.ServerProtocol.select_subprotocol
    - hashlib.sha1
    - items.append
    - extension_headers.append
    - <builtin>.set
    - websockets.server.ServerProtocol.process_extensions
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.parse_connection
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.utils.accept_key
    - websockets.headers.parse_extension
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.server.ServerProtocol.process_subprotocol
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - websockets.headers.build_extension_item
    - <builtin>.any
    - <builtin>.len
    - base64.b64encode
    - websockets.headers.build_extension
    - ext_factory.process_request_params
    - key.encode
    - websockets.headers.parse_subprotocol
    - websockets.headers.parse_token
    - match.end
    - headers.get
    - value.lower
    - websockets.headers.parse_upgrade
    - accepted_extensions.append
    - websockets.headers.peek_ahead
    - websockets.server.ServerProtocol.process_origin
    - _OWS_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidUpgrade
    - InvalidHeader
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - status
    - text
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 479
    functionName: websockets.server.ServerProtocol.reject
    functionSourceFile: websockets.server
    functionUses: 1
    functionsReached:
    - email.utils.formatdate
    - <builtin>.len
    - <builtin>.isinstance
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - http.HTTPStatus
    - <builtin>.super
    - websockets.exceptions.InvalidStatus.__init__
    - <builtin>.tuple
    - <builtin>.str
    - websockets.datastructures.Headers.__init__
    - text.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: email.utils.formatdate
    functionSourceFile: <builtin>
    functionUses: 5
    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: 244
    functionName: websockets.headers.parse_connection
    functionSourceFile: websockets.headers
    functionUses: 11
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - _OWS_re.match
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - parameters.append
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade_protocol
    - <builtin>.len
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item_param
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: <builtin>.sum
    functionSourceFile: <builtin>
    functionUses: 19
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: value.lower
    functionSourceFile: <builtin>
    functionUses: 11
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.any
    functionSourceFile: <builtin>
    functionUses: 25
    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: 285
    functionName: websockets.headers.parse_upgrade
    functionSourceFile: websockets.headers
    functionUses: 11
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - _OWS_re.match
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - parameters.append
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade_protocol
    - <builtin>.len
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item_param
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - headers
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 286
    functionName: websockets.server.ServerProtocol.process_origin
    functionSourceFile: websockets.server
    functionUses: 2
    functionsReached:
    - typing.cast
    - headers.get
    linkageType: pythonLinkage
    raised:
    - InvalidOrigin
    - 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:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - extension_headers.append
    - _OWS_re.match
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_extension
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - websockets.headers.build_extension_item
    - <builtin>.len
    - websockets.headers.build_extension
    - ext_factory.process_request_params
    - websockets.headers.parse_token
    - match.end
    - accepted_extensions.append
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item_param
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - headers
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 393
    functionName: websockets.server.ServerProtocol.process_subprotocol
    functionSourceFile: websockets.server
    functionUses: 2
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - websockets.server.ServerProtocol.select_subprotocol
    - items.append
    - <builtin>.set
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.len
    - websockets.headers.parse_subprotocol
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - _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: headers.get
    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: typing.cast
    functionSourceFile: typing
    functionUses: 43
    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: 362
    functionName: websockets.headers.parse_extension
    functionSourceFile: websockets.headers
    functionUses: 13
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - _OWS_re.match
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - parameters.append
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade_protocol
    - <builtin>.len
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item_param
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: extension_headers.append
    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: 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:
    - extensions
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 410
    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:
    - header
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 441
    functionName: websockets.headers.parse_subprotocol
    functionSourceFile: websockets.headers
    functionUses: 13
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - _OWS_re.match
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - parameters.append
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade_protocol
    - <builtin>.len
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item_param
    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: 418
    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: text.encode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 7
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - response
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 522
    functionName: websockets.server.ServerProtocol.send_response
    functionSourceFile: websockets.server
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - websockets.streams.StreamReader.at_eof
    - websockets.streams.StreamReader.discard
    - websockets.protocol.Protocol.send_eof
    - response.headers.raw_items
    - response.serialize
    - websockets.protocol.Protocol.discard
    - <builtin>.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 703
    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: 579
    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: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 548
    functionName: websockets.server.ServerProtocol.parse
    functionSourceFile: websockets.server
    functionUses: 1
    functionsReached:
    - raw_value.decode
    - websockets.streams.StreamReader.at_eof
    - line.split
    - <builtin>.super
    - request.headers.raw_items
    - <builtin>.next
    - <builtin>.range
    - _value_re.fullmatch
    - websockets.protocol.Protocol.discard
    - request_line.split
    - line.endswith
    - <builtin>.tuple
    - websockets.datastructures.Headers.__init__
    - websockets.streams.StreamReader.read_line
    - raw_value.strip
    - websockets.streams.StreamReader.discard
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - raw_path.decode
    - websockets.http11.parse_headers
    - _token_re.fullmatch
    - <builtin>.isinstance
    - <builtin>.len
    - websockets.protocol.Protocol.send_eof
    - websockets.http11.parse_line
    - raw_name.decode
    - websockets.http11.Request.parse
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - args
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 572
    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: 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: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 3
    argDefaultValues: []
    argNames:
    - host
    - port
    - secure
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 38
    functionName: websockets.headers.build_host
    functionSourceFile: websockets.headers
    functionUses: 2
    functionsReached:
    - ipaddress.ip_address
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - header
    - pos
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 66
    functionName: websockets.headers.peek_ahead
    functionSourceFile: websockets.headers
    functionUses: 28
    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: 81
    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: 35
    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: 99
    functionName: websockets.headers.parse_token
    functionSourceFile: websockets.headers
    functionUses: 30
    functionsReached:
    - _token_re.match
    - match.end
    - match.group
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: match.group
    functionSourceFile: <builtin>
    functionUses: 34
    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: 123
    functionName: websockets.headers.parse_quoted_string
    functionSourceFile: websockets.headers
    functionUses: 26
    functionsReached:
    - _quoted_string_re.match
    - match.end
    - _unquote_re.sub
    - match.group
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 147
    functionName: websockets.headers.build_quoted_string
    functionSourceFile: websockets.headers
    functionUses: 2
    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: 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: _quote_re.sub
    functionSourceFile: <builtin>
    functionUses: 3
    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: 160
    functionName: websockets.headers.parse_list
    functionSourceFile: websockets.headers
    functionUses: 23
    functionsReached:
    - match.group
    - websockets.headers.parse_connection_option
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - _OWS_re.match
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - parameters.append
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade_protocol
    - <builtin>.len
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item_param
    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: 265
    functionName: websockets.headers.parse_upgrade_protocol
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - typing.cast
    - match.group
    - match.end
    - _protocol_re.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 3
    argDefaultValues: []
    argNames:
    - header
    - pos
    - header_name
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 337
    functionName: websockets.headers.parse_extension_item
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - <builtin>.len
    - _quoted_string_re.match
    - _unquote_re.sub
    - _token_re.match
    - websockets.headers.parse_token
    - match.end
    - match.group
    - websockets.headers.parse_quoted_string
    - _token_re.fullmatch
    - parameters.append
    - _OWS_re.match
    - typing.cast
    - websockets.headers.peek_ahead
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item_param
    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: 425
    functionName: websockets.headers.parse_subprotocol_item
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - _token_re.match
    - websockets.headers.parse_token
    - match.end
    - match.group
    - 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: 228
    functionName: websockets.headers.parse_connection_option
    functionSourceFile: websockets.headers
    functionUses: 24
    functionsReached:
    - _token_re.match
    - websockets.headers.parse_token
    - match.end
    - match.group
    - typing.cast
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 301
    functionName: websockets.headers.parse_extension_item_param
    functionSourceFile: websockets.headers
    functionUses: 25
    functionsReached:
    - _quoted_string_re.match
    - <builtin>.len
    - _unquote_re.sub
    - _token_re.match
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.parse_quoted_string
    - match.group
    - _token_re.fullmatch
    - websockets.headers.peek_ahead
    - websockets.headers.parse_OWS
    - _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: 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: 391
    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:
    - subprotocols
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 457
    functionName: websockets.headers.build_subprotocol
    functionSourceFile: websockets.headers
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    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: 470
    functionName: websockets.headers.validate_subprotocols
    functionSourceFile: websockets.headers
    functionUses: 10
    functionsReached:
    - _token_re.fullmatch
    - <builtin>.isinstance
    linkageType: pythonLinkage
    raised:
    - ValueError
    - TypeError
    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: 484
    functionName: websockets.headers.build_www_authenticate_basic
    functionSourceFile: websockets.headers
    functionUses: 1
    functionsReached:
    - _quotable_re.fullmatch
    - websockets.headers.build_quoted_string
    - _quote_re.sub
    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: 501
    functionName: websockets.headers.parse_token68
    functionSourceFile: websockets.headers
    functionUses: 2
    functionsReached:
    - _token68_re.match
    - match.end
    - match.group
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 3
    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: 519
    functionName: websockets.headers.parse_end
    functionSourceFile: websockets.headers
    functionUses: 2
    functionsReached:
    - <builtin>.len
    linkageType: pythonLinkage
    raised: []
    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: 528
    functionName: websockets.headers.parse_authorization_basic
    functionSourceFile: websockets.headers
    functionUses: 1
    functionsReached:
    - <builtin>.len
    - base64.b64decode
    - scheme.lower
    - _token68_re.match
    - _token_re.match
    - basic_credentials.encode
    - websockets.headers.parse_token
    - match.end
    - match.group
    - websockets.headers.parse_token68
    - websockets.headers.peek_ahead
    - user_pass.split
    - 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: scheme.lower
    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: basic_credentials.encode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: user_pass.split
    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:
    - username
    - password
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 576
    functionName: websockets.headers.build_authorization_basic
    functionSourceFile: websockets.headers
    functionUses: 2
    functionsReached:
    - base64.b64encode
    - user_pass.encode
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: user_pass.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: 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: 98
    functionName: websockets.legacy.server.WebSocketServerProtocol.__init__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - inspect.signature
    - websockets.legacy.server.remove_path_argument
    - <builtin>.super
    - typing.cast
    - logging.getLogger
    - 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: logging.getLogger
    functionSourceFile: logging
    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:
    - ws_handler
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1154
    functionName: websockets.legacy.server.remove_path_argument
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - typing.cast
    - inspect.signature
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - transport
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 13
    functionLinenumber: 142
    functionName: websockets.legacy.server.WebSocketServerProtocol.connection_made
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.headers.parse_list
    - base64.b64decode
    - websockets.legacy.async_timeout.Timeout.update
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - frames.Frame
    - _protocol_re.match
    - _token_re.match
    - typing.cast.is_closing
    - int.from_bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - arg.raw_items
    - asyncio.Protocol.logger.debug
    - websockets.headers.parse_extension
    - typing.cast.write_eof
    - struct.pack
    - <builtin>.isinstance
    - <builtin>.len
    - waiter.cancelled
    - websockets.headers.build_extension
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - decoder.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - warnings.warn
    - <builtin>.sorted
    - websockets.headers.parse_extension_item_param
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - websockets.legacy.http.read_request
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.async_timeout.Timeout.__init__
    - match.group
    - asyncio.Protocol.logger.info
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - headers.raw_items
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - <builtin>.sum
    - <builtin>.str
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - struct.unpack
    - _value_re.fullmatch
    - hashlib.sha1
    - typing.cast.close
    - items.append
    - extension_headers.append
    - websockets.legacy.server.remove_path_argument._ws_handler
    - <builtin>.tuple
    - fragments.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - asyncio.sleep
    - websockets.headers.parse_subprotocol_item
    - websockets.legacy.framing.Frame.read
    - response.encode
    - close.check
    - extension.decode
    - websockets.datastructures.Headers.update
    - loop.time
    - parameters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - _token_re.fullmatch
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.headers.build_extension_item
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - base64.b64encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - <builtin>.callable
    - websockets.headers.parse_subprotocol
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - asyncio.Protocol.logger.error
    - match.end
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - raw_name.decode
    - frame.data.decode
    - websockets.headers.parse_upgrade
    - websockets.headers.peek_ahead
    - typing.cast.can_write_eof
    - _OWS_re.match
    - asyncio.Protocol.pings.items
    - raw_value.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - codecs.getincrementaldecoder
    - asyncio.shield
    - websockets.headers.parse_connection_option
    - s_w_key.encode
    - <builtin>.range
    - frames.Opcode
    - websockets.legacy.http.read_line
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - line.endswith
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.headers.parse_connection
    - websockets.datastructures.Headers.get_all
    - websockets.utils.accept_key
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - time.perf_counter
    - websockets.frames.Close.serialize
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - websockets.headers.parse_upgrade_protocol
    - websockets.legacy.handshake.check_request
    - headers.setdefault
    - <builtin>.any
    - websockets.legacy.handshake.build_response
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - headers.get
    - accepted_extensions.append
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - new_frame.check
    - data.encode
    - line.split
    - websockets.legacy.server.WebSocketServerProtocol.handler
    - websockets.frames.Close.check
    - <builtin>.super
    - typing.NewType.reader.readline
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - websockets.legacy.server.WebSocketServerProtocol.handshake
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - <builtin>.iter
    - <builtin>.set
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - key.lower
    - request_line.split
    - typing.cast
    - asyncio.get_running_loop
    - websockets.legacy.http.read_headers
    - asyncio.timeout
    - websockets.datastructures.Headers.__init__
    - asyncio.Protocol.messages.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - speedups.apply_mask
    - email.utils.formatdate
    - _quoted_string_re.match
    - _unquote_re.sub
    - raw_value.strip
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.async_timeout.timeout
    - websockets.headers.parse_quoted_string
    - websockets.datastructures.Headers.raw_items
    - raw_path.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - pong_waiter.done
    - <builtin>.bytes
    - ext_factory.process_request_params
    - response_headers.setdefault
    - websockets.headers.parse_token
    - value.lower
    - random.getrandbits
    - websockets.frames.Close.parse
    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: 12
    functionLinenumber: 155
    functionName: websockets.legacy.server.WebSocketServerProtocol.handler
    functionSourceFile: websockets.legacy.server
    functionUses: 1
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.headers.parse_list
    - base64.b64decode
    - websockets.legacy.async_timeout.Timeout.update
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - frames.Frame
    - _protocol_re.match
    - _token_re.match
    - typing.cast.is_closing
    - int.from_bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - arg.raw_items
    - asyncio.Protocol.logger.debug
    - websockets.headers.parse_extension
    - typing.cast.write_eof
    - struct.pack
    - <builtin>.isinstance
    - <builtin>.len
    - waiter.cancelled
    - websockets.headers.build_extension
    - websockets.legacy.protocol.WebSocketCommonProtocol.close
    - decoder.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - warnings.warn
    - <builtin>.sorted
    - websockets.headers.parse_extension_item_param
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - websockets.legacy.http.read_request
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.async_timeout.Timeout.__init__
    - match.group
    - asyncio.Protocol.logger.info
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - headers.raw_items
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - <builtin>.sum
    - <builtin>.str
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - struct.unpack
    - _value_re.fullmatch
    - hashlib.sha1
    - typing.cast.close
    - items.append
    - extension_headers.append
    - websockets.legacy.server.remove_path_argument._ws_handler
    - <builtin>.tuple
    - fragments.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - asyncio.sleep
    - websockets.headers.parse_subprotocol_item
    - websockets.legacy.framing.Frame.read
    - response.encode
    - close.check
    - extension.decode
    - websockets.datastructures.Headers.update
    - loop.time
    - parameters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - _token_re.fullmatch
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.headers.build_extension_item
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - base64.b64encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - <builtin>.callable
    - websockets.headers.parse_subprotocol
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - asyncio.Protocol.logger.error
    - match.end
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - raw_name.decode
    - frame.data.decode
    - websockets.headers.parse_upgrade
    - websockets.headers.peek_ahead
    - typing.cast.can_write_eof
    - _OWS_re.match
    - asyncio.Protocol.pings.items
    - raw_value.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - codecs.getincrementaldecoder
    - asyncio.shield
    - websockets.headers.parse_connection_option
    - s_w_key.encode
    - <builtin>.range
    - frames.Opcode
    - websockets.legacy.http.read_line
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - line.endswith
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.headers.parse_connection
    - websockets.datastructures.Headers.get_all
    - websockets.utils.accept_key
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - time.perf_counter
    - websockets.frames.Close.serialize
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - websockets.headers.parse_upgrade_protocol
    - websockets.legacy.handshake.check_request
    - headers.setdefault
    - <builtin>.any
    - websockets.legacy.handshake.build_response
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - headers.get
    - accepted_extensions.append
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - new_frame.check
    - data.encode
    - line.split
    - websockets.frames.Close.check
    - <builtin>.super
    - typing.NewType.reader.readline
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - websockets.legacy.server.WebSocketServerProtocol.handshake
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - <builtin>.iter
    - <builtin>.set
    - key.lower
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - request_line.split
    - typing.cast
    - asyncio.get_running_loop
    - websockets.legacy.http.read_headers
    - asyncio.timeout
    - websockets.datastructures.Headers.__init__
    - asyncio.Protocol.messages.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - speedups.apply_mask
    - email.utils.formatdate
    - _quoted_string_re.match
    - _unquote_re.sub
    - raw_value.strip
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.async_timeout.timeout
    - websockets.headers.parse_quoted_string
    - websockets.datastructures.Headers.raw_items
    - raw_path.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - pong_waiter.done
    - <builtin>.bytes
    - ext_factory.process_request_params
    - response_headers.setdefault
    - websockets.headers.parse_token
    - value.lower
    - random.getrandbits
    - websockets.frames.Close.parse
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 22
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    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: 61
    functionName: websockets.legacy.async_timeout.timeout
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 22
    functionsReached:
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.async_timeout.Timeout.__init__
    - loop.time
    - asyncio.get_running_loop
    - websockets.legacy.async_timeout.Timeout._reschedule
    - asyncio.current_task
    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 0x7f14817a5970>
    - <ast.Constant object at 0x7f14817a5940>
    - <ast.Constant object at 0x7f14817a5910>
    - <ast.Constant object at 0x7f14817a58e0>
    argNames:
    - self
    - origins
    - available_extensions
    - available_subprotocols
    - extra_headers
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 15
    functionLinenumber: 554
    functionName: websockets.legacy.server.WebSocketServerProtocol.handshake
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.headers.parse_list
    - base64.b64decode
    - websockets.legacy.async_timeout.Timeout.update
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - frames.Frame
    - _protocol_re.match
    - _token_re.match
    - typing.cast.is_closing
    - int.from_bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - arg.raw_items
    - asyncio.Protocol.logger.debug
    - websockets.headers.parse_extension
    - typing.cast.write_eof
    - struct.pack
    - <builtin>.isinstance
    - <builtin>.len
    - waiter.cancelled
    - websockets.headers.build_extension
    - decoder.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - warnings.warn
    - websockets.headers.parse_extension_item_param
    - <builtin>.sorted
    - websockets.legacy.server.WebSocketServerProtocol.write_http_response
    - websockets.legacy.http.read_request
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.async_timeout.Timeout.__init__
    - match.group
    - asyncio.Protocol.logger.info
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - headers.raw_items
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - <builtin>.sum
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - <builtin>.str
    - struct.unpack
    - _value_re.fullmatch
    - hashlib.sha1
    - typing.cast.close
    - items.append
    - extension_headers.append
    - <builtin>.tuple
    - fragments.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - asyncio.sleep
    - websockets.headers.parse_subprotocol_item
    - websockets.legacy.framing.Frame.read
    - response.encode
    - close.check
    - extension.decode
    - websockets.datastructures.Headers.update
    - loop.time
    - parameters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - _token_re.fullmatch
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.headers.build_extension_item
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - base64.b64encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - <builtin>.callable
    - websockets.headers.parse_subprotocol
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - asyncio.Protocol.logger.error
    - match.end
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - raw_name.decode
    - frame.data.decode
    - websockets.headers.parse_upgrade
    - websockets.headers.peek_ahead
    - typing.cast.can_write_eof
    - _OWS_re.match
    - asyncio.Protocol.pings.items
    - raw_value.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - codecs.getincrementaldecoder
    - asyncio.shield
    - websockets.headers.parse_connection_option
    - s_w_key.encode
    - <builtin>.range
    - frames.Opcode
    - websockets.legacy.http.read_line
    - websockets.legacy.server.WebSocketServerProtocol.read_http_request
    - line.endswith
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.headers.parse_connection
    - websockets.datastructures.Headers.get_all
    - websockets.utils.accept_key
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - time.perf_counter
    - websockets.frames.Close.serialize
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - websockets.legacy.server.WebSocketServerProtocol.process_origin
    - websockets.headers.parse_upgrade_protocol
    - websockets.legacy.handshake.check_request
    - <builtin>.any
    - websockets.legacy.handshake.build_response
    - websockets.legacy.server.WebSocketServerProtocol.process_request
    - headers.get
    - accepted_extensions.append
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - new_frame.check
    - data.encode
    - line.split
    - websockets.frames.Close.check
    - <builtin>.super
    - typing.NewType.reader.readline
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - <builtin>.iter
    - <builtin>.set
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - key.lower
    - request_line.split
    - typing.cast
    - asyncio.get_running_loop
    - websockets.legacy.http.read_headers
    - asyncio.timeout
    - websockets.datastructures.Headers.__init__
    - asyncio.Protocol.messages.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - speedups.apply_mask
    - email.utils.formatdate
    - _quoted_string_re.match
    - _unquote_re.sub
    - raw_value.strip
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.async_timeout.timeout
    - websockets.headers.parse_quoted_string
    - websockets.datastructures.Headers.raw_items
    - raw_path.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - pong_waiter.done
    - <builtin>.bytes
    - ext_factory.process_request_params
    - response_headers.setdefault
    - websockets.headers.parse_token
    - value.lower
    - random.getrandbits
    - websockets.frames.Close.parse
    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: asyncio.Protocol.logger.debug
    functionSourceFile: asyncio
    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: asyncio.Protocol.logger.error
    functionSourceFile: asyncio
    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: 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 0x7f148178a250>
    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>.len
    - typing.cast.write
    - response.encode
    - asyncio.Protocol.logger.debug
    - <builtin>.iter
    - websockets.datastructures.Headers.raw_items
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: 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: 6
    functionLinenumber: 1339
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    functionSourceFile: websockets.legacy.protocol
    functionUses: 18
    functionsReached:
    - websockets.legacy.async_timeout.Timeout.update
    - asyncio.get_running_loop
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - asyncio.Protocol.connection_lost_waiter.done
    - asyncio.Protocol.logger.debug
    - websockets.legacy.async_timeout.Timeout.__init__
    - websockets.legacy.async_timeout.timeout
    - typing.cast.close
    - asyncio.shield
    - loop.time
    - asyncio.timeout
    - typing.cast.is_closing
    - typing.cast.abort
    - websockets.legacy.async_timeout.Timeout._reschedule
    - asyncio.current_task
    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: 1174
    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 0x7f1481b55c40>
    - <ast.Constant object at 0x7f1481b55be0>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 1388
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    functionSourceFile: websockets.legacy.protocol
    functionUses: 16
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.frames.Close.check
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.shield
    - typing.cast.write
    - typing.cast.close
    - asyncio.timeout
    - typing.cast.is_closing
    - asyncio.get_running_loop
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.async_timeout.timeout
    - websockets.frames.Close.serialize
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - struct.pack
    - asyncio.current_task
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - typing.cast.can_write_eof
    - typing.cast.abort
    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 0x7f148147d610>
    - <ast.Constant object at 0x7f148147d5b0>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 740
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close
    functionSourceFile: websockets.legacy.protocol
    functionUses: 2
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.shield
    - typing.cast.write
    - typing.cast.close
    - asyncio.get_running_loop
    - asyncio.timeout
    - typing.cast.is_closing
    - asyncio.sleep
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - struct.pack
    - asyncio.current_task
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 20
    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: 266
    functionName: websockets.legacy.server.WebSocketServerProtocol.read_http_request
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - raw_value.decode
    - websockets.legacy.http.read_request
    - line.split
    - <builtin>.super
    - headers.raw_items
    - typing.NewType.reader.readline
    - <builtin>.range
    - websockets.legacy.http.read_line
    - _value_re.fullmatch
    - request_line.split
    - line.endswith
    - <builtin>.tuple
    - websockets.legacy.http.read_headers
    - websockets.datastructures.Headers.__init__
    - raw_value.strip
    - arg.raw_items
    - asyncio.Protocol.logger.debug
    - websockets.datastructures.Headers.update
    - raw_path.decode
    - _token_re.fullmatch
    - <builtin>.len
    - <builtin>.isinstance
    - raw_name.decode
    linkageType: pythonLinkage
    raised:
    - InvalidMessage
    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_value.decode
    - line.split
    - <builtin>.super
    - typing.NewType.reader.readline
    - <builtin>.range
    - websockets.legacy.http.read_line
    - _value_re.fullmatch
    - request_line.split
    - line.endswith
    - <builtin>.tuple
    - websockets.legacy.http.read_headers
    - websockets.datastructures.Headers.__init__
    - raw_value.strip
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - raw_path.decode
    - _token_re.fullmatch
    - <builtin>.len
    - <builtin>.isinstance
    - raw_name.decode
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: 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: 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: 21
    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: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7f14817876a0>
    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:
    - typing.cast
    - headers.get
    linkageType: pythonLinkage
    raised:
    - InvalidOrigin
    - InvalidHeader
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - headers
    - available_extensions
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 6
    functionLinenumber: 399
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_extensions
    functionSourceFile: websockets.legacy.server
    functionUses: 4
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - extension_headers.append
    - key.lower
    - _OWS_re.match
    - typing.cast
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - websockets.datastructures.Headers.get_all
    - _unquote_re.sub
    - websockets.headers.parse_extension
    - websockets.headers.parse_quoted_string
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - websockets.headers.build_extension_item
    - <builtin>.len
    - websockets.headers.build_extension
    - ext_factory.process_request_params
    - websockets.headers.parse_token
    - match.end
    - accepted_extensions.append
    - websockets.headers.peek_ahead
    - websockets.headers.parse_extension_item_param
    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: 481
    functionName: websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    functionSourceFile: websockets.legacy.server
    functionUses: 4
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - <builtin>.sorted
    - items.append
    - <builtin>.set
    - key.lower
    - typing.cast
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - websockets.datastructures.Headers.get_all
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.len
    - websockets.headers.parse_subprotocol
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - _OWS_re.match
    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: 513
    functionName: websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    functionSourceFile: websockets.legacy.server
    functionUses: 5
    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: 38
    functionName: websockets.legacy.handshake.check_request
    functionSourceFile: websockets.legacy.handshake
    functionUses: 3
    functionsReached:
    - websockets.headers.parse_list
    - base64.b64decode
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - s_w_key.encode
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - key.lower
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.parse_connection
    - _quoted_string_re.match
    - websockets.datastructures.Headers.get_all
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.any
    - <builtin>.len
    - websockets.headers.parse_token
    - match.end
    - value.lower
    - websockets.headers.parse_upgrade
    - websockets.headers.peek_ahead
    - _OWS_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidUpgrade
    - InvalidHeader
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues: []
    argNames:
    - headers
    - key
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 106
    functionName: websockets.legacy.handshake.build_response
    functionSourceFile: websockets.legacy.handshake
    functionUses: 3
    functionsReached:
    - base64.b64encode
    - hashlib.sha1
    - websockets.utils.accept_key
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: <builtin>.callable
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: response_headers.setdefault
    functionSourceFile: <builtin>
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 14
    functionLinenumber: 346
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    functionSourceFile: websockets.legacy.protocol
    functionUses: 4
    functionsReached:
    - typing.NamedTuple.__init__
    - new_frame.check
    - data.encode
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.async_timeout.Timeout.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - asyncio.shield
    - codecs.getincrementaldecoder
    - ping_ids.append
    - websockets.frames.Close.check
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - frames.Frame
    - struct.unpack
    - frames.Opcode
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.close
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - fragments.append
    - asyncio.get_running_loop
    - typing.cast.is_closing
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - asyncio.Protocol.messages.append
    - websockets.legacy.framing.Frame.read
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - int.from_bytes
    - asyncio.sleep
    - speedups.apply_mask
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - extension.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.async_timeout.timeout
    - time.perf_counter
    - close.check
    - websockets.frames.Close.serialize
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - struct.pack
    - pong_waiter.done
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - <builtin>.bytes
    - <builtin>.len
    - waiter.cancelled
    - <builtin>.isinstance
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - decoder.decode
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - asyncio.Protocol.logger.error
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - frame.data.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - random.getrandbits
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.frames.Close.parse
    - asyncio.Protocol.pings.items
    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 0x7f148179bfd0>
    argNames:
    - self
    - logger
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 667
    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: 681
    functionName: websockets.legacy.server.WebSocketServer.wrap
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - sock.getsockname
    - <builtin>.str
    - server.get_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sock.getsockname
    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: 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: 713
    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: 720
    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 0x7f1481782190>
    argNames:
    - self
    - close_connections
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 727
    functionName: websockets.legacy.server.WebSocketServer.close
    functionSourceFile: websockets.legacy.server
    functionUses: 2
    functionsReached:
    - asyncio.wait
    - websockets.legacy.server.WebSocketServer._close
    - asyncio.create_task
    - websocket.close
    - asyncio.sleep
    - websockets.legacy.server.WebSocketServer.get_loop
    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: 750
    functionName: websockets.legacy.server.WebSocketServer._close
    functionSourceFile: websockets.legacy.server
    functionUses: 3
    functionsReached:
    - websocket.close
    - asyncio.create_task
    - asyncio.sleep
    - asyncio.wait
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 816
    functionName: websockets.legacy.server.WebSocketServer.get_loop
    functionSourceFile: ''
    functionUses: 3
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.sleep
    functionSourceFile: asyncio
    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: websocket.close
    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: asyncio.create_task
    functionSourceFile: asyncio
    functionUses: 4
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.wait
    functionSourceFile: asyncio
    functionUses: 6
    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: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.shield
    functionSourceFile: asyncio
    functionUses: 27
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - 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:
    - asyncio.wait
    - websockets.legacy.server.WebSocketServer.close
    - asyncio.shield
    - websockets.legacy.server.WebSocketServer._close
    - asyncio.create_task
    - websocket.close
    - asyncio.sleep
    - websockets.legacy.server.WebSocketServer.get_loop
    - websockets.legacy.server.WebSocketServer.wait_closed
    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 0x7f1481932190>
    - <ast.Constant object at 0x7f1481932160>
    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: 973
    functionName: websockets.legacy.server.Serve.__init__
    functionSourceFile: websockets.legacy.server
    functionUses: 1
    functionsReached:
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - <builtin>.isinstance
    - functools.partial
    - kwargs.get
    - typing.cast
    - inspect.signature
    - websockets.legacy.server.remove_path_argument
    - <builtin>.set
    - asyncio.get_event_loop
    - <builtin>.list
    - websockets.legacy.server.WebSocketServer.__init__
    - warnings.warn
    - _token_re.fullmatch
    - logging.getLogger
    - kwargs.pop
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - websockets.headers.validate_subprotocols
    - <builtin>.any
    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: kwargs.pop
    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.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: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: kwargs.get
    functionSourceFile: <builtin>
    functionUses: 5
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    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: 637
    functionName: websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 4
    functionsReached:
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__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: functools.partial
    functionSourceFile: functools
    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: 0
    functionLinenumber: 1097
    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: 1100
    functionName: websockets.legacy.server.Serve.__aexit__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - asyncio.wait
    - websockets.legacy.server.WebSocketServer.close
    - asyncio.shield
    - websockets.legacy.server.WebSocketServer._close
    - asyncio.create_task
    - websocket.close
    - asyncio.sleep
    - websockets.legacy.server.WebSocketServer.get_loop
    - websockets.legacy.server.WebSocketServer.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: 1111
    functionName: websockets.legacy.server.Serve.__await__
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - server.get_loop
    - sock.getsockname
    - websockets.legacy.server.WebSocketServer.wrap
    - <builtin>.str
    - websockets.legacy.server.Serve.__await_impl__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1115
    functionName: websockets.legacy.server.Serve.__await_impl__
    functionSourceFile: websockets.legacy.server
    functionUses: 1
    functionsReached:
    - sock.getsockname
    - websockets.legacy.server.WebSocketServer.wrap
    - <builtin>.str
    - server.get_loop
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f1481921af0>
    argNames:
    - ws_handler
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 1128
    functionName: websockets.legacy.server.unix_serve
    functionSourceFile: websockets.legacy.server
    functionUses: 0
    functionsReached:
    - functools.partial
    - websockets.legacy.server.remove_path_argument
    - websockets.legacy.server.Serve.__init__
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - <builtin>.set
    - websockets.legacy.server.WebSocketServer.__init__
    - typing.cast
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - websockets.headers.validate_subprotocols
    - asyncio.get_event_loop
    - <builtin>.list
    - _token_re.fullmatch
    - <builtin>.any
    - <builtin>.isinstance
    - kwargs.get
    - inspect.signature
    - logging.getLogger
    - kwargs.pop
    - 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: 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: 173
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.__init__
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - asyncio.Lock
    - logger.isEnabledFor
    - uuid.uuid4
    - collections.deque
    - asyncio.Protocol.logger.debug
    - loop.create_future
    - asyncio.get_event_loop
    - warnings.warn
    - asyncio.StreamReader
    - logging.getLogger
    - logging.LoggerAdapter
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: logging.LoggerAdapter
    functionSourceFile: logging
    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: logger.isEnabledFor
    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.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: 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: 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: collections.deque
    functionSourceFile: collections
    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: 318
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    functionSourceFile: websockets.legacy.protocol
    functionUses: 17
    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: 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: waiter.cancelled
    functionSourceFile: <builtin>
    functionUses: 18
    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: 330
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol._drain
    functionSourceFile: websockets.legacy.protocol
    functionUses: 16
    functionsReached:
    - waiter.cancelled
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.is_closing
    - asyncio.sleep
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 20
    functionsReached: []
    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: 954
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    functionSourceFile: websockets.legacy.protocol
    functionUses: 5
    functionsReached:
    - typing.NamedTuple.__init__
    - new_frame.check
    - data.encode
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - ping_ids.append
    - codecs.getincrementaldecoder
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - asyncio.shield
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.check
    - websockets.legacy.async_timeout.Timeout.__init__
    - <builtin>.reversed
    - websockets.utils.apply_mask
    - frames.Frame
    - struct.unpack
    - frames.Opcode
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.close
    - fragments.append
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - typing.cast.is_closing
    - asyncio.sleep
    - asyncio.Protocol.messages.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - int.from_bytes
    - websockets.legacy.framing.Frame.read
    - speedups.apply_mask
    - asyncio.get_running_loop
    - websockets.legacy.async_timeout.Timeout._reschedule
    - extension.decode
    - close.check
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - time.perf_counter
    - websockets.frames.Close.serialize
    - websockets.legacy.async_timeout.timeout
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - struct.pack
    - pong_waiter.done
    - websockets.frames.prepare_ctrl
    - <builtin>.bytes
    - asyncio.current_task
    - <builtin>.len
    - <builtin>.isinstance
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - decoder.decode
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - asyncio.Protocol.logger.error
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - frame.data.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.frames.Close.parse
    - asyncio.Protocol.pings.items
    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: 1238
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    functionSourceFile: websockets.legacy.protocol
    functionUses: 5
    functionsReached:
    - typing.NamedTuple.__init__
    - data.encode
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.async_timeout.Timeout.__init__
    - websockets.frames.Close.check
    - asyncio.shield
    - typing.cast.write
    - typing.cast.close
    - asyncio.get_running_loop
    - asyncio.timeout
    - typing.cast.is_closing
    - asyncio.sleep
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.async_timeout.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - time.perf_counter
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - struct.pack
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - <builtin>.bytes
    - <builtin>.isinstance
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - asyncio.Protocol.logger.error
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - random.getrandbits
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    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: 6
    functionLinenumber: 1285
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    functionSourceFile: websockets.legacy.protocol
    functionUses: 17
    functionsReached:
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.shield
    - typing.cast.close
    - asyncio.get_running_loop
    - asyncio.timeout
    - typing.cast.is_closing
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.async_timeout.timeout
    - typing.cast.write_eof
    - loop.time
    - asyncio.current_task
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - typing.cast.can_write_eof
    - typing.cast.abort
    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: 366
    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: 372
    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: 378
    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: 385
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.local_address
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - typing.cast.get_extra_info
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.get_extra_info
    functionSourceFile: typing
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 405
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.remote_address
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - typing.cast.get_extra_info
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 425
    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: 439
    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: 450
    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: 468
    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: 485
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.__aiter__
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - websockets.legacy.protocol.WebSocketCommonProtocol.recv
    - pop_message_waiter.done
    - asyncio.Protocol.messages.popleft
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.shield
    - 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: 502
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.recv
    functionSourceFile: websockets.legacy.protocol
    functionUses: 1
    functionsReached:
    - <builtin>.len
    - pop_message_waiter.done
    - asyncio.Protocol.messages.popleft
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.shield
    - 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: 920
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    functionSourceFile: websockets.legacy.protocol
    functionUses: 18
    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: 580
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.send
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.check
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.shield
    - <builtin>.next
    - websockets.frames.prepare_data
    - asyncio.Future
    - typing.cast.write
    - <builtin>.type
    - typing.cast.close
    - <builtin>.iter
    - typing.cast
    - asyncio.get_running_loop
    - typing.cast.is_closing
    - asyncio.timeout
    - asyncio.sleep
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.async_timeout.timeout
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - struct.pack
    - asyncio.current_task
    - <builtin>.isinstance
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.encode
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    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: 1200
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 14
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.check
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.shield
    - typing.cast.write
    - typing.cast.close
    - asyncio.get_running_loop
    - typing.cast.is_closing
    - asyncio.timeout
    - asyncio.sleep
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.async_timeout.timeout
    - websockets.frames.Close.serialize
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - struct.pack
    - asyncio.current_task
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    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.Future
    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: <builtin>.type
    functionSourceFile: <builtin>
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f1481b52940>
    argNames:
    - self
    - close
    - data
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 1211
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 9
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.check
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.shield
    - typing.cast.write
    - typing.cast.close
    - asyncio.timeout
    - typing.cast.is_closing
    - asyncio.get_running_loop
    - asyncio.sleep
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.async_timeout.timeout
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - struct.pack
    - asyncio.current_task
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    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.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 0x7f14814a3550>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 808
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.ping
    functionSourceFile: websockets.legacy.protocol
    functionUses: 6
    functionsReached:
    - typing.NamedTuple.__init__
    - data.encode
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.async_timeout.Timeout.__init__
    - websockets.frames.Close.check
    - asyncio.shield
    - typing.cast.write
    - typing.cast.close
    - asyncio.get_running_loop
    - typing.cast.is_closing
    - asyncio.timeout
    - asyncio.sleep
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.async_timeout.timeout
    - time.perf_counter
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - struct.pack
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - <builtin>.bytes
    - <builtin>.isinstance
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - random.getrandbits
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    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: random.getrandbits
    functionSourceFile: random
    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: 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 0x7f1481486400>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 10
    functionLinenumber: 869
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.pong
    functionSourceFile: websockets.legacy.protocol
    functionUses: 8
    functionsReached:
    - typing.NamedTuple.__init__
    - data.encode
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.check
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.shield
    - typing.cast.write
    - typing.cast.close
    - asyncio.get_running_loop
    - typing.cast.is_closing
    - asyncio.timeout
    - asyncio.sleep
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.async_timeout.timeout
    - websockets.frames.Close.serialize
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - struct.pack
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - <builtin>.bytes
    - <builtin>.isinstance
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    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: 897
    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: 1024
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    functionSourceFile: websockets.legacy.protocol
    functionUses: 6
    functionsReached:
    - typing.NamedTuple.__init__
    - new_frame.check
    - data.encode
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - ping_ids.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - codecs.getincrementaldecoder
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.shield
    - websockets.legacy.async_timeout.Timeout.__init__
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - frames.Frame
    - struct.unpack
    - frames.Opcode
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.close
    - fragments.append
    - asyncio.get_running_loop
    - typing.cast.is_closing
    - int.from_bytes
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - websockets.legacy.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.framing.Frame.read
    - speedups.apply_mask
    - extension.decode
    - close.check
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - time.perf_counter
    - websockets.frames.Close.serialize
    - websockets.legacy.async_timeout.timeout
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - struct.pack
    - pong_waiter.done
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - <builtin>.bytes
    - <builtin>.isinstance
    - <builtin>.len
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - decoder.decode
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - frame.data.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.frames.Close.parse
    - asyncio.Protocol.pings.items
    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: 1097
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 7
    functionsReached:
    - typing.NamedTuple.__init__
    - new_frame.check
    - data.encode
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - ping_ids.append
    - websockets.frames.Close.check
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - asyncio.shield
    - websockets.legacy.async_timeout.Timeout.__init__
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - frames.Frame
    - struct.unpack
    - frames.Opcode
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - typing.cast.close
    - asyncio.get_running_loop
    - typing.cast.is_closing
    - int.from_bytes
    - asyncio.timeout
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - websockets.legacy.async_timeout.Timeout._reschedule
    - asyncio.sleep
    - websockets.legacy.framing.Frame.read
    - speedups.apply_mask
    - extension.decode
    - close.check
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - time.perf_counter
    - websockets.frames.Close.serialize
    - websockets.legacy.async_timeout.timeout
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - struct.pack
    - pong_waiter.done
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - <builtin>.bytes
    - <builtin>.len
    - <builtin>.isinstance
    - waiter.cancelled
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.frames.Close.parse
    - asyncio.Protocol.pings.items
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: frame.data.decode
    functionSourceFile: <builtin>
    functionUses: 7
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: codecs.getincrementaldecoder
    functionSourceFile: codecs
    functionUses: 8
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - frame
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 1079
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    functionSourceFile: websockets.legacy.protocol
    functionUses: 7
    functionsReached:
    - fragments.append
    - <builtin>.isinstance
    - <builtin>.len
    - 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: decoder.decode
    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: 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: 1160
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    functionSourceFile: websockets.legacy.protocol
    functionUses: 8
    functionsReached:
    - websockets.legacy.framing.Frame.read
    - typing.NamedTuple.__init__
    - struct.unpack
    - frames.Opcode
    - new_frame.check
    - <builtin>.len
    - extension.decode
    - asyncio.Protocol.logger.debug
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - int.from_bytes
    - speedups.apply_mask
    - frames.Frame
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 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: 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: pong_waiter.done
    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: pong_waiter.set_result
    functionSourceFile: <builtin>
    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: 42
    functionName: websockets.legacy.framing.Frame.read
    functionSourceFile: websockets.legacy.framing
    functionUses: 9
    functionsReached:
    - typing.NamedTuple.__init__
    - <builtin>.len
    - struct.unpack
    - frames.Opcode
    - new_frame.check
    - extension.decode
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - int.from_bytes
    - speedups.apply_mask
    - frames.Frame
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - PayloadTooBig
    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: 1175
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    functionSourceFile: websockets.legacy.protocol
    functionUses: 17
    functionsReached:
    - typing.NamedTuple.__init__
    - typing.cast.write
    - websockets.legacy.framing.Frame.write
    - asyncio.Protocol.logger.debug
    - enum.IntEnum.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.NamedTuple.__init__
    functionSourceFile: ''
    functionUses: 20
    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: 120
    functionName: websockets.legacy.framing.Frame.write
    functionSourceFile: websockets.legacy.framing
    functionUses: 18
    functionsReached:
    - typing.cast.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 8
    functionLinenumber: 1185
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.drain
    functionSourceFile: websockets.legacy.protocol
    functionUses: 15
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.frames.Close.check
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.shield
    - typing.cast.write
    - typing.cast.close
    - asyncio.timeout
    - typing.cast.is_closing
    - asyncio.get_running_loop
    - asyncio.sleep
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - websockets.legacy.async_timeout.timeout
    - websockets.frames.Close.serialize
    - typing.cast.write_eof
    - loop.time
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - struct.pack
    - asyncio.current_task
    - waiter.cancelled
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - typing.cast.can_write_eof
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 18
    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: 1369
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    functionSourceFile: websockets.legacy.protocol
    functionUses: 19
    functionsReached:
    - websockets.legacy.async_timeout.Timeout.update
    - asyncio.Protocol.connection_lost_waiter.done
    - websockets.legacy.async_timeout.Timeout.__init__
    - websockets.legacy.async_timeout.timeout
    - asyncio.shield
    - loop.time
    - asyncio.get_running_loop
    - asyncio.timeout
    - websockets.legacy.async_timeout.Timeout._reschedule
    - 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: typing.cast.can_write_eof
    functionSourceFile: typing
    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: typing.cast.write_eof
    functionSourceFile: typing
    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: typing.cast.abort
    functionSourceFile: typing
    functionUses: 19
    functionsReached: []
    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: 1450
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.abort_pings
    functionSourceFile: websockets.legacy.protocol
    functionUses: 1
    functionsReached:
    - asyncio.Protocol.pings.values
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc
    - websockets.exceptions.ConnectionClosed.__init__
    - pong_waiter.set_exception
    - pong_waiter.cancel
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.pings.values
    functionSourceFile: asyncio
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: pong_waiter.set_exception
    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: pong_waiter.cancel
    functionSourceFile: <builtin>
    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: 1470
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.connection_made
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - typing.cast
    - typing.cast.set_write_buffer_limits
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 1
    functionsReached: []
    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: 1491
    functionName: websockets.legacy.protocol.WebSocketCommonProtocol.connection_lost
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - websockets.legacy.protocol.WebSocketCommonProtocol.abort_pings
    - asyncio.Protocol.connection_lost_waiter.set_result
    - waiter.done
    - asyncio.Protocol.pings.values
    - waiter.set_exception
    - asyncio.Protocol.logger.debug
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc
    - websockets.exceptions.ConnectionClosed.__init__
    - waiter.set_result
    - pong_waiter.set_exception
    - pong_waiter.cancel
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.Protocol.connection_lost_waiter.set_result
    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: 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: 1529
    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: 1533
    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: 1543
    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: 1546
    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 0x7f1481aa6760>
    argNames:
    - websockets
    - message
    - raise_exceptions
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 1562
    functionName: websockets.legacy.protocol.broadcast
    functionSourceFile: websockets.legacy.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - <builtin>.RuntimeError
    - typing.cast.encode
    - websocket.write_frame_sync
    - websocket.logger.warning
    - websockets.frames.prepare_data
    - 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: <builtin>.RuntimeError
    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: exceptions.append
    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.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: 25
    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: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: frames.Frame
    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: 35
    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: 38
    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: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - data
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 155
    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: 171
    functionName: websockets.legacy.framing.serialize_close
    functionSourceFile: websockets.legacy.framing
    functionUses: 0
    functionsReached:
    - websockets.frames.Close.serialize
    - struct.pack
    - websockets.frames.Close.check
    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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 4
    IfCount: 1
    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: 87
    functionName: websockets.protocol.Protocol.__init__
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - websockets.headers.parse_list
    - io.BytesIO
    - _protocol_re.match
    - _token_re.match
    - websockets.http11.Response.parse
    - int.from_bytes
    - websockets.frames.Frame.parse
    - websockets.streams.StreamReader.discard
    - arg.raw_items
    - websockets.headers.parse_extension
    - websockets.http11.parse_headers
    - struct.pack
    - <builtin>.len
    - <builtin>.isinstance
    - websockets.protocol.Protocol.send_eof
    - websockets.http11.Request.parse
    - logging.getLogger
    - websockets.headers.parse_extension_item_param
    - websockets.streams.StreamReader.at_eof
    - output.getvalue
    - match.group
    - websockets.frames.Frame.serialize
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - websockets.client.ClientProtocol.process_extensions
    - websockets.server.ServerProtocol.parse
    - <builtin>.sum
    - <builtin>.str
    - struct.unpack
    - _value_re.fullmatch
    - websockets.streams.StreamReader.read_to_eof
    - hashlib.sha1
    - items.append
    - extension.encode
    - <builtin>.tuple
    - websockets.headers.parse_subprotocol_item
    - websockets.streams.StreamReader.read_line
    - websockets.streams.StreamReader.read_exact
    - extension.decode
    - secrets.token_bytes
    - close.check
    - websockets.datastructures.Headers.update
    - parameters.append
    - _token_re.fullmatch
    - base64.b64encode
    - output.write
    - websockets.headers.parse_subprotocol
    - response.headers.raw_items
    - match.end
    - enum.IntEnum.__init__
    - websockets.http11.parse_line
    - raw_name.decode
    - websockets.headers.parse_upgrade
    - websockets.headers.peek_ahead
    - _OWS_re.match
    - raw_value.decode
    - uuid.uuid4
    - websockets.headers.parse_connection_option
    - <builtin>.next
    - <builtin>.range
    - websockets.protocol.Protocol.discard
    - line.endswith
    - websockets.client.ClientProtocol.process_response
    - websockets.frames.Frame.check
    - websockets.headers.parse_connection
    - websockets.utils.accept_key
    - websockets.frames.Close.serialize
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - <builtin>.any
    - websockets.protocol.Protocol.send_frame
    - websockets.protocol.Protocol.recv_frame
    - frame.check
    - accepted_extensions.append
    - websockets.client.ClientProtocol.process_subprotocol
    - extension_factory.process_response_params
    - line.split
    - websockets.protocol.Protocol.parse
    - websockets.frames.Close.check
    - <builtin>.super
    - request.headers.raw_items
    - <builtin>.int
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - websockets.protocol.Protocol.fail
    - <builtin>.bytearray
    - request_line.split
    - typing.cast
    - speedups.apply_mask
    - websockets.datastructures.Headers.__init__
    - _quoted_string_re.match
    - _unquote_re.sub
    - raw_value.strip
    - websockets.client.ClientProtocol.parse
    - websockets.headers.parse_quoted_string
    - raw_path.decode
    - logger.isEnabledFor
    - status_line.split
    - websockets.streams.StreamReader.__init__
    - websockets.headers.parse_token
    - raw_reason.decode
    - value.lower
    - side.name.lower
    - websockets.frames.Close.parse
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 11
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 7
    functionLinenumber: 313
    functionName: websockets.client.ClientProtocol.parse
    functionSourceFile: websockets.client
    functionUses: 1
    functionsReached:
    - raw_value.decode
    - websockets.streams.StreamReader.at_eof
    - websockets.headers.parse_list
    - extension_factory.process_response_params
    - line.split
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.super
    - <builtin>.int
    - websockets.client.ClientProtocol.process_extensions
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - <builtin>.next
    - websockets.headers.parse_extension_item
    - <builtin>.range
    - _protocol_re.match
    - _value_re.fullmatch
    - _token_re.match
    - websockets.streams.StreamReader.read_to_eof
    - hashlib.sha1
    - websockets.http11.Response.parse
    - items.append
    - websockets.protocol.Protocol.discard
    - line.endswith
    - <builtin>.tuple
    - websockets.client.ClientProtocol.process_response
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.datastructures.Headers.__init__
    - websockets.headers.parse_subprotocol_item
    - websockets.streams.StreamReader.read_line
    - websockets.streams.StreamReader.read_exact
    - websockets.headers.parse_connection
    - _quoted_string_re.match
    - _unquote_re.sub
    - raw_value.strip
    - websockets.streams.StreamReader.discard
    - websockets.utils.accept_key
    - arg.raw_items
    - websockets.headers.parse_extension
    - websockets.datastructures.Headers.update
    - websockets.headers.parse_quoted_string
    - websockets.http11.parse_headers
    - headers.get_all
    - parameters.append
    - _token_re.fullmatch
    - websockets.headers.parse_upgrade_protocol
    - <builtin>.any
    - <builtin>.len
    - <builtin>.isinstance
    - base64.b64encode
    - status_line.split
    - websockets.headers.parse_subprotocol
    - websockets.protocol.Protocol.send_eof
    - response.headers.raw_items
    - websockets.headers.parse_token
    - match.end
    - websockets.http11.parse_line
    - raw_reason.decode
    - raw_name.decode
    - value.lower
    - websockets.headers.parse_upgrade
    - accepted_extensions.append
    - websockets.headers.peek_ahead
    - websockets.client.ClientProtocol.process_subprotocol
    - _OWS_re.match
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 11
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 5
    functionLinenumber: 508
    functionName: websockets.protocol.Protocol.parse
    functionSourceFile: websockets.protocol
    functionUses: 1
    functionsReached:
    - websockets.streams.StreamReader.at_eof
    - output.getvalue
    - websockets.frames.Close.check
    - websockets.frames.Frame.serialize
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - io.BytesIO
    - <builtin>.str
    - <builtin>.next
    - struct.unpack
    - websockets.protocol.Protocol.fail
    - extension.encode
    - websockets.protocol.Protocol.discard
    - int.from_bytes
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.streams.StreamReader.read_exact
    - websockets.frames.Frame.parse
    - websockets.streams.StreamReader.discard
    - extension.decode
    - close.check
    - secrets.token_bytes
    - websockets.frames.Close.serialize
    - struct.pack
    - websockets.protocol.Protocol.send_frame
    - <builtin>.len
    - output.write
    - websockets.protocol.Protocol.recv_frame
    - websockets.protocol.Protocol.send_eof
    - enum.IntEnum.__init__
    - frame.check
    - websockets.frames.Close.parse
    linkageType: pythonLinkage
    raised:
    - EOFError
    - AssertionError
    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: 166
    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.CLOSING.setter
    - enum.IntEnum.OPEN.setter
    - enum.IntEnum.CLOSED.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.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: 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: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 1
    IfCount: 2
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 172
    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: 190
    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: 208
    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: 245
    functionName: websockets.protocol.Protocol.receive_data
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - websockets.streams.StreamReader.feed_data
    - <builtin>.next
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 261
    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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - data
    - fin
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 281
    functionName: websockets.protocol.Protocol.send_continuation
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - output.getvalue
    - output.write
    - secrets.token_bytes
    - extension.encode
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - struct.pack
    - int.from_bytes
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.protocol.Protocol.send_frame
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    returnType: N/A
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 2
    IfCount: 2
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 691
    functionName: websockets.protocol.Protocol.send_frame
    functionSourceFile: websockets.protocol
    functionUses: 10
    functionsReached:
    - <builtin>.len
    - output.getvalue
    - output.write
    - secrets.token_bytes
    - extension.encode
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - struct.pack
    - int.from_bytes
    - 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: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f148196e670>
    argNames:
    - self
    - data
    - fin
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 303
    functionName: websockets.protocol.Protocol.send_text
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - output.getvalue
    - output.write
    - secrets.token_bytes
    - extension.encode
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - struct.pack
    - int.from_bytes
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.protocol.Protocol.send_frame
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 2
    IfCount: 1
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f1481556820>
    argNames:
    - self
    - data
    - fin
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 324
    functionName: websockets.protocol.Protocol.send_binary
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - output.getvalue
    - output.write
    - secrets.token_bytes
    - extension.encode
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - struct.pack
    - int.from_bytes
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.protocol.Protocol.send_frame
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 2
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f148165a880>
    - <ast.Constant object at 0x7f148165a490>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 345
    functionName: websockets.protocol.Protocol.send_close
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - output.write
    - output.getvalue
    - int.from_bytes
    - secrets.token_bytes
    - websockets.frames.Close.check
    - extension.encode
    - websockets.frames.Close.serialize
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - struct.pack
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.protocol.Protocol.send_frame
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    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: 4
    functionLinenumber: 377
    functionName: websockets.protocol.Protocol.send_ping
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - output.getvalue
    - output.write
    - secrets.token_bytes
    - extension.encode
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - struct.pack
    - int.from_bytes
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.protocol.Protocol.send_frame
    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: 4
    functionLinenumber: 390
    functionName: websockets.protocol.Protocol.send_pong
    functionSourceFile: websockets.protocol
    functionUses: 0
    functionsReached:
    - <builtin>.len
    - output.getvalue
    - output.write
    - secrets.token_bytes
    - extension.encode
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - struct.pack
    - int.from_bytes
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.protocol.Protocol.send_frame
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 4
    IfCount: 3
    argCount: 3
    argDefaultValues:
    - <ast.Constant object at 0x7f1481ba2ee0>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 403
    functionName: websockets.protocol.Protocol.fail
    functionSourceFile: websockets.protocol
    functionUses: 2
    functionsReached:
    - websockets.streams.StreamReader.at_eof
    - output.getvalue
    - websockets.frames.Close.check
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - <builtin>.next
    - extension.encode
    - websockets.protocol.Protocol.discard
    - int.from_bytes
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.streams.StreamReader.discard
    - secrets.token_bytes
    - websockets.frames.Close.serialize
    - struct.pack
    - websockets.protocol.Protocol.send_frame
    - <builtin>.len
    - output.write
    - websockets.protocol.Protocol.send_eof
    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: 446
    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: 462
    functionName: websockets.protocol.Protocol.data_to_send
    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: 482
    functionName: websockets.protocol.Protocol.close_expected
    functionSourceFile: websockets.protocol
    functionUses: 0
    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: 609
    functionName: websockets.protocol.Protocol.recv_frame
    functionSourceFile: websockets.protocol
    functionUses: 2
    functionsReached:
    - websockets.streams.StreamReader.at_eof
    - output.getvalue
    - websockets.frames.Frame.serialize
    - io.BytesIO
    - websockets.utils.apply_mask
    - <builtin>.next
    - struct.unpack
    - extension.encode
    - websockets.protocol.Protocol.discard
    - int.from_bytes
    - websockets.frames.Frame.check
    - speedups.apply_mask
    - websockets.streams.StreamReader.discard
    - close.check
    - secrets.token_bytes
    - struct.pack
    - websockets.protocol.Protocol.send_frame
    - <builtin>.len
    - output.write
    - websockets.protocol.Protocol.send_eof
    - websockets.frames.Close.parse
    linkageType: pythonLinkage
    raised:
    - ProtocolError
    - AssertionError
    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.http
    functionSourceFile: websockets.http
    functionUses: 0
    functionsReached:
    - <builtin>.set
    - websockets.imports.lazy_import
    - <builtin>.globals
    linkageType: 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 0x7f1481ac6b50>
    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: 33
    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: 74
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate.__repr__
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 1
    IfCount: 10
    argCount: 3
    argDefaultValues: []
    argNames:
    - self
    - frame
    - max_size
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 83
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate.decode
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - zlib.decompressobj
    - dataclasses.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: dataclasses.replace
    functionSourceFile: dataclasses
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 1
    IfCount: 5
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 141
    functionName: websockets.extensions.permessage_deflate.PerMessageDeflate.encode
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - zlib.compressobj
    - data.endswith
    - dataclasses.replace
    linkageType: pythonLinkage
    raised: []
    returnType: N/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.endswith
    functionSourceFile: <builtin>
    functionUses: 1
    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: 174
    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: 198
    functionName: websockets.extensions.permessage_deflate._extract_parameters
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 2
    functionsReached:
    - <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: 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 0x7f148184edc0>
    - <ast.Constant object at 0x7f148184efd0>
    - <ast.Constant object at 0x7f148184efa0>
    - <ast.Constant object at 0x7f148184ec70>
    - <ast.Constant object at 0x7f148184e280>
    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: 285
    functionName: websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 7
    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: 317
    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: 329
    functionName: websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.process_response_params
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - zlib.compressobj
    - zlib.decompressobj
    - websockets.extensions.permessage_deflate._extract_parameters
    - websockets.extensions.permessage_deflate.PerMessageDeflate.__init__
    - <builtin>.int
    - <builtin>.any
    linkageType: pythonLinkage
    raised: []
    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: 435
    functionName: websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 6
    functionsReached:
    - <builtin>.list
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - <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: <builtin>.list
    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: 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 0x7f1481667a60>
    - <ast.Constant object at 0x7f1481667a30>
    - <ast.Constant object at 0x7f1481667a00>
    - <ast.Constant object at 0x7f14816679d0>
    - <ast.Constant object at 0x7f14816679a0>
    - <ast.Constant object at 0x7f1481667970>
    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: 488
    functionName: websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 5
    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: 523
    functionName: websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.process_request_params
    functionSourceFile: websockets.extensions.permessage_deflate
    functionUses: 0
    functionsReached:
    - zlib.compressobj
    - zlib.decompressobj
    - params.append
    - websockets.extensions.permessage_deflate._extract_parameters
    - websockets.extensions.permessage_deflate.PerMessageDeflate.__init__
    - websockets.extensions.permessage_deflate._build_parameters
    - <builtin>.int
    - <builtin>.str
    - <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: 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: 17
    functionName: websockets.legacy.handshake.build_request
    functionSourceFile: websockets.legacy.handshake
    functionUses: 1
    functionsReached:
    - websockets.utils.generate_key
    - 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: 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: 122
    functionName: websockets.legacy.handshake.check_response
    functionSourceFile: websockets.legacy.handshake
    functionUses: 1
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - hashlib.sha1
    - items.append
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.parse_connection
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.utils.accept_key
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.any
    - <builtin>.len
    - base64.b64encode
    - websockets.headers.parse_token
    - match.end
    - value.lower
    - websockets.headers.parse_upgrade
    - websockets.headers.peek_ahead
    - _OWS_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidUpgrade
    - InvalidHeader
    - InvalidHeaderValue
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.legacy.http
    functionSourceFile: websockets.legacy.http
    functionUses: 0
    functionsReached:
    - re.compile
    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: 1
    functionLinenumber: 186
    functionName: websockets.legacy.http.read_line
    functionSourceFile: websockets.legacy.http
    functionUses: 9
    functionsReached:
    - <builtin>.len
    - typing.NewType.reader.readline
    - line.endswith
    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
    - <builtin>.len
    - <builtin>.isinstance
    - websockets.legacy.http.read_line
    - raw_value.strip
    - _value_re.fullmatch
    - arg.raw_items
    - line.split
    - websockets.datastructures.Headers.update
    - raw_name.decode
    - <builtin>.super
    - line.endswith
    - <builtin>.tuple
    - _token_re.fullmatch
    - typing.NewType.reader.readline
    - websockets.datastructures.Headers.__init__
    - <builtin>.range
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - stream
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 94
    functionName: websockets.legacy.http.read_response
    functionSourceFile: websockets.legacy.http
    functionUses: 2
    functionsReached:
    - raw_value.decode
    - line.split
    - <builtin>.super
    - <builtin>.int
    - typing.NewType.reader.readline
    - <builtin>.range
    - websockets.legacy.http.read_line
    - _value_re.fullmatch
    - line.endswith
    - <builtin>.tuple
    - websockets.legacy.http.read_headers
    - websockets.datastructures.Headers.__init__
    - raw_value.strip
    - arg.raw_items
    - websockets.datastructures.Headers.update
    - _token_re.fullmatch
    - <builtin>.len
    - <builtin>.isinstance
    - status_line.split
    - raw_reason.decode
    - raw_name.decode
    linkageType: pythonLinkage
    raised:
    - EOFError
    - ValueError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.NewType.reader.readline
    functionSourceFile: typing
    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: websockets.legacy.compatibility
    functionSourceFile: websockets.legacy.compatibility
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.legacy.async_timeout
    functionSourceFile: websockets.legacy.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.legacy.async_timeout.final
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: asyncio.get_running_loop
    functionSourceFile: asyncio
    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: loop.time
    functionSourceFile: <builtin>
    functionUses: 23
    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: 129
    functionName: websockets.legacy.async_timeout.Timeout.__init__
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 24
    functionsReached:
    - asyncio.current_task
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.async_timeout.Timeout.update
    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: 82
    functionName: websockets.legacy.async_timeout.timeout_at
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.async_timeout.Timeout.__init__
    - asyncio.get_running_loop
    - websockets.legacy.async_timeout.Timeout._reschedule
    - 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: 206
    functionName: websockets.legacy.async_timeout.Timeout.update
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 26
    functionsReached:
    - websockets.legacy.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: 141
    functionName: websockets.legacy.async_timeout.Timeout.__enter__
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.legacy.async_timeout.Timeout._reschedule
    - warnings.warn
    - websockets.legacy.async_timeout.Timeout._do_enter
    - asyncio.current_task
    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: 243
    functionName: websockets.legacy.async_timeout.Timeout._do_enter
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 2
    functionsReached:
    - websockets.legacy.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: 2
    functionLinenumber: 150
    functionName: websockets.legacy.async_timeout.Timeout.__exit__
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.legacy.async_timeout.Timeout._reject
    - websockets.legacy.async_timeout.Timeout._do_exit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 1
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 249
    functionName: websockets.legacy.async_timeout.Timeout._do_exit
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 2
    functionsReached:
    - websockets.legacy.async_timeout.Timeout._reject
    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: 159
    functionName: websockets.legacy.async_timeout.Timeout.__aenter__
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.async_timeout.Timeout._do_enter
    - asyncio.current_task
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - exc_type
    - exc_val
    - exc_tb
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 163
    functionName: websockets.legacy.async_timeout.Timeout.__aexit__
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.legacy.async_timeout.Timeout._reject
    - websockets.legacy.async_timeout.Timeout._do_exit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 173
    functionName: websockets.legacy.async_timeout.Timeout.expired
    functionSourceFile: websockets.legacy.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: 178
    functionName: websockets.legacy.async_timeout.Timeout.deadline
    functionSourceFile: websockets.legacy.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: 181
    functionName: websockets.legacy.async_timeout.Timeout.reject
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached:
    - websockets.legacy.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: 189
    functionName: websockets.legacy.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: 194
    functionName: websockets.legacy.async_timeout.Timeout.shift
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached:
    - asyncio.current_task
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.legacy.async_timeout.Timeout.update
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 227
    functionName: websockets.legacy.async_timeout.Timeout._reschedule
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 30
    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: 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
    - task
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 258
    functionName: websockets.legacy.async_timeout.Timeout._on_timeout
    functionSourceFile: websockets.legacy.async_timeout
    functionUses: 0
    functionsReached:
    - task.cancel
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: task.cancel
    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
    functionSourceFile: websockets.legacy
    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.auth
    functionSourceFile: websockets.auth
    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.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: 19
    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: 45
    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: 57
    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: 78
    functionName: websockets.legacy.auth.BasicAuthWebSocketServerProtocol.process_request
    functionSourceFile: websockets.legacy.auth
    functionUses: 0
    functionsReached:
    - websockets.headers.build_www_authenticate_basic
    - base64.b64decode
    - websockets.headers.build_quoted_string
    - match.group
    - websockets.headers.parse_token68
    - <builtin>.super
    - websockets.headers.parse_end
    - websockets.legacy.auth.BasicAuthWebSocketServerProtocol.check_credentials
    - _token_re.match
    - websockets.headers.parse_authorization_basic
    - _quote_re.sub
    - _quotable_re.fullmatch
    - _token68_re.match
    - basic_credentials.encode
    - <builtin>.len
    - scheme.lower
    - websockets.headers.parse_token
    - match.end
    - user_pass.split
    - websockets.headers.peek_ahead
    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 0x7f1481aea400>
    - <ast.Constant object at 0x7f1481aeacd0>
    - <ast.Constant object at 0x7f1481aea100>
    - <ast.Constant object at 0x7f1481aeaa00>
    argNames:
    - realm
    - credentials
    - check_credentials
    - create_protocol
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 117
    functionName: websockets.legacy.auth.basic_auth_protocol_factory
    functionSourceFile: websockets.legacy.auth
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - functools.partial
    - <builtin>.dict
    - <builtin>.list
    - websockets.legacy.auth.is_credentials
    - typing.cast
    - <builtin>.all
    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: <builtin>.all
    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>.dict
    functionSourceFile: <builtin>
    functionUses: 5
    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: 170
    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: hmac.compare_digest
    functionSourceFile: hmac
    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.client
    functionSourceFile: websockets.client
    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
    - wsuri
    - 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: 70
    functionName: websockets.client.ClientProtocol.__init__
    functionSourceFile: websockets.client
    functionUses: 4
    functionsReached:
    - websockets.utils.generate_key
    - secrets.token_bytes
    - base64.b64encode
    - <builtin>.super
    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: 93
    functionName: websockets.client.ClientProtocol.connect
    functionSourceFile: websockets.client
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - websockets.headers.build_subprotocol
    - base64.b64encode
    - websockets.headers.build_extension
    - arg.raw_items
    - extension_factory.get_request_params
    - websockets.datastructures.Headers.update
    - websockets.headers.build_authorization_basic
    - user_pass.encode
    - <builtin>.super
    - <builtin>.tuple
    - websockets.headers.build_host
    - ipaddress.ip_address
    - websockets.headers.build_extension_item
    - websockets.datastructures.Headers.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: extension_factory.get_request_params
    functionSourceFile: <builtin>
    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: 137
    functionName: websockets.client.ClientProtocol.process_response
    functionSourceFile: websockets.client
    functionUses: 2
    functionsReached:
    - websockets.headers.parse_list
    - extension_factory.process_response_params
    - match.group
    - websockets.headers.parse_connection_option
    - websockets.client.ClientProtocol.process_extensions
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - hashlib.sha1
    - items.append
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - websockets.headers.parse_connection
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.utils.accept_key
    - websockets.headers.parse_extension
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.any
    - <builtin>.len
    - base64.b64encode
    - websockets.headers.parse_subprotocol
    - websockets.headers.parse_token
    - match.end
    - value.lower
    - websockets.headers.parse_upgrade
    - accepted_extensions.append
    - websockets.headers.peek_ahead
    - websockets.client.ClientProtocol.process_subprotocol
    - _OWS_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidStatus
    - InvalidUpgrade
    - InvalidHeader
    - InvalidHeaderValue
    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: 189
    functionName: websockets.client.ClientProtocol.process_extensions
    functionSourceFile: websockets.client
    functionUses: 3
    functionsReached:
    - websockets.headers.parse_list
    - extension_factory.process_response_params
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_extension
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.len
    - websockets.headers.parse_token
    - match.end
    - accepted_extensions.append
    - websockets.headers.peek_ahead
    - _OWS_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidHandshake
    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: 262
    functionName: websockets.client.ClientProtocol.process_subprotocol
    functionSourceFile: websockets.client
    functionUses: 3
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.len
    - websockets.headers.parse_subprotocol
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - _OWS_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidHandshake
    - 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: extension_factory.process_response_params
    functionSourceFile: <builtin>
    functionUses: 6
    functionsReached: []
    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: 298
    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.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: 353
    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: 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: 86
    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: 106
    functionName: websockets.legacy.client.WebSocketClientProtocol.write_http_request
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - request.encode
    - typing.cast.write
    - asyncio.Protocol.logger.debug
    - typing.NewType.logger.debug
    - <builtin>.iter
    - websockets.datastructures.Headers.raw_items
    - typing.NewType.transport.write
    - <builtin>.str
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.NewType.logger.debug
    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: request.encode
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.NewType.transport.write
    functionSourceFile: typing
    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: 126
    functionName: websockets.legacy.client.WebSocketClientProtocol.read_http_response
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - raw_value.decode
    - websockets.legacy.http.read_response
    - line.split
    - <builtin>.super
    - headers.raw_items
    - <builtin>.int
    - typing.NewType.reader.readline
    - <builtin>.range
    - websockets.legacy.http.read_line
    - _value_re.fullmatch
    - typing.NewType.logger.debug
    - line.endswith
    - <builtin>.tuple
    - websockets.legacy.http.read_headers
    - websockets.datastructures.Headers.__init__
    - raw_value.strip
    - arg.raw_items
    - asyncio.Protocol.logger.debug
    - websockets.datastructures.Headers.update
    - _token_re.fullmatch
    - <builtin>.len
    - <builtin>.isinstance
    - status_line.split
    - raw_reason.decode
    - raw_name.decode
    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: 153
    functionName: websockets.legacy.client.WebSocketClientProtocol.process_extensions
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - websockets.headers.parse_list
    - extension_factory.process_response_params
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_extension
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.len
    - websockets.headers.parse_token
    - match.end
    - accepted_extensions.append
    - websockets.headers.peek_ahead
    - _OWS_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidHandshake
    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: 226
    functionName: websockets.legacy.client.WebSocketClientProtocol.process_subprotocol
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - websockets.headers.parse_list
    - match.group
    - websockets.headers.parse_connection_option
    - <builtin>.sum
    - websockets.headers.parse_OWS
    - websockets.headers.parse_extension_item
    - _protocol_re.match
    - _token_re.match
    - items.append
    - typing.cast
    - websockets.headers.parse_extension_item_param
    - websockets.headers.parse_subprotocol_item
    - _quoted_string_re.match
    - _unquote_re.sub
    - websockets.headers.parse_quoted_string
    - headers.get_all
    - parameters.append
    - websockets.headers.parse_upgrade_protocol
    - _token_re.fullmatch
    - <builtin>.len
    - websockets.headers.parse_subprotocol
    - websockets.headers.parse_token
    - match.end
    - websockets.headers.peek_ahead
    - _OWS_re.match
    linkageType: pythonLinkage
    raised:
    - InvalidHandshake
    - NegotiationError
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 6
    IfCount: 9
    argCount: 6
    argDefaultValues:
    - <ast.Constant object at 0x7f148184fdf0>
    - <ast.Constant object at 0x7f148184f370>
    - <ast.Constant object at 0x7f148184fa90>
    - <ast.Constant object at 0x7f148184f580>
    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: 260
    functionName: websockets.legacy.client.WebSocketClientProtocol.handshake
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - typing.NamedTuple.__init__
    - websockets.headers.parse_list
    - websockets.legacy.async_timeout.Timeout.update
    - ping_ids.append
    - request_headers.setdefault
    - websockets.legacy.client.WebSocketClientProtocol.process_extensions
    - websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping
    - frames.Frame
    - _protocol_re.match
    - _token_re.match
    - typing.NewType.read_http_response
    - typing.cast.is_closing
    - int.from_bytes
    - websockets.legacy.protocol.WebSocketCommonProtocol.ping
    - typing.NewType.process_subprotocol
    - arg.raw_items
    - asyncio.Protocol.logger.debug
    - websockets.headers.parse_extension
    - typing.NewType.connection_open
    - typing.cast.write_eof
    - struct.pack
    - <builtin>.isinstance
    - <builtin>.len
    - waiter.cancelled
    - websockets.headers.build_extension
    - decoder.decode
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper
    - <builtin>.sorted
    - websockets.headers.parse_extension_item_param
    - asyncio.Protocol.write_http_request
    - websockets.legacy.framing.Frame.write
    - websockets.legacy.async_timeout.Timeout.__init__
    - match.group
    - websockets.legacy.protocol.WebSocketCommonProtocol.connection_open
    - headers.raw_items
    - websockets.utils.apply_mask
    - <builtin>.reversed
    - <builtin>.sum
    - websockets.legacy.server.WebSocketServerProtocol.process_subprotocol
    - <builtin>.str
    - struct.unpack
    - _value_re.fullmatch
    - hashlib.sha1
    - typing.cast.close
    - items.append
    - extension_headers.append
    - <builtin>.tuple
    - fragments.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message
    - asyncio.sleep
    - websockets.headers.parse_subprotocol_item
    - websockets.legacy.framing.Frame.read
    - websockets.headers.build_subprotocol
    - request.encode
    - extension.decode
    - secrets.token_bytes
    - close.check
    - websockets.headers.build_authorization_basic
    - websockets.datastructures.Headers.update
    - loop.time
    - parameters.append
    - websockets.legacy.protocol.WebSocketCommonProtocol._drain
    - _token_re.fullmatch
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame
    - websockets.headers.build_extension_item
    - websockets.frames.prepare_ctrl
    - asyncio.current_task
    - base64.b64encode
    - websockets.legacy.protocol.WebSocketCommonProtocol.drain
    - websockets.headers.parse_subprotocol
    - asyncio.Protocol.connection_lost_waiter.done
    - <builtin>.hasattr
    - match.end
    - asyncio.Protocol.logger.error
    - enum.IntEnum.__init__
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame
    - raw_name.decode
    - frame.data.decode
    - websockets.headers.parse_upgrade
    - websockets.headers.peek_ahead
    - typing.cast.can_write_eof
    - _OWS_re.match
    - asyncio.Protocol.pings.items
    - raw_value.decode
    - typing.NewType.process_extensions
    - websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append
    - codecs.getincrementaldecoder
    - asyncio.shield
    - websockets.headers.parse_connection_option
    - <builtin>.range
    - frames.Opcode
    - websockets.legacy.http.read_line
    - typing.NewType.write_http_request
    - line.endswith
    - websockets.legacy.server.WebSocketServerProtocol.select_subprotocol
    - asyncio.Protocol.read_http_response
    - typing.NewType.transport.write
    - websockets.legacy.async_timeout.Timeout._reschedule
    - websockets.headers.parse_connection
    - websockets.datastructures.Headers.get_all
    - websockets.utils.accept_key
    - websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_connection
    - time.perf_counter
    - websockets.frames.Close.serialize
    - pong_waiter.set_result
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame
    - headers.get_all
    - websockets.headers.parse_upgrade_protocol
    - <builtin>.any
    - websockets.legacy.client.WebSocketClientProtocol.write_http_request
    - websockets.legacy.client.WebSocketClientProtocol.read_http_response
    - websockets.legacy.handshake.check_response
    - accepted_extensions.append
    - typing.cast.abort
    - websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection
    - new_frame.check
    - extension_factory.process_response_params
    - data.encode
    - websockets.legacy.http.read_response
    - line.split
    - extension_factory.get_request_params
    - websockets.frames.Close.check
    - <builtin>.super
    - websockets.legacy.client.WebSocketClientProtocol.process_subprotocol
    - <builtin>.int
    - typing.NewType.reader.readline
    - websockets.headers.parse_OWS
    - ipaddress.ip_address
    - websockets.headers.parse_extension_item
    - typing.cast.write
    - websockets.legacy.protocol.WebSocketCommonProtocol.read_frame
    - websockets.legacy.server.WebSocketServerProtocol.process_extensions
    - typing.NewType.logger.debug
    - <builtin>.set
    - <builtin>.iter
    - websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data
    - key.lower
    - websockets.headers.build_host
    - typing.cast
    - asyncio.timeout
    - asyncio.get_running_loop
    - websockets.utils.generate_key
    - websockets.legacy.http.read_headers
    - websockets.datastructures.Headers.__init__
    - asyncio.Protocol.messages.append
    - websockets.legacy.protocol.WebSocketCommonProtocol.pong
    - speedups.apply_mask
    - _quoted_string_re.match
    - _unquote_re.sub
    - raw_value.strip
    - websockets.legacy.protocol.WebSocketCommonProtocol.close_transport
    - websockets.legacy.async_timeout.timeout
    - websockets.headers.parse_quoted_string
    - user_pass.encode
    - websockets.datastructures.Headers.raw_items
    - websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync
    - pong_waiter.done
    - <builtin>.bytes
    - websockets.legacy.handshake.build_request
    - ext_factory.process_request_params
    - status_line.split
    - websockets.headers.parse_token
    - raw_reason.decode
    - value.lower
    - random.getrandbits
    - websockets.frames.Close.parse
    linkageType: pythonLinkage
    raised:
    - RedirectHandshake
    - InvalidHeader
    - InvalidStatusCode
    returnType: N/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: 0
    functionLinenumber: -1
    functionName: typing.NewType.write_http_request
    functionSourceFile: typing
    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.write_http_request
    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.Protocol.read_http_response
    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: typing.NewType.read_http_response
    functionSourceFile: typing
    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: typing.NewType.process_extensions
    functionSourceFile: typing
    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: typing.NewType.process_subprotocol
    functionSourceFile: typing
    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: typing.NewType.connection_open
    functionSourceFile: typing
    functionUses: 1
    functionsReached: []
    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: 426
    functionName: websockets.legacy.client.Connect.__init__
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - functools.partial
    - kwargs.setdefault
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.headers.validate_subprotocols
    - host.encode
    - asyncio.get_event_loop
    - <builtin>.list
    - urllib.parse.quote
    - urllib.parse.urlparse
    - _token_re.fullmatch
    - uri.encode
    - <builtin>.any
    - websockets.uri.parse_uri
    - <builtin>.isinstance
    - kwargs.get
    - logging.getLogger
    - kwargs.pop
    - warnings.warn
    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: kwargs.setdefault
    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:
    - self
    - uri
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 550
    functionName: websockets.legacy.client.Connect.handle_redirect
    functionSourceFile: websockets.legacy.client
    functionUses: 3
    functionsReached:
    - functools.partial
    - urllib.parse.urljoin
    - host.encode
    - <builtin>.dict
    - urllib.parse.quote
    - urllib.parse.urlparse
    - uri.encode
    - websockets.uri.parse_uri
    linkageType: pythonLinkage
    raised:
    - 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: urllib.parse.urljoin
    functionSourceFile: <builtin>
    functionUses: 4
    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: 594
    functionName: websockets.legacy.client.Connect.__aiter__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - <builtin>.int
    - <builtin>.min
    - asyncio.sleep
    - 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: random.random
    functionSourceFile: random
    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>.min
    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: 628
    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: 1
    functionLinenumber: 631
    functionName: websockets.legacy.client.Connect.__aexit__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - typing.cast.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: 6
    functionLinenumber: 641
    functionName: websockets.legacy.client.Connect.__await__
    functionSourceFile: websockets.legacy.client
    functionUses: 0
    functionsReached:
    - functools.partial
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.async_timeout.Timeout.__init__
    - typing.cast.wait_closed
    - <builtin>.range
    - websockets.legacy.client.Connect.__await_impl__
    - websockets.legacy.client.Connect.__await_impl_timeout__
    - typing.cast
    - asyncio.timeout
    - asyncio.get_running_loop
    - websockets.legacy.async_timeout.Timeout._reschedule
    - urllib.parse.urljoin
    - host.encode
    - websockets.legacy.async_timeout.timeout
    - urllib.parse.quote
    - websockets.legacy.client.Connect.handle_redirect
    - urllib.parse.urlparse
    - loop.time
    - uri.encode
    - asyncio.current_task
    - websockets.uri.parse_uri
    - typing.cast.fail_connection
    - typing.cast.handshake
    - <builtin>.dict
    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: 5
    functionLinenumber: 645
    functionName: websockets.legacy.client.Connect.__await_impl_timeout__
    functionSourceFile: websockets.legacy.client
    functionUses: 1
    functionsReached:
    - functools.partial
    - websockets.legacy.async_timeout.Timeout.update
    - websockets.legacy.async_timeout.Timeout.__init__
    - typing.cast.wait_closed
    - <builtin>.range
    - websockets.legacy.client.Connect.__await_impl__
    - typing.cast
    - asyncio.timeout
    - asyncio.get_running_loop
    - websockets.legacy.async_timeout.Timeout._reschedule
    - urllib.parse.urljoin
    - host.encode
    - websockets.legacy.async_timeout.timeout
    - urllib.parse.quote
    - websockets.legacy.client.Connect.handle_redirect
    - urllib.parse.urlparse
    - loop.time
    - uri.encode
    - websockets.uri.parse_uri
    - asyncio.current_task
    - typing.cast.fail_connection
    - typing.cast.handshake
    - <builtin>.dict
    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: 3
    functionLinenumber: 649
    functionName: websockets.legacy.client.Connect.__await_impl__
    functionSourceFile: websockets.legacy.client
    functionUses: 2
    functionsReached:
    - typing.cast.fail_connection
    - functools.partial
    - urllib.parse.urljoin
    - host.encode
    - typing.cast.handshake
    - <builtin>.dict
    - urllib.parse.quote
    - websockets.legacy.client.Connect.handle_redirect
    - urllib.parse.urlparse
    - typing.cast.wait_closed
    - typing.cast
    - uri.encode
    - <builtin>.range
    - websockets.uri.parse_uri
    linkageType: pythonLinkage
    raised: []
    returnType: N/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.handshake
    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: typing.cast.fail_connection
    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: typing.cast.wait_closed
    functionSourceFile: typing
    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 0x7f14814b51c0>
    - <ast.Constant object at 0x7f14814b5190>
    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:
    - functools.partial
    - kwargs.setdefault
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.headers.validate_subprotocols
    - host.encode
    - asyncio.get_event_loop
    - <builtin>.list
    - urllib.parse.quote
    - urllib.parse.urlparse
    - _token_re.fullmatch
    - uri.encode
    - <builtin>.any
    - websockets.uri.parse_uri
    - <builtin>.isinstance
    - kwargs.get
    - websockets.legacy.client.Connect.__init__
    - logging.getLogger
    - kwargs.pop
    - 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: 1
    functionLinenumber: -1
    functionName: websockets.connection
    functionSourceFile: websockets.connection
    functionUses: 0
    functionsReached:
    - warnings.warn
    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: 5
    functionLinenumber: -1
    functionName: websockets.__main__
    functionSourceFile: websockets.__main__
    functionUses: 0
    functionsReached:
    - ctypes.windll.kernel32.GetStdHandle
    - sock.close
    - <builtin>.input
    - sock.setsockopt
    - sock.settimeout
    - websockets.__main__.print_over_input
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - <builtin>.super
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.__main__.win_enable_vt100
    - websockets.__main__.main
    - thread.join
    - parser.add_mutually_exclusive_group
    - websockets.sync.client.connect
    - websockets.sync.client.ClientConnection.__init__
    - sock.connect
    - threading.Thread
    - <builtin>.print
    - thread.start
    - ctypes.c_uint
    - socket.socket
    - websockets.sync.utils.Deadline.timeout
    - websockets.utils.generate_key
    - int.from_bytes
    - ctypes.byref
    - connection.handshake
    - websockets.headers.validate_subprotocols
    - websockets.sync.utils.Deadline.__init__
    - sys.stderr.flush
    - host.encode
    - secrets.token_bytes
    - ctypes.windll.kernel32.SetConsoleMode
    - urllib.parse.quote
    - <builtin>.list
    - argparse.ArgumentParser
    - urllib.parse.urlparse
    - parser.error
    - _token_re.fullmatch
    - websocket.send
    - stop.set
    - ctypes.windll.kernel32.GetConsoleMode
    - <builtin>.any
    - websockets.uri.parse_uri
    - ssl.create_default_context
    - uri.encode
    - <builtin>.isinstance
    - parser.parse_args
    - sys.stdout.flush
    - time.monotonic
    - base64.b64encode
    - sys.stderr.write
    - ssl_context.wrap_socket
    - socket.create_connection
    - threading.Event
    - websockets.client.ClientProtocol.__init__
    - websocket.close
    - sys.stdout.write
    - group.add_argument
    - sys.exit
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 1
    IfCount: 3
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 21
    functionName: websockets.__main__.win_enable_vt100
    functionSourceFile: websockets.__main__
    functionUses: 2
    functionsReached:
    - ctypes.windll.kernel32.GetStdHandle
    - ctypes.windll.kernel32.SetConsoleMode
    - ctypes.c_uint
    - int.from_bytes
    - ctypes.byref
    - ctypes.windll.kernel32.GetConsoleMode
    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: ctypes.c_uint
    functionSourceFile: ctypes
    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: ctypes.windll.kernel32.GetStdHandle
    functionSourceFile: ctypes
    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: ctypes.byref
    functionSourceFile: ctypes
    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: ctypes.windll.kernel32.GetConsoleMode
    functionSourceFile: ctypes
    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: ctypes.windll.kernel32.SetConsoleMode
    functionSourceFile: ctypes
    functionUses: 3
    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: 51
    functionName: websockets.__main__.print_during_input
    functionSourceFile: websockets.__main__
    functionUses: 1
    functionsReached:
    - sys.stdout.flush
    - sys.stdout.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: sys.stdout.write
    functionSourceFile: sys
    functionUses: 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: sys.stdout.flush
    functionSourceFile: sys
    functionUses: 5
    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: 71
    functionName: websockets.__main__.print_over_input
    functionSourceFile: websockets.__main__
    functionUses: 2
    functionsReached:
    - sys.stdout.flush
    - sys.stdout.write
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 3
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - websocket
    - stop
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 83
    functionName: websockets.__main__.print_incoming_messages
    functionSourceFile: websockets.__main__
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - sys.stdout.flush
    - stop.is_set
    - message.hex
    - os.getpid
    - websockets.__main__.print_during_input
    - os.kill
    - 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: 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: stop.is_set
    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: os.getpid
    functionSourceFile: os
    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: os.kill
    functionSourceFile: os
    functionUses: 1
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 16
    IfCount: 3
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 99
    functionName: websockets.__main__.main
    functionSourceFile: websockets.__main__
    functionUses: 1
    functionsReached:
    - ctypes.windll.kernel32.GetStdHandle
    - sock.close
    - <builtin>.input
    - sock.setsockopt
    - sock.settimeout
    - websockets.__main__.print_over_input
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - <builtin>.super
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.__main__.win_enable_vt100
    - thread.join
    - parser.add_mutually_exclusive_group
    - websockets.sync.client.connect
    - websockets.sync.client.ClientConnection.__init__
    - sock.connect
    - threading.Thread
    - <builtin>.print
    - thread.start
    - ctypes.c_uint
    - socket.socket
    - websockets.sync.utils.Deadline.timeout
    - websockets.utils.generate_key
    - int.from_bytes
    - ctypes.byref
    - connection.handshake
    - websockets.headers.validate_subprotocols
    - websockets.sync.utils.Deadline.__init__
    - sys.stderr.flush
    - host.encode
    - secrets.token_bytes
    - ctypes.windll.kernel32.SetConsoleMode
    - urllib.parse.quote
    - <builtin>.list
    - argparse.ArgumentParser
    - urllib.parse.urlparse
    - parser.error
    - _token_re.fullmatch
    - websocket.send
    - stop.set
    - ctypes.windll.kernel32.GetConsoleMode
    - <builtin>.any
    - websockets.uri.parse_uri
    - ssl.create_default_context
    - uri.encode
    - <builtin>.isinstance
    - parser.parse_args
    - sys.stdout.flush
    - time.monotonic
    - base64.b64encode
    - sys.stderr.write
    - ssl_context.wrap_socket
    - socket.create_connection
    - threading.Event
    - websockets.client.ClientProtocol.__init__
    - websocket.close
    - sys.stdout.write
    - group.add_argument
    - 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: <builtin>.print
    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.error
    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: sys.stderr.write
    functionSourceFile: sys
    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: sys.stderr.flush
    functionSourceFile: sys
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 22
    ICount: 10
    IfCount: 15
    argCount: 17
    argDefaultValues: []
    argNames:
    - uri
    - sock
    - ssl_context
    - server_hostname
    - unix
    - path
    - origin
    - extensions
    - subprotocols
    - additional_headers
    - user_agent_header
    - compression
    - open_timeout
    - close_timeout
    - max_size
    - logger
    - create_connection
    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
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 126
    functionName: websockets.sync.client.connect
    functionSourceFile: websockets.sync.client
    functionUses: 3
    functionsReached:
    - sock.close
    - sock.setsockopt
    - sock.settimeout
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - <builtin>.super
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.sync.client.ClientConnection.__init__
    - socket.socket
    - websockets.sync.utils.Deadline.timeout
    - websockets.utils.generate_key
    - connection.handshake
    - websockets.headers.validate_subprotocols
    - websockets.sync.utils.Deadline.__init__
    - host.encode
    - secrets.token_bytes
    - urllib.parse.quote
    - <builtin>.list
    - urllib.parse.urlparse
    - _token_re.fullmatch
    - ssl.create_default_context
    - uri.encode
    - <builtin>.any
    - websockets.uri.parse_uri
    - ssl_context.wrap_socket
    - <builtin>.isinstance
    - base64.b64encode
    - time.monotonic
    - socket.create_connection
    - threading.Event
    - websockets.client.ClientProtocol.__init__
    - sock.connect
    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: sys.exit
    functionSourceFile: sys
    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: threading.Event
    functionSourceFile: threading
    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: threading.Thread
    functionSourceFile: threading
    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: thread.start
    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>.input
    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: websocket.send
    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: stop.set
    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: thread.join
    functionSourceFile: <builtin>
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: websockets.sync.client
    functionSourceFile: websockets.sync.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
    - socket
    - protocol
    - close_timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 49
    functionName: websockets.sync.client.ClientConnection.__init__
    functionSourceFile: websockets.sync.client
    functionUses: 4
    functionsReached:
    - threading.Event
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 10
    IfCount: 6
    argCount: 4
    argDefaultValues:
    - <ast.Constant object at 0x7f1481118760>
    - <ast.Name object at 0x7f1481118730>
    - <ast.Constant object at 0x7f1481118700>
    argNames:
    - self
    - additional_headers
    - user_agent_header
    - timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 64
    functionName: websockets.sync.client.ClientConnection.handshake
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - websockets.sync.connection.Connection.send_context
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - typing.cast.put
    - websockets.sync.messages.Assembler.close
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.utils.Deadline.__init__
    linkageType: pythonLinkage
    raised:
    - TimeoutError
    - ConnectionError
    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: 620
    functionName: websockets.sync.connection.Connection.send_context
    functionSourceFile: websockets.sync.connection
    functionUses: 7
    functionsReached:
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - typing.cast.put
    - websockets.sync.messages.Assembler.close
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.close_socket
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 4
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 759
    functionName: websockets.sync.connection.Connection.close_socket
    functionSourceFile: websockets.sync.connection
    functionUses: 9
    functionsReached:
    - websockets.sync.messages.Assembler.close
    - typing.cast.put
    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: 100
    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: 3
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 114
    functionName: websockets.sync.client.ClientConnection.recv_events
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - <builtin>.super
    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: 19
    functionName: websockets.sync.utils.Deadline.__init__
    functionSourceFile: websockets.sync.utils
    functionUses: 14
    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: socket.socket
    functionSourceFile: socket
    functionUses: 4
    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: 26
    functionName: websockets.sync.utils.Deadline.timeout
    functionSourceFile: websockets.sync.utils
    functionUses: 15
    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.connect
    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: socket.create_connection
    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: sock.setsockopt
    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: ssl.create_default_context
    functionSourceFile: ssl
    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_context.wrap_socket
    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.handshake
    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.close
    functionSourceFile: <builtin>
    functionUses: 5
    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 0x7f14811fcdf0>
    - <ast.Constant object at 0x7f14811fc700>
    argNames:
    - path
    - uri
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 303
    functionName: websockets.sync.client.unix_connect
    functionSourceFile: websockets.sync.client
    functionUses: 0
    functionsReached:
    - sock.close
    - sock.setsockopt
    - sock.settimeout
    - websockets.extensions.permessage_deflate.enable_client_permessage_deflate
    - <builtin>.super
    - websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__
    - websockets.sync.client.ClientConnection.__init__
    - socket.socket
    - websockets.sync.utils.Deadline.timeout
    - websockets.utils.generate_key
    - connection.handshake
    - websockets.headers.validate_subprotocols
    - websockets.sync.utils.Deadline.__init__
    - host.encode
    - secrets.token_bytes
    - urllib.parse.quote
    - <builtin>.list
    - urllib.parse.urlparse
    - _token_re.fullmatch
    - ssl.create_default_context
    - uri.encode
    - <builtin>.any
    - websockets.uri.parse_uri
    - ssl_context.wrap_socket
    - <builtin>.isinstance
    - base64.b64encode
    - kwargs.get
    - time.monotonic
    - socket.create_connection
    - threading.Event
    - websockets.client.ClientProtocol.__init__
    - sock.connect
    - websockets.sync.client.connect
    linkageType: 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.connection
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - logging.getLogger
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 5
    IfCount: 0
    argCount: 4
    argDefaultValues: []
    argNames:
    - self
    - socket
    - protocol
    - close_timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 42
    functionName: websockets.sync.connection.Connection.__init__
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - threading.Lock
    - threading.Thread
    - threading.Event
    - websockets.sync.messages.Assembler.__init__
    - logging.LoggerAdapter
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 23
    functionName: websockets.sync.messages.Assembler.__init__
    functionSourceFile: websockets.sync.messages
    functionUses: 1
    functionsReached:
    - threading.Event
    - threading.Lock
    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: 98
    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: 111
    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: 124
    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: 0
    IfCount: 0
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: 135
    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: 138
    functionName: websockets.sync.connection.Connection.__exit__
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.connection.Connection.send_context
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - typing.cast.put
    - websockets.sync.messages.Assembler.close
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.connection.Connection.close
    - websockets.sync.connection.Connection.close_socket
    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 0x7f14816d68e0>
    - <ast.Constant object at 0x7f1481ebf520>
    argNames:
    - self
    - code
    - reason
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 387
    functionName: websockets.sync.connection.Connection.close
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - websockets.sync.connection.Connection.send_context
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - typing.cast.put
    - websockets.sync.messages.Assembler.close
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.utils.Deadline.__init__
    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: 149
    functionName: websockets.sync.connection.Connection.__iter__
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.messages.Assembler.get
    - joiner.join
    - websockets.sync.connection.Connection.recv
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 1
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7f14811fc580>
    argNames:
    - self
    - timeout
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 166
    functionName: websockets.sync.connection.Connection.recv
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - joiner.join
    - websockets.sync.messages.Assembler.get
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 7
    ICount: 3
    IfCount: 4
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7f148177b730>
    argNames:
    - self
    - timeout
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 59
    functionName: websockets.sync.messages.Assembler.get
    functionSourceFile: websockets.sync.messages
    functionUses: 2
    functionsReached:
    - joiner.join
    linkageType: pythonLinkage
    raised:
    - EOFError
    - RuntimeError
    - TimeoutError
    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: 208
    functionName: websockets.sync.connection.Connection.recv_streaming
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.messages.Assembler.get_iter
    - typing.cast.put
    - queue.SimpleQueue
    - typing.cast.get
    - typing.cast
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 8
    ICount: 6
    IfCount: 5
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 119
    functionName: websockets.sync.messages.Assembler.get_iter
    functionSourceFile: websockets.sync.messages
    functionUses: 1
    functionsReached:
    - typing.cast
    - typing.cast.put
    - typing.cast.get
    - queue.SimpleQueue
    linkageType: pythonLinkage
    raised:
    - EOFError
    - RuntimeError
    returnType: N/A
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 18
    ICount: 9
    IfCount: 12
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - message
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 241
    functionName: websockets.sync.connection.Connection.send
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.connection.Connection.send_context
    - <builtin>.isinstance
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - typing.cast.put
    - message.encode
    - websockets.sync.connection.Connection.close_socket
    - <builtin>.iter
    - websockets.sync.messages.Assembler.close
    - chunk.encode
    - websockets.sync.utils.Deadline.timeout
    - <builtin>.next
    - websockets.sync.utils.Deadline.__init__
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    - 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: 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: chunk.encode
    functionSourceFile: <builtin>
    functionUses: 1
    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 0x7f1481bb27c0>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 419
    functionName: websockets.sync.connection.Connection.ping
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.connection.Connection.send_context
    - <builtin>.isinstance
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - random.getrandbits
    - data.encode
    - typing.cast.put
    - websockets.sync.connection.Connection.close_socket
    - threading.Event
    - websockets.sync.messages.Assembler.close
    - websockets.sync.utils.Deadline.timeout
    - <builtin>.bytes
    - struct.pack
    - websockets.frames.prepare_ctrl
    - websockets.sync.utils.Deadline.__init__
    linkageType: pythonLinkage
    raised:
    - RuntimeError
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 2
    IfCount: 0
    argCount: 2
    argDefaultValues:
    - <ast.Constant object at 0x7f1481b8d9d0>
    argNames:
    - self
    - data
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 464
    functionName: websockets.sync.connection.Connection.pong
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - websockets.sync.connection.Connection.send_context
    - <builtin>.isinstance
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - data.encode
    - typing.cast.put
    - websockets.sync.messages.Assembler.close
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.utils.Deadline.timeout
    - <builtin>.bytes
    - websockets.frames.prepare_ctrl
    - websockets.sync.connection.Connection.close_socket
    linkageType: pythonLinkage
    raised: []
    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: 2
    functionLinenumber: 486
    functionName: websockets.sync.connection.Connection.process_event
    functionSourceFile: websockets.sync.connection
    functionUses: 1
    functionsReached:
    - <builtin>.isinstance
    - websockets.sync.messages.Assembler.put
    - ping_ids.append
    - typing.cast.put
    - websockets.sync.connection.Connection.acknowledge_pings
    - <builtin>.bytes
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 15
    ICount: 7
    IfCount: 10
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - frame
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 185
    functionName: websockets.sync.messages.Assembler.put
    functionSourceFile: websockets.sync.messages
    functionUses: 2
    functionsReached:
    - typing.cast.put
    linkageType: pythonLinkage
    raised:
    - EOFError
    - RuntimeError
    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: 500
    functionName: websockets.sync.connection.Connection.acknowledge_pings
    functionSourceFile: websockets.sync.connection
    functionUses: 2
    functionsReached:
    - ping_ids.append
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 9
    ICount: 14
    IfCount: 6
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 524
    functionName: websockets.sync.connection.Connection.recv_events
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - websockets.sync.messages.Assembler.put
    - websockets.sync.client.ClientConnection.process_event
    - typing.cast.put
    - ping_ids.append
    - websockets.sync.messages.Assembler.close
    - <builtin>.super
    - websockets.sync.utils.Deadline.__init__
    - websockets.sync.utils.Deadline.timeout
    - <builtin>.bytes
    - websockets.sync.connection.Connection.acknowledge_pings
    - websockets.sync.server.ServerConnection.process_event
    - websockets.sync.connection.Connection.process_event
    - websockets.sync.connection.Connection.close_socket
    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: 748
    functionName: websockets.sync.connection.Connection.set_recv_events_exc
    functionSourceFile: ''
    functionUses: 9
    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: 726
    functionName: websockets.sync.connection.Connection.send_data
    functionSourceFile: websockets.sync.connection
    functionUses: 9
    functionsReached:
    - websockets.sync.utils.Deadline.timeout
    - time.monotonic
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 2
    argDefaultValues: []
    argNames:
    - self
    - event
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 151
    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: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: -1
    functionName: websockets.sync.connection.Connection
    functionSourceFile: websockets.sync.connection
    functionUses: 0
    functionsReached:
    - contextlib.contextmanager
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: 8
    functionsReached: []
    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: 1
    functionLinenumber: 259
    functionName: websockets.sync.messages.Assembler.close
    functionSourceFile: websockets.sync.messages
    functionUses: 10
    functionsReached:
    - typing.cast.put
    linkageType: pythonLinkage
    raised: []
    returnType: N/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: time.monotonic
    functionSourceFile: time
    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: 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: joiner.join
    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: queue.SimpleQueue
    functionSourceFile: queue
    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.put
    functionSourceFile: typing
    functionUses: 15
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: typing.cast.get
    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: 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.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: 4
    argDefaultValues: []
    argNames:
    - self
    - socket
    - protocol
    - close_timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 55
    functionName: websockets.sync.server.ServerConnection.__init__
    functionSourceFile: websockets.sync.server
    functionUses: 1
    functionsReached:
    - threading.Event
    - <builtin>.super
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 11
    IfCount: 9
    argCount: 5
    argDefaultValues:
    - <ast.Constant object at 0x7f148135f2e0>
    - <ast.Constant object at 0x7f148135f2b0>
    - <ast.Name object at 0x7f148135f280>
    - <ast.Constant object at 0x7f148135f250>
    argNames:
    - self
    - process_request
    - process_response
    - server_header
    - timeout
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 4
    functionLinenumber: 70
    functionName: websockets.sync.server.ServerConnection.handshake
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - websockets.sync.connection.Connection.send_context
    - <builtin>.TimeoutError
    - websockets.sync.connection.Connection.set_recv_events_exc
    - websockets.sync.connection.Connection.send_data
    - time.monotonic
    - typing.cast.put
    - websockets.sync.messages.Assembler.close
    - websockets.sync.utils.Deadline.timeout
    - websockets.sync.connection.Connection.close_socket
    - websockets.sync.utils.Deadline.__init__
    linkageType: pythonLinkage
    raised:
    - TimeoutError
    - ConnectionError
    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: 165
    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 0x7f1481ae6f40>
    argNames:
    - self
    - socket
    - handler
    - logger
    argTypes:
    - N/A
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 194
    functionName: websockets.sync.server.WebSocketServer.__init__
    functionSourceFile: websockets.sync.server
    functionUses: 2
    functionsReached:
    - logging.getLogger
    - os.pipe
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: os.pipe
    functionSourceFile: os
    functionUses: 3
    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: 208
    functionName: websockets.sync.server.WebSocketServer.serve_forever
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - threading.Thread
    - poller.register
    - thread.start
    - poller.select
    - 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: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 2
    ICount: 3
    IfCount: 1
    argCount: 1
    argDefaultValues: []
    argNames:
    - self
    argTypes:
    - N/A
    constantsTouched: []
    functionDepth: 1
    functionLinenumber: 237
    functionName: websockets.sync.server.WebSocketServer.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: 246
    functionName: websockets.sync.server.WebSocketServer.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: 253
    functionName: websockets.sync.server.WebSocketServer.__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: 256
    functionName: websockets.sync.server.WebSocketServer.__exit__
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - os.write
    - websockets.sync.server.WebSocketServer.shutdown
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 14
    ICount: 2
    IfCount: 9
    argCount: 20
    argDefaultValues:
    - <ast.Constant object at 0x7f148134bd60>
    - <ast.Constant object at 0x7f148134bd30>
    argNames:
    - handler
    - host
    - port
    - sock
    - ssl_context
    - unix
    - path
    - origins
    - extensions
    - subprotocols
    - select_subprotocol
    - process_request
    - process_response
    - server_header
    - compression
    - open_timeout
    - close_timeout
    - max_size
    - logger
    - create_connection
    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: 265
    functionName: websockets.sync.server.serve
    functionSourceFile: websockets.sync.server
    functionUses: 1
    functionsReached:
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - <builtin>.isinstance
    - websockets.sync.server.WebSocketServer.__init__
    - os.pipe
    - socket.create_server
    - <builtin>.list
    - ssl_context.wrap_socket
    - _token_re.fullmatch
    - logging.getLogger
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - <builtin>.any
    - websockets.headers.validate_subprotocols
    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: socket.create_server
    functionSourceFile: socket
    functionUses: 2
    functionsReached: []
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 5
    ICount: 10
    IfCount: 3
    argCount: 2
    argDefaultValues: []
    argNames:
    - sock
    - addr
    argTypes:
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 2
    functionLinenumber: 424
    functionName: websockets.sync.server.serve.conn_handler
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - <builtin>.isinstance
    - websockets.server.ServerProtocol.__init__
    - connection.close
    - time.monotonic
    - sock.close
    - sock.setsockopt
    - websockets.sync.server.ServerConnection.__init__
    - sock.settimeout
    - protocol.logger.error
    - threading.Event
    - <builtin>.setattr
    - <builtin>.super
    - websockets.sync.utils.Deadline.timeout
    - connection.handshake
    - sock.do_handshake
    - websockets.sync.utils.Deadline.__init__
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 1
    ICount: 0
    IfCount: 0
    argCount: 0
    argDefaultValues: []
    argNames: []
    argTypes: []
    constantsTouched: []
    functionDepth: 0
    functionLinenumber: -1
    functionName: 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: 455
    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: protocol.logger.error
    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.close
    functionSourceFile: <builtin>
    functionUses: 1
    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 0x7f1480fe4520>
    argNames:
    - handler
    - path
    - kwargs
    argTypes:
    - N/A
    - N/A
    - N/A
    constantsTouched: []
    functionDepth: 3
    functionLinenumber: 511
    functionName: websockets.sync.server.unix_serve
    functionSourceFile: websockets.sync.server
    functionUses: 0
    functionsReached:
    - websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__
    - <builtin>.isinstance
    - websockets.sync.server.WebSocketServer.__init__
    - os.pipe
    - socket.create_server
    - websockets.sync.server.serve
    - <builtin>.list
    - websockets.headers.validate_subprotocols
    - _token_re.fullmatch
    - logging.getLogger
    - websockets.extensions.permessage_deflate.enable_server_permessage_deflate
    - <builtin>.any
    - ssl_context.wrap_socket
    linkageType: pythonLinkage
    raised: []
    returnType: N/A
  Function list name: All functions
Function coverage:
  '...websockets.fuzzing.fuzz_websocket_parser':
  - 50
  - 51
  - 6
  '...websockets.fuzzing.fuzz_websocket_parser.main':
  - 46
  - 47
  '...websockets.fuzzing.fuzz_websocket_parser.test_one_input':
  - 32
  - 13
  - 14
  - 15
  - 16
  - 17
  - 19
  - 20
  - 21
  - 23
  - 30
  websockets:
  - 56
  - 57
  websockets.__main__:
  - 19
  - 158
  - 159
  websockets.__main__.main:
  - 128
  - 131
  - 133
  - 134
  - 136
  - 138
  - 141
  - 142
  - 148
  - 149
  - 151
  - 152
  - 153
  - 155
  - 101
  - 106
  - 107
  - 108
  - 109
  - 111
  - 112
  - 115
  - 116
  - 119
  - 121
  - 123
  websockets.__main__.print_during_input:
  - 52
  - 68
  websockets.__main__.print_incoming_messages:
  - 96
  - 84
  - 85
  - 86
  - 88
  - 89
  - 92
  websockets.__main__.print_over_input:
  - 72
  - 80
  websockets.__main__.win_enable_vt100:
  - 34
  - 35
  - 38
  - 39
  - 44
  - 45
  - 47
  - 22
  - 30
  - 31
  websockets.client.ClientConnection.__init__:
  - 354
  - 358
  websockets.client.ClientProtocol:
  - 48
  websockets.client.ClientProtocol.__init__:
  - 81
  - 91
  websockets.client.ClientProtocol.connect:
  - 131
  - 132
  - 135
  - 105
  - 107
  - 111
  - 112
  - 114
  - 122
  - 123
  - 125
  - 94
  websockets.client.ClientProtocol.parse:
  - 323
  - 324
  - 325
  - 327
  - 329
  - 330
  - 331
  - 332
  - 333
  - 336
  - 339
  - 341
  - 342
  - 343
  - 314
  - 347
  - 316
  - 349
  websockets.client.ClientProtocol.process_extensions:
  - 224
  - 225
  - 228
  - 229
  - 232
  - 233
  - 235
  - 240
  - 247
  - 190
  - 222
  websockets.client.ClientProtocol.process_response:
  - 163
  - 164
  - 169
  - 138
  - 187
  - 149
  - 182
  - 185
  - 154
  - 155
  - 158
  websockets.client.ClientProtocol.process_subprotocol:
  - 288
  - 293
  - 263
  - 277
  - 279
  - 280
  - 283
  - 284
  - 287
  websockets.client.ClientProtocol.send_request:
  - 299
  - 306
  - 307
  - 308
  - 309
  - 311
  websockets.connection:
  - 9
  websockets.datastructures:
  - 188
  websockets.datastructures.Headers:
  - 34
  websockets.datastructures.Headers.__contains__:
  - 98
  websockets.datastructures.Headers.__delitem__:
  - 120
  - 121
  - 123
  websockets.datastructures.Headers.__eq__:
  - 126
  websockets.datastructures.Headers.__getitem__:
  - 109
  - 110
  websockets.datastructures.Headers.__init__:
  - 77
  websockets.datastructures.Headers.__iter__:
  - 101
  websockets.datastructures.Headers.__len__:
  - 104
  websockets.datastructures.Headers.__setitem__:
  - 116
  - 117
  websockets.datastructures.Headers.__str__:
  - 80
  websockets.datastructures.Headers.clear:
  - 131
  websockets.datastructures.Headers.copy:
  - 88
  - 86
  - 87
  websockets.datastructures.Headers.get_all:
  - 158
  - 151
  websockets.datastructures.Headers.raw_items:
  - 161
  - 165
  websockets.datastructures.Headers.serialize:
  - 93
  websockets.datastructures.Headers.update:
  - 144
  - 146
  - 139
  - 143
  websockets.datastructures.MultipleValuesError:
  - 21
  websockets.datastructures.MultipleValuesError.__str__:
  - 28
  - 29
  - 30
  websockets.datastructures.SupportsKeysAndGetItem:
  - 170
  websockets.datastructures.SupportsKeysAndGetItem.__getitem__:
  - 179
  websockets.datastructures.SupportsKeysAndGetItem.keys:
  - 176
  websockets.exceptions:
  - 1
  websockets.exceptions.AbortHandshake:
  - 317
  websockets.exceptions.AbortHandshake.__init__:
  - 338
  - 339
  websockets.exceptions.AbortHandshake.__str__:
  - 345
  - 346
  websockets.exceptions.ConnectionClosed:
  - 76
  websockets.exceptions.ConnectionClosed.__str__:
  - 109
  - 101
  - 102
  - 114
  websockets.exceptions.ConnectionClosed.code:
  - 123
  websockets.exceptions.ConnectionClosed.reason:
  - 129
  websockets.exceptions.ConnectionClosedError:
  - 135
  websockets.exceptions.ConnectionClosedOK:
  - 145
  websockets.exceptions.DuplicateParameter:
  - 272
  websockets.exceptions.InvalidHandshake:
  - 155
  websockets.exceptions.InvalidHeader:
  - 178
  websockets.exceptions.InvalidHeader.__str__:
  - 188
  - 190
  websockets.exceptions.InvalidHeaderFormat:
  - 197
  websockets.exceptions.InvalidHeaderFormat.__init__:
  - 205
  websockets.exceptions.InvalidHeaderValue:
  - 209
  websockets.exceptions.InvalidMessage:
  - 171
  websockets.exceptions.InvalidOrigin:
  - 218
  websockets.exceptions.InvalidOrigin.__init__:
  - 224
  websockets.exceptions.InvalidParameterName:
  - 285
  websockets.exceptions.InvalidParameterValue:
  - 298
  websockets.exceptions.InvalidParameterValue.__str__:
  - 308
  - 310
  websockets.exceptions.InvalidState:
  - 366
  websockets.exceptions.InvalidStatus:
  - 235
  websockets.exceptions.InvalidStatusCode:
  - 251
  websockets.exceptions.InvalidURI:
  - 377
  websockets.exceptions.InvalidUpgrade:
  - 228
  websockets.exceptions.NegotiationError:
  - 265
  websockets.exceptions.PayloadTooBig:
  - 391
  websockets.exceptions.ProtocolError:
  - 398
  websockets.exceptions.RedirectHandshake:
  - 351
  websockets.exceptions.SecurityError:
  - 162
  websockets.exceptions.WebSocketException:
  - 69
  websockets.extensions.base.ClientExtensionFactory:
  - 64
  - 58
  websockets.extensions.base.ClientExtensionFactory.get_request_params:
  - 67
  websockets.extensions.base.ClientExtensionFactory.process_response_params:
  - 81
  websockets.extensions.base.Extension:
  - 19
  - 13
  websockets.extensions.base.Extension.decode:
  - 27
  websockets.extensions.base.Extension.encode:
  - 44
  websockets.extensions.base.ServerExtensionFactory:
  - 107
  - 101
  websockets.extensions.base.ServerExtensionFactory.process_request_params:
  - 114
  websockets.extensions.permessage_deflate:
  - 22
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory:
  - 283
  - 260
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.__init__:
  - 297
  - 299
  - 293
  - 305
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.get_request_params:
  - 322
  - 318
  websockets.extensions.permessage_deflate.ClientPerMessageDeflateFactory.process_response_params:
  - 417
  - 421
  - 423
  - 392
  - 426
  - 396
  - 365
  - 366
  - 334
  - 398
  - 340
  - 378
  - 379
  - 413
  - 414
  - 351
  websockets.extensions.permessage_deflate.PerMessageDeflate:
  - 26
  - 31
  websockets.extensions.permessage_deflate.PerMessageDeflate.__init__:
  - 64
  - 41
  - 45
  - 60
  - 61
  - 63
  websockets.extensions.permessage_deflate.PerMessageDeflate.decode:
  - 129
  - 100
  - 101
  - 132
  - 103
  - 136
  - 139
  - 111
  - 113
  - 114
  - 118
  - 119
  - 89
  - 125
  - 94
  websockets.extensions.permessage_deflate.PerMessageDeflate.encode:
  - 163
  - 164
  - 168
  - 171
  - 142
  - 147
  - 153
  - 155
  - 157
  - 158
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory:
  - 460
  - 486
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.__init__:
  - 497
  - 501
  - 503
  - 505
  - 510
  websockets.extensions.permessage_deflate.ServerPerMessageDeflateFactory.process_request_params:
  - 608
  - 612
  - 613
  - 615
  - 617
  - 586
  - 621
  - 590
  - 559
  - 528
  - 560
  - 592
  - 607
  - 627
  - 534
  - 572
  - 573
  - 543
  websockets.extensions.permessage_deflate._build_parameters:
  - 192
  - 193
  - 194
  - 180
  - 185
  - 186
  - 187
  - 188
  - 189
  - 190
  - 191
  websockets.extensions.permessage_deflate._extract_parameters:
  - 225
  - 230
  - 231
  - 201
  - 233
  - 234
  - 238
  - 239
  - 241
  - 243
  - 244
  - 213
  - 214
  - 215
  - 217
  - 222
  - 223
  websockets.extensions.permessage_deflate.enable_client_permessage_deflate:
  - 451
  - 452
  - 438
  - 445
  - 447
  websockets.extensions.permessage_deflate.enable_server_permessage_deflate:
  - 640
  - 647
  - 649
  - 653
  - 654
  websockets.frames.Close:
  - 399
  websockets.frames.Close.__str__:
  - 416
  - 418
  - 421
  - 424
  - 412
  websockets.frames.Close.check:
  - 469
  - 462
  websockets.frames.Close.parse:
  - 448
  - 449
  - 431
  - 442
  - 443
  - 444
  - 445
  - 446
  websockets.frames.Close.serialize:
  - 458
  - 459
  - 454
  websockets.frames.CloseCode:
  - 56
  websockets.frames.Frame:
  - 126
  websockets.frames.Frame.__str__:
  - 192
  - 161
  - 162
  - 166
  - 167
  - 168
  - 169
  - 170
  - 171
  - 178
  - 150
  - 182
  - 184
  - 183
  - 155
  - 189
  - 158
  websockets.frames.Frame.check:
  - 333
  - 340
  - 343
  - 344
  - 346
  websockets.frames.Frame.parse:
  - 258
  - 259
  - 260
  - 262
  - 264
  - 266
  - 267
  - 269
  - 205
  - 226
  - 227
  - 236
  - 240
  - 244
  - 245
  - 246
  - 247
  - 248
  - 249
  - 250
  - 254
  - 255
  websockets.frames.Frame.serialize:
  - 279
  - 291
  - 293
  - 295
  - 296
  - 298
  - 311
  - 312
  - 313
  - 314
  - 315
  - 317
  - 319
  - 320
  - 321
  - 324
  - 325
  - 328
  - 330
  websockets.frames.Opcode:
  - 38
  websockets.frames.prepare_ctrl:
  - 389
  - 390
  - 391
  - 392
  - 375
  websockets.frames.prepare_data:
  - 368
  - 367
  - 366
  - 351
  websockets.headers:
  - 96
  - 35
  - 260
  - 141
  - 78
  - 144
  - 498
  - 115
  - 120
  websockets.headers.build_authorization_basic:
  - 577
  - 586
  websockets.headers.build_extension:
  - 417
  - 418
  - 411
  websockets.headers.build_extension_item:
  - 400
  - 394
  websockets.headers.build_host:
  - 52
  - 55
  - 46
  - 39
  websockets.headers.build_quoted_string:
  - 154
  - 155
  - 148
  - 157
  websockets.headers.build_subprotocol:
  - 464
  - 458
  websockets.headers.build_www_authenticate_basic:
  - 493
  - 485
  - 494
  websockets.headers.parse_OWS:
  - 82
  - 91
  - 93
  websockets.headers.parse_authorization_basic:
  - 544
  - 545
  - 550
  - 555
  - 556
  - 559
  - 529
  - 566
  websockets.headers.parse_connection:
  - 257
  - 245
  websockets.headers.parse_connection_option:
  - 240
  - 241
  - 231
  websockets.headers.parse_end:
  - 520
  - 524
  websockets.headers.parse_extension:
  - 385
  - 363
  websockets.headers.parse_extension_item:
  - 352
  - 355
  - 356
  - 357
  - 358
  - 359
  - 340
  - 351
  websockets.headers.parse_extension_item_param:
  - 320
  - 322
  - 326
  - 331
  - 332
  - 304
  - 314
  - 315
  - 318
  - 319
  websockets.headers.parse_list:
  - 192
  - 223
  - 197
  - 198
  - 166
  - 199
  - 202
  - 206
  - 207
  - 214
  - 215
  - 218
  - 191
  websockets.headers.parse_quoted_string:
  - 138
  - 124
  - 133
  - 134
  websockets.headers.parse_subprotocol:
  - 442
  - 451
  websockets.headers.parse_subprotocol_item:
  - 428
  - 437
  - 438
  websockets.headers.parse_token:
  - 112
  - 100
  - 109
  - 110
  websockets.headers.parse_token68:
  - 512
  - 516
  - 502
  - 511
  websockets.headers.parse_upgrade:
  - 298
  - 286
  websockets.headers.parse_upgrade_protocol:
  - 282
  - 268
  - 277
  - 278
  websockets.headers.peek_ahead:
  - 75
  - 67
  websockets.headers.validate_subprotocols:
  - 480
  - 471
  - 475
  - 477
  - 479
  websockets.http:
  - 29
  - 12
  - 13
  websockets.http11:
  - 48
  - 35
  websockets.http11.Request:
  - 53
  websockets.http11.Request.exception:
  - 69
  websockets.http11.Request.parse:
  - 131
  - 134
  - 137
  - 112
  - 81
  - 117
  - 121
  - 123
  - 125
  - 127
  websockets.http11.Request.serialize:
  - 146
  - 147
  - 140
  websockets.http11.Response:
  - 153
  websockets.http11.Response.exception:
  - 173
  websockets.http11.Response.parse:
  - 225
  - 257
  - 259
  - 261
  - 230
  - 232
  - 234
  - 266
  - 236
  - 271
  - 240
  - 273
  - 213
  - 245
  - 218
  - 187
  - 222
  websockets.http11.Response.serialize:
  - 282
  - 283
  - 276
  - 284
  websockets.http11.d:
  - 24
  - 28
  websockets.http11.parse_headers:
  - 321
  - 292
  - 324
  - 326
  - 327
  - 330
  - 331
  - 311
  - 312
  - 314
  - 317
  websockets.http11.parse_line:
  - 362
  - 358
  - 343
  websockets.imports.import_name:
  - 27
  - 26
  - 11
  - 28
  websockets.imports.lazy_import:
  - 36
  - 55
  - 57
  - 60
  - 61
  - 62
  websockets.imports.lazy_import.__dir__:
  - 97
  websockets.imports.lazy_import.__getattr__:
  - 90
  - 85
  - 77
  websockets.legacy.async_timeout:
  - 15
  websockets.legacy.async_timeout.Timeout.__aenter__:
  - 160
  websockets.legacy.async_timeout.Timeout.__aexit__:
  - 169
  websockets.legacy.async_timeout.Timeout.__enter__:
  - 147
  - 142
  websockets.legacy.async_timeout.Timeout.__exit__:
  - 156
  websockets.legacy.async_timeout.Timeout.__init__:
  - 136
  - 139
  websockets.legacy.async_timeout.Timeout._do_enter:
  - 244
  - 247
  websockets.legacy.async_timeout.Timeout._do_exit:
  - 250
  - 255
  websockets.legacy.async_timeout.Timeout._on_timeout:
  - 259
  websockets.legacy.async_timeout.Timeout._reject:
  - 190
  - 191
  websockets.legacy.async_timeout.Timeout._reschedule:
  - 230
  - 233
  - 234
  - 235
  - 237
  - 238
  - 239
  - 241
  websockets.legacy.async_timeout.Timeout.expired:
  - 174
  websockets.legacy.async_timeout.Timeout.reject:
  - 185
  - 187
  - 182
  websockets.legacy.async_timeout.Timeout.shift:
  - 202
  - 195
  - 204
  websockets.legacy.async_timeout.Timeout.update:
  - 224
  - 225
  - 207
  - 217
  - 219
  - 221
  - 222
  websockets.legacy.async_timeout.final:
  - 22
  websockets.legacy.async_timeout.timeout:
  - 74
  - 75
  - 76
  - 79
  - 62
  websockets.legacy.async_timeout.timeout_at:
  - 97
  - 98
  - 83
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol:
  - 43
  - 35
  - 29
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol.__init__:
  - 52
  - 55
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol.check_credentials:
  - 73
  - 58
  - 74
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol.process_request:
  - 97
  - 101
  - 105
  - 108
  - 114
  - 83
  - 92
  websockets.legacy.auth.basic_auth_protocol_factory:
  - 160
  - 161
  - 162
  - 163
  - 168
  - 155
  - 177
  - 180
  - 123
  - 158
  - 159
  websockets.legacy.auth.basic_auth_protocol_factory.check_credentials:
  - 175
  websockets.legacy.auth.is_credentials:
  - 25
  websockets.legacy.client.Connect:
  - 341
  websockets.legacy.client.Connect.__aexit__:
  - 637
  websockets.legacy.client.Connect.__aiter__:
  - 610
  - 612
  - 614
  - 617
  - 620
  - 599
  - 603
  - 604
  - 605
  websockets.legacy.client.Connect.__await__:
  - 643
  websockets.legacy.client.Connect.__await_impl__:
  - 650
  - 651
  - 652
  - 654
  - 662
  - 663
  - 664
  - 667
  - 668
  websockets.legacy.client.Connect.__await_impl_timeout__:
  - 646
  - 647
  websockets.legacy.client.Connect.__init__:
  - 518
  - 519
  - 520
  - 526
  - 531
  - 532
  - 534
  - 535
  - 536
  - 541
  - 542
  - 449
  - 450
  - 453
  - 455
  - 459
  - 460
  - 463
  - 465
  - 469
  - 472
  - 473
  - 474
  - 477
  - 479
  - 480
  - 481
  - 482
  - 488
  - 489
  - 490
  - 493
  - 494
  - 496
  websockets.legacy.client.Connect.handle_redirect:
  - 577
  - 554
  - 555
  - 558
  - 568
  - 571
  - 574
  websockets.legacy.client.WebSocketClientProtocol:
  - 57
  websockets.legacy.client.WebSocketClientProtocol.__init__:
  - 97
  - 98
  - 99
  websockets.legacy.client.WebSocketClientProtocol.handshake:
  - 268
  - 284
  - 286
  - 288
  - 289
  - 293
  - 296
  - 298
  - 299
  - 301
  - 307
  - 308
  - 311
  - 312
  - 314
  - 315
  - 317
  - 319
  - 320
  - 321
  - 324
  - 327
  - 329
  - 333
  - 337
  websockets.legacy.client.WebSocketClientProtocol.process_extensions:
  - 192
  - 195
  - 196
  - 198
  - 203
  - 210
  - 185
  - 187
  - 188
  - 157
  - 191
  websockets.legacy.client.WebSocketClientProtocol.process_subprotocol:
  - 229
  - 239
  - 241
  - 242
  - 245
  - 246
  - 249
  - 250
  - 255
  websockets.legacy.client.WebSocketClientProtocol.read_http_response:
  - 139
  - 143
  - 144
  - 145
  - 146
  - 127
  websockets.legacy.client.WebSocketClientProtocol.write_http_request:
  - 107
  - 114
  - 115
  - 116
  - 117
  - 122
  - 124
  websockets.legacy.client.unix_connect:
  - 689
  - 705
  websockets.legacy.compatibility:
  - 9
  websockets.legacy.framing.Frame.__str__:
  - 36
  websockets.legacy.framing.Frame.check:
  - 39
  websockets.legacy.framing.Frame.new_frame:
  - 26
  websockets.legacy.framing.Frame.read:
  - 50
  - 68
  - 69
  - 78
  - 82
  - 86
  - 87
  - 88
  - 89
  - 90
  - 91
  - 92
  - 94
  - 95
  - 98
  - 99
  - 100
  - 102
  - 104
  - 106
  - 107
  - 109
  - 111
  websockets.legacy.framing.Frame.write:
  - 144
  - 127
  websockets.legacy.framing.parse_close:
  - 156
  - 167
  websockets.legacy.framing.serialize_close:
  - 176
  - 172
  websockets.legacy.handshake.build_request:
  - 18
  - 30
  websockets.legacy.handshake.build_response:
  - 107
  - 119
  websockets.legacy.handshake.check_request:
  - 65
  - 66
  - 100
  - 39
  - 72
  - 85
  - 88
  - 58
  - 59
  - 62
  websockets.legacy.handshake.check_response:
  - 164
  - 138
  - 139
  - 142
  - 145
  - 146
  - 152
  - 123
  websockets.legacy.http:
  - 42
  - 29
  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:
  - 70
  websockets.legacy.protocol.WebSocketCommonProtocol.__aiter__:
  - 498
  - 486
  websockets.legacy.protocol.WebSocketCommonProtocol.__init__:
  - 256
  - 260
  - 262
  - 264
  - 269
  - 280
  - 283
  - 294
  - 192
  - 193
  - 196
  - 199
  - 201
  - 205
  - 206
  - 208
  - 219
  - 220
  - 223
  - 224
  - 225
  - 226
  - 229
  - 242
  - 248
  - 255
  websockets.legacy.protocol.WebSocketCommonProtocol._drain:
  - 331
  - 332
  - 333
  - 335
  - 336
  - 343
  - 344
  websockets.legacy.protocol.WebSocketCommonProtocol._drain_helper:
  - 321
  - 324
  - 325
  - 327
  - 319
  websockets.legacy.protocol.WebSocketCommonProtocol.abort_pings:
  - 1451
  - 1458
  - 1460
  - 1461
  - 1466
  websockets.legacy.protocol.WebSocketCommonProtocol.close:
  - 769
  - 770
  - 775
  - 745
  - 787
  - 788
  - 793
  websockets.legacy.protocol.WebSocketCommonProtocol.close_code:
  - 451
  - 460
  - 462
  websockets.legacy.protocol.WebSocketCommonProtocol.close_connection:
  - 1313
  - 1314
  - 1317
  - 1286
  - 1318
  - 1319
  - 1325
  - 1329
  - 1299
  - 1331
  - 1301
  - 1332
  - 1337
  - 1306
  - 1307
  - 1310
  - 1311
  websockets.legacy.protocol.WebSocketCommonProtocol.close_reason:
  - 480
  - 469
  - 478
  websockets.legacy.protocol.WebSocketCommonProtocol.close_transport:
  - 1347
  - 1351
  - 1352
  - 1353
  - 1355
  - 1357
  - 1358
  - 1361
  - 1362
  - 1364
  - 1367
  - 1340
  websockets.legacy.protocol.WebSocketCommonProtocol.closed:
  - 440
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_closed_exc:
  - 905
  - 899
  - 911
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_lost:
  - 1504
  - 1506
  - 1508
  - 1509
  - 1510
  - 1512
  - 1516
  - 1519
  - 1522
  - 1492
  - 1524
  - 1525
  - 1527
  - 1497
  - 1499
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_made:
  - 1489
  - 1484
  - 1485
  - 1471
  websockets.legacy.protocol.WebSocketCommonProtocol.connection_open:
  - 356
  - 357
  - 359
  - 361
  - 363
  - 347
  websockets.legacy.protocol.WebSocketCommonProtocol.data_received:
  - 1544
  websockets.legacy.protocol.WebSocketCommonProtocol.drain:
  - 1192
  - 1195
  - 1198
  websockets.legacy.protocol.WebSocketCommonProtocol.ensure_open:
  - 928
  - 932
  - 933
  - 938
  - 941
  - 947
  - 921
  websockets.legacy.protocol.WebSocketCommonProtocol.eof_received:
  - 1547
  - 1559
  websockets.legacy.protocol.WebSocketCommonProtocol.fail_connection:
  - 1411
  - 1412
  - 1444
  - 1447
  - 1416
  - 1417
  - 1448
  - 1423
  - 1424
  - 1393
  - 1435
  - 1436
  websockets.legacy.protocol.WebSocketCommonProtocol.host:
  - 368
  websockets.legacy.protocol.WebSocketCommonProtocol.keepalive_ping:
  - 1249
  - 1283
  - 1254
  - 1262
  - 1263
  - 1265
  - 1267
  - 1268
  - 1269
  - 1239
  - 1272
  - 1273
  - 1271
  websockets.legacy.protocol.WebSocketCommonProtocol.local_address:
  - 386
  - 402
  websockets.legacy.protocol.WebSocketCommonProtocol.open:
  - 426
  - 436
  websockets.legacy.protocol.WebSocketCommonProtocol.ping:
  - 865
  - 867
  - 809
  - 847
  - 849
  - 850
  - 853
  - 858
  - 860
  - 862
  websockets.legacy.protocol.WebSocketCommonProtocol.pong:
  - 889
  - 891
  - 893
  - 870
  websockets.legacy.protocol.WebSocketCommonProtocol.port:
  - 374
  websockets.legacy.protocol.WebSocketCommonProtocol.read_data_frame:
  - 1121
  - 1153
  - 1146
  - 1127
  - 1129
  - 1098
  - 1131
  - 1147
  - 1136
  - 1137
  - 1138
  - 1108
  - 1143
  - 1111
  - 1144
  - 1145
  - 1114
  - 1115
  websockets.legacy.protocol.WebSocketCommonProtocol.read_frame:
  - 1161
  - 1171
  - 1172
  - 1165
  websockets.legacy.protocol.WebSocketCommonProtocol.read_message:
  - 1056
  - 1025
  - 1088
  - 1089
  - 1091
  - 1093
  - 1095
  - 1033
  - 1036
  - 1039
  - 1071
  - 1041
  - 1085
  - 1047
  - 1048
  - 1053
  - 1054
  - 1055
  websockets.legacy.protocol.WebSocketCommonProtocol.read_message.append:
  - 1060
  - 1066
  - 1067
  - 1068
  - 1075
  - 1081
  - 1082
  - 1083
  websockets.legacy.protocol.WebSocketCommonProtocol.recv:
  - 546
  - 547
  - 552
  - 562
  - 563
  - 532
  - 503
  - 568
  - 571
  - 574
  - 575
  websockets.legacy.protocol.WebSocketCommonProtocol.remote_address:
  - 422
  - 406
  websockets.legacy.protocol.WebSocketCommonProtocol.resume_writing:
  - 1538
  - 1540
  - 1541
  websockets.legacy.protocol.WebSocketCommonProtocol.secure:
  - 379
  websockets.legacy.protocol.WebSocketCommonProtocol.send:
  - 640
  - 645
  - 646
  - 647
  - 651
  - 656
  - 658
  - 660
  - 662
  - 665
  - 667
  - 670
  - 673
  - 674
  - 675
  - 677
  - 680
  - 685
  - 689
  - 694
  - 697
  - 699
  - 704
  - 706
  - 710
  - 584
  - 712
  - 715
  - 719
  - 720
  - 722
  - 725
  - 730
  - 734
  - 635
  websockets.legacy.protocol.WebSocketCommonProtocol.transfer_data:
  - 994
  - 963
  - 966
  - 1019
  - 970
  - 971
  - 972
  - 1005
  - 974
  - 1009
  - 979
  - 1013
  - 982
  - 983
  - 955
  - 1022
  websockets.legacy.protocol.WebSocketCommonProtocol.wait_closed:
  - 796
  - 806
  websockets.legacy.protocol.WebSocketCommonProtocol.wait_for_connection_lost:
  - 1377
  - 1379
  - 1380
  - 1386
  - 1370
  websockets.legacy.protocol.WebSocketCommonProtocol.write_close_frame:
  - 1223
  - 1226
  - 1227
  - 1230
  - 1232
  - 1233
  - 1236
  - 1214
  websockets.legacy.protocol.WebSocketCommonProtocol.write_frame:
  - 1208
  - 1209
  - 1204
  websockets.legacy.protocol.WebSocketCommonProtocol.write_frame_sync:
  - 1176
  - 1177
  - 1178
  - 1179
  websockets.legacy.protocol.broadcast:
  - 1632
  - 1634
  - 1635
  - 1637
  - 1639
  - 1608
  - 1611
  - 1612
  - 1644
  - 1616
  - 1618
  - 1619
  - 1622
  - 1623
  - 1624
  - 1625
  - 1627
  - 1567
  websockets.legacy.server.Serve:
  - 884
  websockets.legacy.server.Serve.__aexit__:
  - 1106
  - 1107
  websockets.legacy.server.Serve.__await__:
  - 1113
  websockets.legacy.server.Serve.__await_impl__:
  - 1116
  - 1117
  websockets.legacy.server.Serve.__init__:
  - 1027
  - 1030
  - 1031
  - 1032
  - 1035
  - 1037
  - 1039
  - 1041
  - 1042
  - 1043
  - 1046
  - 1047
  - 1049
  - 1054
  - 1079
  - 1080
  - 1083
  - 1087
  - 1007
  - 1008
  - 1011
  - 1013
  - 1017
  - 1018
  - 1021
  - 1023
  websockets.legacy.server.WebSocketServer:
  - 650
  websockets.legacy.server.WebSocketServer.__aexit__:
  - 880
  - 879
  websockets.legacy.server.WebSocketServer.__init__:
  - 673
  - 668
  - 669
  websockets.legacy.server.WebSocketServer._close:
  - 768
  - 772
  - 777
  - 778
  - 791
  - 781
  - 751
  - 785
  - 786
  - 759
  - 793
  - 762
  - 766
  websockets.legacy.server.WebSocketServer.close:
  - 728
  - 745
  - 746
  - 747
  websockets.legacy.server.WebSocketServer.get_loop:
  - 817
  - 821
  websockets.legacy.server.WebSocketServer.is_serving:
  - 824
  - 828
  websockets.legacy.server.WebSocketServer.register:
  - 714
  - 718
  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:
  - 721
  - 725
  websockets.legacy.server.WebSocketServer.wait_closed:
  - 796
  - 814
  websockets.legacy.server.WebSocketServer.wrap:
  - 706
  - 707
  - 711
  - 682
  - 696
  - 697
  - 698
  - 699
  - 700
  - 701
  - 702
  websockets.legacy.server.WebSocketServerProtocol:
  - 64
  websockets.legacy.server.WebSocketServerProtocol.__init__:
  - 131
  - 121
  - 122
  - 123
  - 125
  - 126
  websockets.legacy.server.WebSocketServerProtocol.connection_made:
  - 152
  - 153
  - 147
  - 143
  websockets.legacy.server.WebSocketServerProtocol.handler:
  - 263
  - 264
  - 156
  - 166
  - 167
  - 178
  - 180
  - 181
  - 182
  - 185
  - 186
  - 188
  - 189
  - 190
  - 193
  - 194
  - 201
  - 202
  - 203
  - 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:
  - 640
  - 642
  - 644
  - 561
  - 581
  - 585
  - 586
  - 590
  - 594
  - 599
  - 606
  - 609
  - 611
  - 613
  - 617
  - 621
  - 623
  - 625
  - 628
  - 631
  - 632
  - 633
  - 634
  - 636
  - 637
  - 638
  websockets.legacy.server.WebSocketServerProtocol.process_extensions:
  - 450
  - 451
  - 453
  - 458
  - 465
  - 466
  - 403
  - 475
  - 443
  - 476
  - 445
  - 446
  - 447
  websockets.legacy.server.WebSocketServerProtocol.process_origin:
  - 376
  - 393
  - 394
  - 390
  websockets.legacy.server.WebSocketServerProtocol.process_request:
  - 326
  - 360
  - 361
  - 362
  - 366
  websockets.legacy.server.WebSocketServerProtocol.process_subprotocol:
  - 484
  - 500
  - 502
  - 503
  - 504
  - 507
  websockets.legacy.server.WebSocketServerProtocol.read_http_request:
  - 288
  - 267
  - 279
  - 285
  - 286
  - 287
  websockets.legacy.server.WebSocketServerProtocol.select_subprotocol:
  - 544
  - 546
  - 547
  - 549
  - 518
  - 551
  - 543
  websockets.legacy.server.WebSocketServerProtocol.select_subprotocol.<lambda1>:
  - 551
  websockets.legacy.server.WebSocketServerProtocol.write_http_response:
  - 320
  - 321
  - 298
  - 306
  - 307
  - 308
  - 309
  - 310
  - 311
  - 316
  - 318
  websockets.legacy.server.remove_path_argument:
  - 1161
  - 1164
  - 1182
  websockets.legacy.server.remove_path_argument._ws_handler:
  - 1175
  websockets.legacy.server.unix_serve:
  - 1136
  - 1151
  websockets.protocol:
  - 42
  - 68
  websockets.protocol.Protocol:
  - 72
  websockets.protocol.Protocol.__init__:
  - 96
  - 97
  - 100
  - 101
  - 103
  - 137
  - 106
  - 148
  - 151
  - 152
  websockets.protocol.Protocol.close_code:
  - 184
  - 173
  - 182
  websockets.protocol.Protocol.close_exc:
  - 209
  - 234
  - 225
  websockets.protocol.Protocol.close_expected:
  - 483
  websockets.protocol.Protocol.close_reason:
  - 200
  - 202
  - 191
  websockets.protocol.Protocol.data_to_send:
  - 463
  websockets.protocol.Protocol.discard:
  - 580
  - 594
  - 595
  - 596
  - 597
  - 600
  - 601
  - 604
  websockets.protocol.Protocol.events_received:
  - 447
  websockets.protocol.Protocol.fail:
  - 422
  - 423
  - 424
  - 425
  - 426
  - 434
  - 435
  - 404
  - 441
  - 442
  websockets.protocol.Protocol.parse:
  - 576
  - 547
  - 548
  - 550
  - 521
  - 522
  - 523
  - 553
  - 557
  - 561
  - 530
  - 532
  - 565
  - 569
  - 571
  - 540
  - 509
  websockets.protocol.Protocol.receive_data:
  - 258
  - 259
  - 246
  websockets.protocol.Protocol.receive_eof:
  - 276
  - 277
  - 262
  websockets.protocol.Protocol.recv_frame:
  - 641
  - 644
  - 645
  - 649
  - 658
  - 663
  - 674
  - 675
  - 680
  - 681
  - 687
  - 610
  - 614
  - 615
  - 617
  - 620
  - 622
  - 623
  - 625
  - 628
  - 630
  - 633
  - 634
  - 636
  websockets.protocol.Protocol.send_binary:
  - 340
  - 325
  - 343
  websockets.protocol.Protocol.send_close:
  - 361
  - 363
  - 364
  - 366
  - 369
  - 370
  - 373
  - 346
  websockets.protocol.Protocol.send_continuation:
  - 282
  - 298
  - 301
  websockets.protocol.Protocol.send_eof:
  - 706
  - 707
  - 708
  websockets.protocol.Protocol.send_frame:
  - 692
  - 697
  - 698
  - 699
  - 700
  websockets.protocol.Protocol.send_ping:
  - 378
  - 388
  websockets.protocol.Protocol.send_pong:
  - 401
  - 391
  websockets.protocol.Protocol.send_text:
  - 304
  - 322
  - 319
  websockets.protocol.Protocol.state:
  - 168
  - 157
  - 167
  websockets.protocol.Side:
  - 48
  - 46
  websockets.protocol.State:
  - 56
  - 58
  websockets.server.ServerConnection.__init__:
  - 577
  - 573
  websockets.server.ServerProtocol:
  - 49
  websockets.server.ServerProtocol.__init__:
  - 105
  - 90
  - 99
  - 102
  websockets.server.ServerProtocol.accept:
  - 131
  - 135
  - 136
  - 137
  - 144
  - 145
  - 146
  - 160
  - 161
  - 162
  - 171
  - 172
  - 180
  - 182
  - 188
  - 191
  - 194
  - 195
  - 109
  websockets.server.ServerProtocol.parse:
  - 549
  - 551
  - 556
  - 557
  - 558
  - 559
  - 561
  - 562
  - 563
  - 564
  - 566
  - 568
  websockets.server.ServerProtocol.process_extensions:
  - 356
  - 388
  - 358
  - 359
  - 360
  - 389
  - 363
  - 364
  - 366
  - 371
  - 378
  - 379
  - 316
  websockets.server.ServerProtocol.process_origin:
  - 304
  - 307
  - 308
  - 287
  websockets.server.ServerProtocol.process_request:
  - 224
  - 225
  - 256
  - 228
  - 201
  - 233
  - 234
  - 269
  - 240
  - 272
  - 274
  - 276
  - 278
  - 253
  websockets.server.ServerProtocol.process_subprotocol:
  - 416
  - 394
  - 408
  - 410
  - 411
  websockets.server.ServerProtocol.reject:
  - 513
  - 484
  - 517
  - 518
  - 519
  - 503
  - 504
  - 505
  - 507
  - 509
  websockets.server.ServerProtocol.select_subprotocol:
  - 422
  - 460
  - 464
  - 468
  - 469
  - 470
  websockets.server.ServerProtocol.send_response:
  - 544
  - 545
  - 546
  - 523
  - 530
  - 532
  - 533
  - 534
  - 535
  - 536
  - 538
  - 540
  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.ClientConnection:
  - 26
  websockets.sync.client.ClientConnection.__init__:
  - 57
  - 58
  websockets.sync.client.ClientConnection.handshake:
  - 97
  - 70
  - 74
  - 75
  - 76
  - 77
  - 78
  - 80
  - 82
  - 83
  - 84
  - 87
  - 88
  - 89
  - 92
  - 93
  - 94
  - 95
  websockets.sync.client.ClientConnection.process_event:
  - 101
  - 106
  - 107
  - 109
  - 112
  websockets.sync.client.ClientConnection.recv_events:
  - 120
  - 123
  - 115
  websockets.sync.client.connect:
  - 256
  - 260
  - 261
  - 262
  - 263
  - 265
  - 266
  - 267
  - 271
  - 152
  - 283
  - 289
  - 292
  - 296
  - 297
  - 209
  - 210
  - 213
  - 214
  - 216
  - 221
  - 222
  - 224
  - 225
  - 226
  - 232
  - 234
  - 240
  - 241
  - 242
  - 243
  - 245
  - 247
  - 249
  - 251
  - 255
  websockets.sync.client.unix_connect:
  - 328
  - 323
  - 308
  - 324
  websockets.sync.connection:
  - 24
  websockets.sync.connection.Connection:
  - 28
  websockets.sync.connection.Connection.__exit__:
  - 144
  - 145
  - 147
  websockets.sync.connection.Connection.__init__:
  - 68
  - 70
  - 73
  - 76
  - 54
  - 88
  - 89
  - 61
  - 63
  websockets.sync.connection.Connection.__iter__:
  - 162
  - 150
  websockets.sync.connection.Connection.acknowledge_pings:
  - 513
  - 514
  - 515
  - 516
  - 521
  - 501
  - 507
  websockets.sync.connection.Connection.close:
  - 388
  - 406
  - 407
  - 408
  - 413
  websockets.sync.connection.Connection.close_socket:
  - 760
  - 769
  - 772
  - 773
  websockets.sync.connection.Connection.local_address:
  - 99
  - 108
  websockets.sync.connection.Connection.ping:
  - 448
  - 450
  - 452
  - 420
  - 457
  - 459
  - 461
  - 447
  websockets.sync.connection.Connection.pong:
  - 465
  - 482
  - 481
  - 479
  websockets.sync.connection.Connection.process_event:
  - 487
  - 493
  - 494
  - 495
  - 497
  - 498
  websockets.sync.connection.Connection.recv:
  - 199
  - 167
  websockets.sync.connection.Connection.recv_events:
  - 525
  - 536
  - 537
  - 538
  - 540
  - 541
  - 547
  - 550
  - 556
  - 559
  - 563
  - 565
  - 566
  - 571
  - 574
  - 577
  - 578
  - 588
  - 591
  - 599
  - 602
  - 606
  - 610
  - 612
  - 617
  websockets.sync.connection.Connection.recv_streaming:
  - 232
  - 209
  websockets.sync.connection.Connection.remote_address:
  - 112
  - 121
  websockets.sync.connection.Connection.send:
  - 283
  - 284
  - 285
  - 290
  - 292
  - 293
  - 294
  - 299
  - 303
  - 308
  - 309
  - 311
  - 317
  - 319
  - 320
  - 326
  - 327
  - 330
  - 332
  - 333
  - 339
  - 347
  - 348
  - 349
  - 351
  - 352
  - 355
  - 356
  - 358
  - 366
  - 367
  - 242
  - 377
  - 378
  websockets.sync.connection.Connection.send_context:
  - 650
  - 653
  - 658
  - 667
  - 676
  - 679
  - 681
  - 682
  - 700
  - 701
  - 705
  - 706
  - 708
  - 712
  - 717
  - 721
  - 722
  - 723
  - 625
  websockets.sync.connection.Connection.send_data:
  - 736
  - 737
  - 738
  - 739
  - 740
  - 741
  - 744
  - 727
  websockets.sync.connection.Connection.set_recv_events_exc:
  - 755
  - 756
  - 749
  websockets.sync.connection.Connection.subprotocol:
  - 125
  websockets.sync.messages:
  - 14
  websockets.sync.messages.Assembler:
  - 18
  websockets.sync.messages.Assembler.__init__:
  - 33
  - 26
  - 31
  websockets.sync.messages.Assembler.close:
  - 260
  - 268
  - 274
  - 275
  - 276
  - 277
  - 280
  - 281
  websockets.sync.messages.Assembler.get:
  - 97
  - 101
  - 104
  - 105
  - 109
  - 111
  - 80
  - 112
  - 83
  - 91
  - 60
  websockets.sync.messages.Assembler.get_iter:
  - 162
  - 164
  - 165
  - 167
  - 139
  - 172
  - 173
  - 142
  - 176
  - 147
  - 179
  - 180
  - 150
  - 120
  - 156
  - 157
  websockets.sync.messages.Assembler.put:
  - 186
  - 202
  - 205
  - 208
  - 209
  - 210
  - 212
  - 219
  - 220
  - 224
  - 225
  - 227
  - 229
  - 234
  - 235
  - 237
  - 238
  - 240
  - 245
  - 250
  - 251
  - 254
  websockets.sync.server.ServerConnection:
  - 32
  websockets.sync.server.ServerConnection.__init__:
  - 64
  - 63
  websockets.sync.server.ServerConnection.handshake:
  - 129
  - 130
  - 138
  - 141
  - 143
  - 144
  - 145
  - 146
  - 148
  - 87
  - 91
  - 92
  - 93
  - 96
  - 97
  - 98
  - 101
  - 104
  - 106
  - 109
  - 110
  - 118
  - 119
  - 121
  - 124
  - 126
  websockets.sync.server.ServerConnection.process_event:
  - 160
  - 163
  - 152
  - 157
  - 158
  websockets.sync.server.ServerConnection.recv_events:
  - 171
  - 174
  - 166
  websockets.sync.server.WebSocketServer:
  - 178
  websockets.sync.server.WebSocketServer.__exit__:
  - 262
  websockets.sync.server.WebSocketServer.__init__:
  - 202
  - 203
  - 205
  - 206
  websockets.sync.server.WebSocketServer.fileno:
  - 251
  - 247
  websockets.sync.server.WebSocketServer.serve_forever:
  - 224
  - 227
  - 231
  - 234
  - 235
  - 209
  - 221
  - 222
  - 223
  websockets.sync.server.WebSocketServer.shutdown:
  - 242
  - 243
  - 244
  - 238
  websockets.sync.server.serve:
  - 388
  - 389
  - 391
  - 392
  - 393
  - 396
  - 401
  - 402
  - 403
  - 309
  - 405
  - 407
  - 409
  - 508
  - 414
  - 415
  websockets.sync.server.serve.conn_handler:
  - 480
  - 453
  - 487
  - 504
  - 491
  - 428
  - 495
  - 433
  - 434
  - 467
  - 499
  - 501
  - 438
  - 439
  - 440
  - 441
  - 442
  - 502
  websockets.sync.server.serve.conn_handler.protocol_select_subprotocol:
  - 463
  websockets.sync.server.unix_serve:
  - 530
  - 516
  websockets.sync.utils.Deadline:
  - 11
  websockets.sync.utils.Deadline.__init__:
  - 24
  - 21
  websockets.sync.utils.Deadline.timeout:
  - 41
  - 27
  - 44
  - 43
  websockets.typing:
  - 33
  - 34
  - 37
  - 38
  - 41
  - 42
  - 46
  - 20
  - 52
  - 55
  - 56
  - 59
  - 60
  - 30
  websockets.uri.WebSocketURI:
  - 15
  websockets.uri.WebSocketURI.resource_name:
  - 41
  - 45
  websockets.uri.WebSocketURI.user_info:
  - 51
  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:
  - 72
  - 26
  - 82
  websockets.version.get_commit:
  - 77
  - 79
  websockets.version.get_version:
  - 65
  - 34
  - 40
  - 57
  - 59
  - 60
Fuzzer filename: /src/websockets/fuzzing/fuzz_websocket_parser.py
Inheritance:
  websockets.client.ClientConnection:
  - ClientProtocol
  websockets.client.ClientProtocol:
  - Protocol
  websockets.datastructures.Headers: []
  websockets.datastructures.MultipleValuesError:
  - LookupError
  websockets.datastructures.SupportsKeysAndGetItem:
  - Protocol
  websockets.exceptions.AbortHandshake:
  - InvalidHandshake
  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.InvalidState:
  - WebSocketException
  - AssertionError
  websockets.exceptions.InvalidStatus:
  - InvalidHandshake
  websockets.exceptions.InvalidStatusCode:
  - InvalidHandshake
  websockets.exceptions.InvalidURI:
  - WebSocketException
  websockets.exceptions.InvalidUpgrade:
  - InvalidHeader
  websockets.exceptions.NegotiationError:
  - InvalidHandshake
  websockets.exceptions.PayloadTooBig:
  - WebSocketException
  websockets.exceptions.ProtocolError:
  - WebSocketException
  websockets.exceptions.RedirectHandshake:
  - 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.async_timeout.Timeout: []
  websockets.legacy.async_timeout._State: []
  websockets.legacy.auth.BasicAuthWebSocketServerProtocol:
  - WebSocketServerProtocol
  websockets.legacy.client.Connect: []
  websockets.legacy.client.WebSocketClientProtocol:
  - WebSocketCommonProtocol
  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.connection.Connection: []
  websockets.sync.messages.Assembler: []
  websockets.sync.server.ServerConnection:
  - Connection
  websockets.sync.server.WebSocketServer: []
  websockets.sync.utils.Deadline: []
  websockets.uri.WebSocketURI: []
ep:
  func_name: test_one_input
  module: '...websockets.fuzzing.fuzz_websocket_parser'
