docstr: Add a new tab with arbitrary content.
  
  :param name: a string representing the name of the tab.
  :param html_template: a string representing the HTML template for the card content.
docstr_tok: ["Add","a","new","tab","with","arbitrary","content",".",":","param","name",":","a","string","representing","the","name","of","the","tab",".",":","param","html_template",":","a","string","representing","the","HTML","template","for","the","card","content","."]
code: def add_tab(self, name, html_template) -> CardTab:
      """
      Add a new tab with arbitrary content.
  
      :param name: a string representing the name of the tab.
      :param html_template: a string representing the HTML template for the card content.
      """
      tab = CardTab(name, html_template)
      self._tabs.append((name, tab))
      return tab
  
imports: from __future__ import annotations
  import base64
  import html
  import logging
  import os
  import pathlib
  import pickle
  import random
  import re
  import string
  from io import StringIO
  from typing import Optional, Union
  from packaging.version import Version
  from mlflow.exceptions import INVALID_PARAMETER_VALUE, MlflowException
label_desc: Use image node_id 2 for calling the BaseCard obj's underlying member method code with example usage: obj.add_tab(name, html_template) and returns: tab