class_docstr: Class wrapping sampling routines for its usage via ArviZ.
  
  Using a common class, all inference backends can be supported in ArviZ. Hence, statistical
  functions requiring refitting like Leave Future Out or Simulation Based Calibration can be
  performed from ArviZ.
  
  For usage examples see user guide pages on :ref:`wrapper_guide`.See other
  SamplingWrapper classes at :ref:`wrappers api section <wrappers_api>`.
  
  Parameters
  ----------
  model
      The model object used for sampling.
  idata_orig : InferenceData, optional
      Original InferenceData object.
  log_lik_fun : callable, optional
      For simple cases where the pointwise log likelihood is a Python function, this
      function will be used to calculate the log likelihood. Otherwise,
      ``point_log_likelihood`` method must be implemented. It's callback must be
      ``log_lik_fun(*args, **log_lik_kwargs)`` and will be called using
      :func:`wrap_xarray_ufunc` or :func:`xarray:xarray.apply_ufunc` depending
      on the value of `is_ufunc`.
  
      For more details on ``args`` or ``log_lik_kwargs`` see the notes and
      parameters ``posterior_vars`` and ``log_lik_kwargs``.
  is_ufunc : bool, default True
      If True, call ``log_lik_fun`` using :func:`xarray:xarray.apply_ufunc` otherwise
      use :func:`wrap_xarray_ufunc`.
  posterior_vars : list of str, optional
      List of variable names to unpack as ``args`` for ``log_lik_fun``. Each string in
      the list will be used to retrieve a DataArray from the Dataset in the posterior
      group and passed to ``log_lik_fun``.
  sample_kwargs : dict, optional
      Sampling kwargs are stored as class attributes for their usage in the ``sample``
      method.
  idata_kwargs : dict, optional
      kwargs are stored as class attributes to be used in the ``get_inference_data`` method.
  log_lik_kwargs : dict, optional
      Keyword arguments passed to ``log_lik_fun``.
  apply_ufunc_kwargs : dict, optional
      Passed to :func:`xarray:xarray.apply_ufunc` or :func:`wrap_xarray_ufunc`.
  
  
  Warnings
  --------
  Sampling wrappers are an experimental feature in a very early stage. Please use them
  with caution.
  
  Notes
  -----
  Example of ``log_like_fun`` usage.
docstr: Check that all methods listed are implemented.
  
  Not all functions that require refitting need to have all the methods implemented in
  order to work properly. This function shoulg be used before using the SamplingWrapper and
  its subclasses to get informative error messages.
  
  Parameters
  ----------
  methods: list
      Check all elements in methods are implemented.
  
  Returns
  -------
      List with all non implemented methods
code: def check_implemented_methods(self, methods):
      """Check that all methods listed are implemented.
  
      Not all functions that require refitting need to have all the methods implemented in
      order to work properly. This function shoulg be used before using the SamplingWrapper and
      its subclasses to get informative error messages.
  
      Parameters
      ----------
      methods: list
          Check all elements in methods are implemented.
  
      Returns
      -------
          List with all non implemented methods
      """
      supported_methods_1arg = (
          "sel_observations",
          "sample",
          "get_inference_data",
      )
      supported_methods_2args = ("log_likelihood__i",)
      supported_methods = [
          *supported_methods_1arg,
          *supported_methods_2args,
      ]
      bad_methods = [
          method
          for method in methods
          if method not in supported_methods
      ]
      if bad_methods:
          raise ValueError(
              f"Not all method(s) in {bad_methods} supported. "
              f"Supported methods in SamplingWrapper subclasses are:{supported_methods}"
          )
  
      not_implemented = []
      for method in methods:
          if method in supported_methods_1arg:
              if self._check_method_is_implemented(method, 1):
                  continue
              not_implemented.append(method)
          elif method in supported_methods_2args:
              if self._check_method_is_implemented(method, 1, 1):
                  continue
              not_implemented.append(method)
      return not_implemented
  
file_path: arviz/arviz/wrappers/base.py
imports: from xarray import apply_ufunc
  from ..stats import wrap_xarray_ufunc
label_desc: Use image node_id 7 for calling the SamplingWrapper obj's underlying member method code with example usage: obj.check_implemented_methods(methods) and returns: not_implemented