class_docstr: The IssueFinder class is responsible for managing the process of identifying
  issues in the dataset by handling the creation and execution of relevant
  IssueManagers. It serves as a coordinator or helper class for the Datalab class
  to encapsulate the specific behavior of the issue finding process.
  
  At a high level, the IssueFinder is responsible for:
  
  - Determining which types of issues to look for.
  - Instantiating the appropriate IssueManagers using a factory.
  - Running the IssueManagers' `find_issues` methods.
  - Collecting the results into a DataIssues instance.
  
  Parameters
  ----------
  datalab : Datalab
      The Datalab instance associated with this IssueFinder.
  
  task : str
      The type of machine learning task that the dataset is used for.
  
  verbosity : int
      Controls the verbosity of the output during the issue finding process.
  
  Note
  ----
  This class is not intended to be used directly. Instead, use the
  `Datalab.find_issues` method which internally utilizes an IssueFinder instance.
class_docstr_tok: ["The","IssueFinder","class","is","responsible","for","managing","the","process","of","identifying","issues","in","the","dataset","by","handling","the","creation","and","execution","of","relevant","IssueManagers",".","It","serves","as","a","coordinator","or","helper","class","for","the","Datalab","class","to","encapsulate","the","specific","behavior","of","the","issue","finding","process",".","At","a","high","level",",","the","IssueFinder","is","responsible","for",":","-","Determining","which","types","of","issues","to","look","for",".","-","Instantiating","the","appropriate","IssueManagers","using","a","factory",".","-","Running","the","IssueManagers","'","`","find_issues","`","methods",".","-","Collecting","the","results","into","a","DataIssues","instance",".","Parameters","--","--","--","--","--","datalab",":","Datalab","The","Datalab","instance","associated","with","this","IssueFinder",".","task",":","str","The","type","of","machine","learning","task","that","the","dataset","is","used","for",".","verbosity",":","int","Controls","the","verbosity","of","the","output","during","the","issue","finding","process",".","Note","--","--","This","class","is","not","intended","to","be","used","directly",".","Instead",",","use","the","`","Datalab.find_issues","`","method","which","internally","utilizes","an","IssueFinder","instance","."]
docstr: Returns a dictionary of issue types that can be used in :py:meth:`Datalab.find_issues
  <cleanlab.datalab.datalab.Datalab.find_issues>` method.
docstr_tok: ["Returns","a","dictionary","of","issue","types","that","can","be","used","in",":","py",":","meth",":","`","Datalab.find_issues","<","cleanlab.datalab.datalab.Datalab.find_issues",">","`","method","."]
code: def get_available_issue_types(self, **kwargs):
      """Returns a dictionary of issue types that can be used in :py:meth:`Datalab.find_issues
      <cleanlab.datalab.datalab.Datalab.find_issues>` method."""
  
      pred_probs = kwargs.get("pred_probs", None)
      features = kwargs.get("features", None)
      knn_graph = kwargs.get("knn_graph", None)
      issue_types = kwargs.get("issue_types", None)
  
      model_output = None
      if pred_probs is not None:
          if self.task == "regression":
              model_output = RegressionPredictions(pred_probs)
          elif self.task == "classification":
              model_output = MultiClassPredProbs(pred_probs)
          else:
              raise ValueError(f"Unknown task type '{self.task}'")
  
      if model_output is not None:
          # A basic trick to assign the model output to the correct argument
          kwargs.update({model_output.argument: model_output.collect()})
  
      # Determine which parameters are required for each issue type
      strategy_for_resolving_required_args = (
          _select_strategy_for_resolving_required_args(self.task)
      )
      required_args_per_issue_type = (
          strategy_for_resolving_required_args(**kwargs)
      )
  
      issue_types_copy = self._set_issue_types(
          issue_types, required_args_per_issue_type
      )
      if issue_types is None:
          # Only run default issue types if no issue types are specified
          issue_types_copy = {
              issue: issue_types_copy[issue]
              for issue in list_default_issue_types(self.task)
              if issue in issue_types_copy
          }
      drop_label_check = (
          "label" in issue_types_copy
          and not self.datalab.has_labels
          and self.task != "regression"
      )
      if drop_label_check:
          warnings.warn(
              "No labels were provided. "
              "The 'label' issue type will not be run."
          )
          issue_types_copy.pop("label")
  
      outlier_check_needs_features = (
          "outlier" in issue_types_copy and not self.datalab.has_labels
      )
      if outlier_check_needs_features:
          no_features = features is None
          no_knn_graph = knn_graph is None
          pred_probs_given = (
              issue_types_copy["outlier"].get("pred_probs", None)
              is not None
          )
  
          only_pred_probs_given = (
              pred_probs_given and no_features and no_knn_graph
          )
          if only_pred_probs_given:
              warnings.warn(
                  "No labels were provided. "
                  "The 'outlier' issue type will not be run."
              )
              issue_types_copy.pop("outlier")
  
      return issue_types_copy
  
file_path: cleanlab/cleanlab/datalab/internal/issue_finder.py
imports: from __future__ import annotations
  import warnings
  from typing import TYPE_CHECKING, Any, Dict, Optional
  import numpy
  from scipy.sparse import csr_matrix
  from cleanlab.datalab.internal.issue_manager_factory import _IssueManagerFactory, list_default_issue_types
  from cleanlab.datalab.internal.model_outputs import MultiClassPredProbs, RegressionPredictions
label_desc: Use image node_id 6 for calling the IssueFinder obj's underlying member method code with example usage: obj.get_available_issue_types() and returns: issue_types_copy