class_docstr: The `FunctionCatalog` catalog stores information about the user-defined functions (Functions) in the system. It maintains the following information for each Function
  `_row_id:` an autogenerated identifier
  `_impl_file_path: ` the path to the implementation script for the Function
  `_type:` an optional tag associated with the function (useful for grouping similar Functions, such as multiple object detection Functions)
code: def as_dataclass(self) -> "FunctionCatalogEntry":
      args = []
      outputs = []
      for attribute in self._attributes:
          if attribute._is_input:
              args.append(attribute.as_dataclass())
          else:
              outputs.append(attribute.as_dataclass())
  
      metadata = []
      for meta_key_value in self._metadata:
          metadata.append(meta_key_value.as_dataclass())
  
      return FunctionCatalogEntry(
          row_id=self._row_id,
          name=self._name,
          impl_file_path=self._impl_file_path,
          type=self._type,
          checksum=self._checksum,
          args=args,
          outputs=outputs,
          metadata=metadata,
          dep_caches=[
              entry.as_dataclass() for entry in self._dep_caches
          ],
      )
  
file_path: evadb/evadb/catalog/models/function_catalog.py
imports: from __future__ import annotations
  from sqlalchemy import Column, String
  from sqlalchemy.orm import relationship
  from evadb.catalog.models.association_models import depend_function_and_function_cache
  from evadb.catalog.models.base_model import BaseModel
  from evadb.catalog.models.utils import FunctionCatalogEntry
label_desc: Use image node_id 2 for calling the FunctionCatalog obj's underlying member method code with example usage: obj.as_dataclass() and returns: FunctionCatalogEntry