docstr: BaseCard Constructor
  
  :param recipe_name: a string representing name of the recipe.
  :param step_name: a string representing the name of the step.
docstr_tok: ["BaseCard","Constructor",":","param","recipe_name",":","a","string","representing","name","of","the","recipe",".",":","param","step_name",":","a","string","representing","the","name","of","the","step","."]
code: def __init__(self, recipe_name: str, step_name: str) -> None:
      """
      BaseCard Constructor
  
      :param recipe_name: a string representing name of the recipe.
      :param step_name: a string representing the name of the step.
      """
      self._recipe_name = recipe_name
      self._step_name = step_name
      self._template_name = "base.html"
  
      self._string_builder = StringIO()
      self._tabs = []
  
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 1 to create a new BaseCard object  with example: obj = BaseCard(recipe_name, step_name)