code: def _get_vis_args(watcher) -> str:
      args_strs = []
      for param, default_v in [("port", 0), ("filename", None)]:
          if hasattr(watcher, param):
              v = getattr(watcher, param)
              if v == default_v or (v is None and default_v is None):
                  continue
              args_strs.append(
                  "{}={}".format(param, NotebookMaker._val2str(v))
              )
      return ", ".join(args_strs)
  
file_path: tensorwatch/tensorwatch/notebook_maker.py
imports: import nbformat
  from nbformat.v4 import new_code_cell, new_markdown_cell, new_notebook
  from nbformat import v3, v4
  import codecs
  from os import linesep, path
  import uuid
  from .None import utils
  import re
  from typing import List
  from .lv_types import VisArgs
label_desc: Use image node_id 2 for calling the NotebookMaker obj's underlying member method code with example usage: obj._get_vis_args(watcher) and returns: str