class_docstr: Contain the results of a suite run.
  
  Parameters
  ----------
  name: str
  results: List[BaseCheckResult]
  extra_info: Optional[List[str]]
class_docstr_tok: ["Contain","the","results","of","a","suite","run",".","Parameters","--","--","--","--","--","name",":","str","results",":","List","[","BaseCheckResult","]","extra_info",":","Optional","[","List","[","str","]","]"]
docstr: Save a result to a markdown file to use with [CML](https://cml.dev).
  
  The rendered markdown will include only the conditions summary,
  with the full html results attached.
  
  Parameters
  ----------
  file : filename or file-like object
      The file to write the HTML output to. If None writes to report.md
  platform: str , default: 'github'
      Target Git platform to ensure pretty formatting and nothing funky.
      Options currently include 'github' or 'gitlab'.
  attach_html_report: bool , default True
      Whether to attach the full html report with plots, making it available
      for download. This will save a [suite_name].html file
      in the same directory as the markdown report.
  
  Returns
  -------
  Optional[str] :
      name of newly create file.
code: def save_as_cml_markdown(
      self,
      file: str = None,
      platform: str = "github",
      attach_html_report: bool = True,
  ):
      """Save a result to a markdown file to use with [CML](https://cml.dev).
  
      The rendered markdown will include only the conditions summary,
      with the full html results attached.
  
      Parameters
      ----------
      file : filename or file-like object
          The file to write the HTML output to. If None writes to report.md
      platform: str , default: 'github'
          Target Git platform to ensure pretty formatting and nothing funky.
          Options currently include 'github' or 'gitlab'.
      attach_html_report: bool , default True
          Whether to attach the full html report with plots, making it available
          for download. This will save a [suite_name].html file
          in the same directory as the markdown report.
  
      Returns
      -------
      Optional[str] :
          name of newly create file.
      """
      if file is None:
          file = "./report.md"
      elif isinstance(file, str):
          pass
      elif isinstance(file, io.TextIOWrapper):
          raise NotImplementedError(
              "io.TextIOWrapper is not yet supported for save_as_cml_markdown."
          )
  
      def format_conditions_table():
          conditions_table = SuiteResultHtmlSerializer(
              self
          ).prepare_conditions_table()
          # conditions_table = self.html_serializer.prepare_conditions_table()
  
          soup = BeautifulSoup(conditions_table, features="html.parser")
          soup.h2.extract()  # remove 'Conditions Table' redundant heading
          soup.style.extract()  # these are not rendered anyway
  
          summary = soup.new_tag("summary")
          summary.string = self.name
          soup.table.insert_before(summary)
  
          soup = BeautifulSoup(
              f"\n<details>{str(soup)}</details>\n",
              features="html.parser",
          )
          return soup
  
      soup = format_conditions_table()
      if not attach_html_report:
          with open(file, "w", encoding="utf-8") as handle:
              handle.write(soup.prettify())
      else:
          # save full html report
          path = pathlib.Path(file)
          html_file = str(
              pathlib.Path(file)
              .parent.resolve()
              .joinpath(path.stem + ".html")
          )
          self.save_as_html(html_file)
          # build string containing html report as an attachment
          # (hyperlink syntax gets processed as an attachment by cml)
          if platform == "gitlab":
              soup.summary.string = (
                  f"![{soup.summary.string}]({html_file})"
              )
              soup = soup.prettify()
          elif platform == "github":
              soup = (
                  soup.prettify()
                  + f"\n> 📎 ![Full {self.name} Report]({html_file})\n"
              )
          else:
              error_message = (
                  "Only 'github' and 'gitlab' are supported right now."
              )
              error_message += "\nThough one of these formats "
              error_message += (
                  "might work for your target Git platform!"
              )
              raise ValueError(error_message)
          with open(file, "w", encoding="utf-8") as file_handle:
              file_handle.write(soup)
  
imports: import abc
  import io
  import json
  import pathlib
  import warnings
  from collections import OrderedDict
  from typing import Any, Dict, List, Optional, Sequence, Set, Tuple, Type, Union, cast
  import jsonpickle
  from bs4 import BeautifulSoup
  from ipywidgets import Widget
  from typing_extensions import Self, TypedDict
  from deepchecks import __version__
  from deepchecks.core import check_result
  from deepchecks.core.checks import BaseCheck, CheckConfig
  from deepchecks.core.display import DisplayableResult, save_as_html
  from deepchecks.core.errors import DeepchecksNotSupportedError, DeepchecksValueError
  from deepchecks.core.serialization.abc import HTMLFormatter
  from deepchecks.core.serialization.suite_result.html import SuiteResultSerializer
  from deepchecks.core.serialization.suite_result.ipython import SuiteResultSerializer
  from deepchecks.core.serialization.suite_result.json import SuiteResultSerializer
  from deepchecks.core.serialization.suite_result.widget import SuiteResultSerializer
  from deepchecks.utils.strings import get_random_string, widget_to_html_string
  from deepchecks.utils.wandb_utils import wandb_run
  from .None import common
label_desc: Use image node_id 13 for calling the SuiteResult obj's underlying member method code with example usage: obj.save_as_cml_markdown(file, platform, attach_html_report) and returns: soup