code: def from_iothub_connection_string(cls, conn_str, **kwargs):
          
          address, policy, key, _ = _parse_conn_str(conn_str)
          hub_name = address.split('.')[0]
          username = "{}@sas.root.{}".format(policy, hub_name)
          password = _generate_sas_token(address, policy, key)
          client = cls("amqps://" + address, username=username, password=password, **kwargs)
          client._auth_config = {  # pylint: disable=protected-access
              'iot_username': policy,
              'iot_password': key,
              'username': username,
              'password': password}
          return client
docs: Create an EventHubClient from an IoTHub connection string.
  
          :param conn_str: The connection string.
          :type conn_str: str
          :param debug: Whether to output network trace logs to the logger. Default
           is `False`.
          :type debug: bool
          :param http_proxy: HTTP proxy settings. This must be a dictionary with the following
           keys: 'proxy_hostname' (str value) and 'proxy_port' (int value).
           Additionally the following keys may also be present: 'username', 'password'.
          :type http_proxy: dict[str, Any]
          :param auth_timeout: The time in seconds to wait for a token to be authorized by the service.
           The default value is 60 seconds. If set to 0, no timeout will be enforced from the client.
          :type auth_timeout: int