from copy import deepcopy
from typing import Any, Dict

from typing_extensions import Self


class KafkaPublishInput:
    def __init__(
        self,
        bootstrap_servers: str = None,
        key: str = None,
        key_serializer: str = None,
        value: str = None,
        request_timeout_ms: str = None,
        max_block_ms: str = None,
        headers: Dict[str, Any] = None,
        topic: str = None,
    ) -> Self:
        self._bootstrap_servers = deepcopy(bootstrap_servers)
        self._key = deepcopy(key)
        self._key_serializer = deepcopy(key_serializer)
        self._value = deepcopy(value)
        self._request_timeout_ms = deepcopy(request_timeout_ms)
        self._max_block_ms = deepcopy(max_block_ms)
        self._headers = deepcopy(headers)
        self._topic = deepcopy(topic)
