def __init__(self, key, cluster="<STR_LIT>", secure=True, secret="<STR_LIT>", user_data=None, log_level=logging.INFO,<EOL>daemon=True, port=<NUM_LIT>, reconnect_interval=<NUM_LIT:10>, custom_host="<STR_LIT>", auto_sub=False,<EOL>http_proxy_host="<STR_LIT>", http_proxy_port=<NUM_LIT:0>, http_no_proxy=None, http_proxy_auth=None,<EOL>**thread_kwargs):
<EOL>if cluster:<EOL><INDENT>self.host = "<STR_LIT>".format(cluster=cluster)<EOL><DEDENT>else:<EOL><INDENT>self.host = "<STR_LIT>"<EOL><DEDENT>self.key = key<EOL>self.secret = secret<EOL>self.user_data = user_data or {}<EOL>self.channels = {}<EOL>self.url = self._build_url(secure, port, custom_host)<EOL>if auto_sub:<EOL><INDENT>reconnect_handler = self._reconnect_handler<EOL><DEDENT>else:<EOL><INDENT>reconnect_handler = None<EOL><DEDENT>self.connection = Connection(self._connection_handler, self.url,<EOL>reconnect_handler=reconnect_handler,<EOL>log_level=log_level,<EOL>daemon=daemon,<EOL>reconnect_interval=reconnect_interval,<EOL>socket_kwargs=dict(http_proxy_host=http_proxy_host,<EOL>http_proxy_port=http_proxy_port,<EOL>http_no_proxy=http_no_proxy,<EOL>http_proxy_auth=http_proxy_auth,<EOL>ping_timeout=<NUM_LIT:100>),<EOL>**thread_kwargs)<EOL>
Initialize the Pusher instance.

        :param str or bytes key:
        :param str cluster:
        :param bool secure:
        :param bytes or str secret:
        :param Optional[Dict] user_data:
        :param str log_level:
        :param bool daemon:
        :param int port:
        :param int or float reconnect_interval:
        :param str custom_host:
        :param bool auto_sub:
        :param stt http_proxy_host:
        :param int http_proxy_port:
        :param http_no_proxy:
        :param http_proxy_auth:
        :param Any thread_kwargs: