Skip to content

Type-safe generics

Note

This is optional. If you don't use generics, everything works fine -- self.server is typed as a generic Server.

If you want your IDE to autocomplete custom methods on self.server, pass your server class as a type parameter:

class GameChannel(Channel["GameServer"]):

    def Network_chat(self, data: dict) -> None:
        # IDE knows self.server is GameServer, not generic Server
        self.server.broadcast(data)  # autocompletes!


class GameServer(Server[GameChannel]):
    channel_class = GameChannel

    def broadcast(self, data: dict) -> None:
        for ch in self.channels:
            ch.send(data)

Use it when you want the IDE help. Skip it when you just want to get something working.