class_docstr: The ``ExternalRegistry`` is a ``FlashRegistry`` that can point to an external provider via a getter function.
  
  Args:
      getter: A function whose first argument is a key that can optionally take additional args and kwargs.
      providers: The provider(/s) of entries in this registry.
class_docstr_tok: ["The","``","ExternalRegistry","``","is","a","``","FlashRegistry","``","that","can","point","to","an","external","provider","via","a","getter","function",".","Args",":","getter",":","A","function","whose","first","argument","is","a","key","that","can","optionally","take","additional","args","and","kwargs",".","providers",":","The","provider","(","\/s",")","of","entries","in","this","registry","."]
docstr: Since we don't know the available keys, just give a generic message.
docstr_tok: ["Since","we","do","n't","know","the","available","keys",",","just","give","a","generic","message","."]
code: def available_keys(self) -> List[str]:
      """Since we don't know the available keys, just give a generic message."""
      if self.providers is not None:
          return [
              f"Anything available from: {', '.join(str(provider) for provider in self.providers)}"
          ]
      return []
  
imports: import functools
  import inspect
  import itertools
  from typing import Any, Callable, Dict, List, Optional, Union
  from pytorch_lightning.utilities import rank_zero_info
  from flash.core.utilities.providers import Provider
label_desc: Use image node_id 4 for calling the ExternalRegistry obj's underlying member method code with example usage: obj.available_keys() and returns: list, list