class_docstr: Formats a TFX component in the context of an interactive notebook.
class_docstr_tok: ["Formats","a","TFX","component","in","the","context","of","an","interactive","notebook","."]
docstr: Render the attributes section of an object.
docstr_tok: ["Render","the","attributes","section","of","an","object","."]
code: def render_attributes(self, obj: Any, seen_elements: Set[Any]) -> str:
      """Render the attributes section of an object."""
      if self._show_artifact_attributes and isinstance(obj, Artifact):
          artifact_attributes = sorted((obj.PROPERTIES or {}).keys())
          attributes = self.attributes + artifact_attributes
      else:
          attributes = self.attributes
      attr_trs = []
      for property_name in attributes:
          value = self._extended_getattr(obj, property_name)
          value = self.render_value(value, seen_elements)
          attr_trs.append(
              (
                  '<tr><td class="attr-name">.%s</td>'
                  '<td class = "attrvalue">%s</td></tr>'
              )
              % (property_name, value)
          )
      return '<table class="attr-table">%s</table>' % "".join(attr_trs)
  
file_path: tfx/tfx/orchestration/experimental/interactive/notebook_formatters.py
imports: import builtins
  import html
  from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Type, Union
  from tfx.dsl.components.base.base_component import BaseComponent
  from tfx.orchestration.experimental.interactive.execution_result import ExecutionResult
  from tfx.types.artifact import Artifact
  from tfx.types.channel import Channel
label_desc: Use image node_id 6 for calling the NotebookFormatter obj's underlying member method code with example usage: obj.render_attributes(obj, seen_elements) and returns: unknown