class_docstr: :class:`KernelProvisionerFactory` is responsible for creating provisioner instances.
  
  A singleton instance, `KernelProvisionerFactory` is also used by the :class:`KernelSpecManager`
  to validate `kernel_provisioner` references found in kernel specifications to confirm their
  availability (in cases where the kernel specification references a kernel provisioner that has
  not been installed into the current Python environment).
  
  It's ``default_provisioner_name`` attribute can be used to specify the default provisioner
  to use when a kernel_spec is found to not reference a provisioner.  It's value defaults to
  `"local-provisioner"` which identifies the local provisioner implemented by
  :class:`LocalProvisioner`.
class_docstr_tok: [":","class",":","`","KernelProvisionerFactory","`","is","responsible","for","creating","provisioner","instances",".","A","singleton","instance",",","`","KernelProvisionerFactory","`","is","also","used","by","the",":","class",":","`","KernelSpecManager","`","to","validate","`","kernel_provisioner","`","references","found","in","kernel","specifications","to","confirm","their","availability","(","in","cases","where","the","kernel","specification","references","a","kernel","provisioner","that","has","not","been","installed","into","the","current","Python","environment",")",".","It","'s","``","default_provisioner_name","``","attribute","can","be","used","to","specify","the","default","provisioner","to","use","when","a","kernel_spec","is","found","to","not","reference","a","provisioner",".","It","'s","value","defaults","to","`","``","local-provisioner","''","`","which","identifies","the","local","provisioner","implemented","by",":","class",":","`","LocalProvisioner","`","."]
docstr: Reads the associated ``kernel_spec`` to determine the provisioner and returns whether it
  exists as an entry_point (True) or not (False).  If the referenced provisioner is not
  in the current cache or cannot be loaded via entry_points, a warning message is issued
  indicating it is not available.
docstr_tok: ["Reads","the","associated","``","kernel_spec","``","to","determine","the","provisioner","and","returns","whether","it","exists","as","an","entry_point","(","True",")","or","not","(","False",")",".","If","the","referenced","provisioner","is","not","in","the","current","cache","or","can","not","be","loaded","via","entry_points",",","a","warning","message","is","issued","indicating","it","is","not","available","."]
code: def is_provisioner_available(self, kernel_spec: Any) -> bool:
      """
      Reads the associated ``kernel_spec`` to determine the provisioner and returns whether it
      exists as an entry_point (True) or not (False).  If the referenced provisioner is not
      in the current cache or cannot be loaded via entry_points, a warning message is issued
      indicating it is not available.
      """
      is_available: bool = True
      provisioner_cfg = self._get_provisioner_config(kernel_spec)
      provisioner_name = str(provisioner_cfg.get("provisioner_name"))
      if not self._check_availability(provisioner_name):
          is_available = False
          self.log.warning(
              f"Kernel '{kernel_spec.display_name}' is referencing a kernel "
              f"provisioner ('{provisioner_name}') that is not available.  "
              f"Ensure the appropriate package has been installed and retry."
          )
      return is_available
  
file_path: catboost/contrib/python/jupyter-client/py3/jupyter_client/provisioning/factory.py
imports: import glob
  import sys
  from os import getenv, path
  from typing import Any, Dict, List
  from traitlets.config import SingletonConfigurable, Unicode, default
  from .provisioner_base import KernelProvisionerBase
label_desc: Use image node_id 3 for calling the KernelProvisionerFactory obj's underlying member method code with example usage: obj.is_provisioner_available(kernel_spec) and returns: is_available