# built-ins
from abc import ABC, abstractmethod
from base64 import b64encode
-from dataclasses import dataclass
+from dataclasses import dataclass, InitVar
from getpass import getuser
from threading import Thread
from typing import Callable, Optional
'To affect Client identified by ClientIdMixin.'
-class _IrcConnection(BaseIrcConnection):
+@dataclass
+class _IrcConnection(BaseIrcConnection, ClientIdMixin):
+ hostname: InitVar[str]
+ port: InitVar[int]
- def __init__(self, client_id: str, **kwargs) -> None:
- # TODO: find out why I can't just ClientIdMixin here
- self.client_id = client_id
- super().__init__(**kwargs)
+ def __post_init__(self, hostname, port, **kwargs) -> None:
+ super().__init__(hostname=hostname, port=port, q_out=self.q_out,
+ **kwargs)
def _make_recv_event(self, msg: IrcMessage) -> ClientEvent:
# pylint: disable=unexpected-keyword-arg # confused by client_id=