class_docstr: The metadata of a logged MLflow Model.
class_docstr_tok: ["The","metadata","of","a","logged","MLflow","Model","."]
docstr: A :py:class:`ModelSignature <mlflow.models.ModelSignature>` that describes the
  model input and output.
  
  :getter: Gets the model signature if it is defined
  :type: Optional[ModelSignature]
docstr_tok: ["A",":","py",":","class",":","`","ModelSignature","<","mlflow.models.ModelSignature",">","`","that","describes","the","model","input","and","output",".",":","getter",":","Gets","the","model","signature","if","it","is","defined",":","type",":","Optional","[","ModelSignature","]"]
code: def signature(self):  # -> Optional[ModelSignature]
      """
      A :py:class:`ModelSignature <mlflow.models.ModelSignature>` that describes the
      model input and output.
  
      :getter: Gets the model signature if it is defined
      :type: Optional[ModelSignature]
      """
      return self._signature
  
imports: import json
  import logging
  import os
  import uuid
  import warnings
  from datetime import datetime
  from typing import Any, Callable, Dict, Optional, Union
  import yaml
  import mlflow
  from mlflow.artifacts import download_artifacts
  from mlflow.exceptions import MlflowException
  from mlflow.tracking._model_registry import DEFAULT_AWAIT_MAX_SLEEP_SECONDS
  from mlflow.tracking._tracking_service.utils import _resolve_tracking_uri
  from mlflow.utils.annotations import experimental
  from mlflow.utils.databricks_utils import get_databricks_runtime
  from mlflow.utils.file_utils import TempDir
  from mlflow.utils.uri import get_uri_scheme
label_desc: Use image node_id 9 for calling the ModelInfo obj's underlying member method code with example usage: obj.signature() and returns: self