Skip to content

Upgrading websockets 14 to 15

Review needed14.2 → 15.0.1Changed1

Review neededUpgrade verdict

1 behavior change.

  • See https://websockets.readthedocs.io/en/stable/project/changelog.html for details.
Nothing to change

No breaking, platform, security or deprecated items in this range.

Nothing in this upgrade needs a code or configuration change.

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • added: export InvalidProxy
  • added: export InvalidProxyMessage
  • added: export InvalidProxyStatus
  • added: export ProxyError
  • added: export Router
  • added: export route
  • added: export unix_route
  • changed: constructor connect(uri: str, *, origin: Origin | None=…, extensions: Sequence[ClientExtensionFactory] | None=…, subprotocols: Sequence[Subprotocol] | None=…, additional_headers: HeadersLike | None=…, user_agent_header: str | None=…, compression: str | None=…, process_exception: Callable[[Exception], Exception | None]=…, open_timeout: float | None=…, ping_interval: float | None=…, ping_timeout: f… → constructor connect(uri: str, *, origin: Origin | None=…, extensions: Sequence[ClientExtensionFactory] | None=…, subprotocols: Sequence[Subprotocol] | None=…, compression: str | None=…, additional_headers: HeadersLike | None=…, user_agent_header: str | None=…, proxy: str | Literal[True] | None=…, process_exception: Callable[[Exception], Exception | None]=…, open_timeout: float | None=…, ping_inte…
  • changed: async method Connection.recv(decode: bool | None=…) -> Data → async method Connection.recv(decode: Literal[True]) -> str | (decode: Literal[False]) -> bytes | (decode: bool | None=…) -> Data
  • changed: async method Connection.recv_streaming(decode: bool | None=…) -> AsyncIterator[Data] → method Connection.recv_streaming(decode: Literal[True]) -> AsyncIterator[str] | (decode: Literal[False]) -> AsyncIterator[bytes] | (decode: bool | None=…) -> AsyncIterator[Data]
  • changed: async method Assembler.get(decode: bool | None=…) -> Data → async method Assembler.get(decode: Literal[True]) -> str | (decode: Literal[False]) -> bytes | (decode: bool | None=…) -> Data
  • changed: async method Assembler.get_iter(decode: bool | None=…) -> AsyncIterator[Data] → method Assembler.get_iter(decode: Literal[True]) -> AsyncIterator[str] | (decode: Literal[False]) -> AsyncIterator[bytes] | (decode: bool | None=…) -> AsyncIterator[Data]
  • added: async method Router.handler(connection: ServerConnection) -> None
  • added: class Router
  • added: constructor Router(url_map: Map, server_name: str | None=…, url_scheme: str=…) -> None
  • added: function route(url_map: Map, *args: Any, server_name: str | None=…, ssl: ssl_module.SSLContext | Literal[True] | None=…, create_router: type[Router] | None=…, **kwargs: Any) -> Awaitable[Server]
  • added: function unix_route(url_map: Map, path: str | None=…, **kwargs: Any) -> Awaitable[Server]
  • added: method Router.get_server_name(connection: ServerConnection, request: Request) -> str
  • added: method Router.not_found(connection: ServerConnection) -> Response
  • added: method Router.redirect(connection: ServerConnection, url: str) -> Response
  • added: method Router.route_request(connection: ServerConnection, request: Request) -> Response | None
  • changed: constructor serve(handler: Callable[[ServerConnection], Awaitable[None]], host: str | None=…, port: int | None=…, *, origins: Sequence[Origin | re.Pattern[str] | None] | None=…, extensions: Sequence[ServerExtensionFactory] | None=…, subprotocols: Sequence[Subprotocol] | None=…, select_subprotocol: Callable[[ServerConnection, Sequence[Subprotocol]], Subprotocol | None] | None=…, process_request: C… → constructor serve(handler: Callable[[ServerConnection], Awaitable[None]], host: str | None=…, port: int | None=…, *, origins: Sequence[Origin | re.Pattern[str] | None] | None=…, extensions: Sequence[ServerExtensionFactory] | None=…, subprotocols: Sequence[Subprotocol] | None=…, select_subprotocol: Callable[[ServerConnection, Sequence[Subprotocol]], Subprotocol | None] | None=…, compression: str |…
  • added: function main(argv: list[str] | None=…) -> None
  • changed: constructor ClientProtocol(wsuri: WebSocketURI, *, origin: Origin | None=…, extensions: Sequence[ClientExtensionFactory] | None=…, subprotocols: Sequence[Subprotocol] | None=…, state: State=…, max_size: int | None=…, logger: LoggerLike | None=…) -> None → constructor ClientProtocol(uri: WebSocketURI, *, origin: Origin | None=…, extensions: Sequence[ClientExtensionFactory] | None=…, subprotocols: Sequence[Subprotocol] | None=…, state: State=…, max_size: int | None=…, logger: LoggerLike | None=…) -> None
  • added: class InvalidProxy(WebSocketException)
  • added: class InvalidProxyMessage(ProxyError)
  • added: class InvalidProxyStatus(ProxyError)
  • added: class ProxyError(InvalidHandshake)
  • added: constructor InvalidProxy(proxy: str, msg: str) -> None
  • added: constructor InvalidProxyStatus(response: http11.Response) -> None
  • changed: method ClientExtensionFactory.get_request_params() -> list[ExtensionParameter] → method ClientExtensionFactory.get_request_params() -> Sequence[ExtensionParameter]
  • changed: constructor ClientPerMessageDeflateFactory(server_no_context_takeover: bool=…, client_no_context_takeover: bool=…, server_max_window_bits: int | None=…, client_max_window_bits: int | bool | None=…, compress_settings: dict[str, Any] | None=…) -> None → constructor ClientPerMessageDeflateFactory(server_no_context_takeover: bool=…, client_no_context_takeover: bool=…, server_max_window_bits: int | None=…, client_max_window_bits: int | Literal[True] | None=…, compress_settings: dict[str, Any] | None=…) -> None
  • changed: method ClientPerMessageDeflateFactory.get_request_params() -> list[ExtensionParameter] → method ClientPerMessageDeflateFactory.get_request_params() -> Sequence[ExtensionParameter]
  • changed: function build_host(host: str, port: int, secure: bool) -> str → function build_host(host: str, port: int, secure: bool, *, always_include_port: bool=…) -> str
  • changed: static method Response.parse(read_line: Callable[[int], Generator[None, None, bytes]], read_exact: Callable[[int], Generator[None, None, bytes]], read_to_eof: Callable[[int], Generator[None, None, bytes]]) -> Generator[None, None, Response] → static method Response.parse(read_line: Callable[[int], Generator[None, None, bytes]], read_exact: Callable[[int], Generator[None, None, bytes]], read_to_eof: Callable[[int], Generator[None, None, bytes]], include_body: bool=…) -> Generator[None, None, Response]
  • changed: constructor ClientConnection(socket: socket.socket, protocol: ClientProtocol, *, close_timeout: float | None=…, max_queue: int | None | tuple[int | None, int | None]=…) -> None → constructor ClientConnection(socket: socket.socket, protocol: ClientProtocol, *, ping_interval: float | None=…, ping_timeout: float | None=…, close_timeout: float | None=…, max_queue: int | None | tuple[int | None, int | None]=…) -> None
  • changed: function connect(uri: str, *, sock: socket.socket | None=…, ssl: ssl_module.SSLContext | None=…, server_hostname: str | None=…, origin: Origin | None=…, extensions: Sequence[ClientExtensionFactory] | None=…, subprotocols: Sequence[Subprotocol] | None=…, additional_headers: HeadersLike | None=…, user_agent_header: str | None=…, compression: str | None=…, open_timeout: float | None=…, close_timeout… → function connect(uri: str, *, sock: socket.socket | None=…, ssl: ssl_module.SSLContext | None=…, server_hostname: str | None=…, origin: Origin | None=…, extensions: Sequence[ClientExtensionFactory] | None=…, subprotocols: Sequence[Subprotocol] | None=…, compression: str | None=…, additional_headers: HeadersLike | None=…, user_agent_header: str | None=…, proxy: str | Literal[True] | None=…, proxy_…
  • changed: constructor Connection(socket: socket.socket, protocol: Protocol, *, close_timeout: float | None=…, max_queue: int | None | tuple[int | None, int | None]=…) -> None → constructor Connection(socket: socket.socket, protocol: Protocol, *, ping_interval: float | None=…, ping_timeout: float | None=…, close_timeout: float | None=…, max_queue: int | None | tuple[int | None, int | None]=…) -> None
  • changed: method Connection.ping(data: Data | None=…) -> threading.Event → method Connection.ping(data: Data | None=…, ack_on_close: bool=…) -> threading.Event
  • changed: method Connection.recv(timeout: float | None=…, decode: bool | None=…) -> Data → method Connection.recv(timeout: float | None, decode: Literal[True]) -> str | (timeout: float | None, decode: Literal[False]) -> bytes | (timeout: float | None=…, *, decode: Literal[True]) -> str | (timeout: float | None=…, *, decode: Literal[False]) -> bytes | (timeout: float | None=…, decode: bool | None=…) -> Data
  • changed: method Connection.recv_streaming(decode: bool | None=…) -> Iterator[Data] → method Connection.recv_streaming(decode: Literal[True]) -> Iterator[str] | (decode: Literal[False]) -> Iterator[bytes] | (decode: bool | None=…) -> Iterator[Data]
  • added: method Connection.acknowledge_pending_pings() -> None
  • added: method Connection.keepalive() -> None
  • added: method Connection.start_keepalive() -> None
  • changed: method Assembler.get(timeout: float | None=…, decode: bool | None=…) -> Data → method Assembler.get(timeout: float | None, decode: Literal[True]) -> str | (timeout: float | None, decode: Literal[False]) -> bytes | (timeout: float | None=…, *, decode: Literal[True]) -> str | (timeout: float | None=…, *, decode: Literal[False]) -> bytes | (timeout: float | None=…, decode: bool | None=…) -> Data
  • changed: method Assembler.get_iter(decode: bool | None=…) -> Iterator[Data] → method Assembler.get_iter(decode: Literal[True]) -> Iterator[str] | (decode: Literal[False]) -> Iterator[bytes] | (decode: bool | None=…) -> Iterator[Data]
  • added: class Router
  • added: constructor Router(url_map: Map, server_name: str | None=…, url_scheme: str=…) -> None
  • added: function route(url_map: Map, *args: Any, server_name: str | None=…, ssl: ssl_module.SSLContext | Literal[True] | None=…, create_router: type[Router] | None=…, **kwargs: Any) -> Server
  • added: function unix_route(url_map: Map, path: str | None=…, **kwargs: Any) -> Server
  • added: method Router.get_server_name(connection: ServerConnection, request: Request) -> str
  • added: method Router.handler(connection: ServerConnection) -> None
  • added: method Router.not_found(connection: ServerConnection) -> Response
  • added: method Router.redirect(connection: ServerConnection, url: str) -> Response
  • added: method Router.route_request(connection: ServerConnection, request: Request) -> Response | None
  • changed: constructor ServerConnection(socket: socket.socket, protocol: ServerProtocol, *, close_timeout: float | None=…, max_queue: int | None | tuple[int | None, int | None]=…) -> None → constructor ServerConnection(socket: socket.socket, protocol: ServerProtocol, *, ping_interval: float | None=…, ping_timeout: float | None=…, close_timeout: float | None=…, max_queue: int | None | tuple[int | None, int | None]=…) -> None