text: import numbers
  
  import numpy as np
  
  
  def check_array(sig, dtype='float64', accept_none=False):
      if accept_none and sig is None:
          return None
      elif not accept_none and sig is None:
          raise ValueError("This array should not be None.")
  
      array = np.atleast_2d(np.asarray(sig, dtype=dtype))
      if array.ndim > 2:
          raise ValueError("This array should not be more than 2 dimensional.")
      return array
  
  
  def check_consistent_shape(*args):
      for array in args:
          if array is not None and array.shape != args[0].shape:
              raise ValueError('Incompatible shapes. Got '
                               '(%s != %s)' % (array.shape, args[0].shape))
  
  
  def check_random_state(seed):
      """Turn seed into a np.random.RandomState instance
  
      If seed is None, return the RandomState singleton used by np.random.
      If seed is an int, return a new RandomState instance seeded with seed.
      If seed is already a RandomState instance, return it.
      Otherwise raise ValueError.
      """
      if seed is None or seed is np.random:
          return np.random.mtrand._rand
      if isinstance(seed, (numbers.Integral, np.integer)):
          return np.random.RandomState(seed)
      if isinstance(seed, np.random.RandomState):
          return seed
      raise ValueError('%r cannot be used to seed a numpy.random.RandomState'
                       ' instance' % seed)
  
  
  class NotFittedError(ValueError, AttributeError):
      """Exception class to raise if estimator is used before fitting."""
  
  
  def check_is_fitted(estimator, attributes, msg=None, all_or_any=all):
      """Perform is_fitted validation for estimator.
  
      Checks if the estimator is fitted by verifying the presence of
      "all_or_any" of the passed attributes and raises a NotFittedError with the
      given message.
  
      Parameters
      ----------
      estimator : estimator instance.
          estimator instance for which the check is performed.
  
      attributes : attribute name(s) given as string or a list/tuple of strings
          Eg. : ["coef_", "estimator_", ...], "coef_"
  
      msg : string
          The default error message is, "This %(name)s instance is not fitted
          yet. Call 'fit' with appropriate arguments before using this method."
  
          For custom messages if "%(name)s" is present in the message string,
          it is substituted for the estimator name.
  
          Eg. : "Estimator, %(name)s, must be fitted before sparsifying".
  
      all_or_any : callable, {all, any}, default all
          Specify whether all or any of the given attributes must exist.
      """
      if msg is None:
          msg = ("This %(name)s instance is not fitted yet. Call 'fit' with "
                 "appropriate arguments before using this method.")
  
      if not hasattr(estimator, 'fit'):
          raise TypeError("%s is not an estimator instance." % (estimator))
  
      if not isinstance(attributes, (list, tuple)):
          attributes = [attributes]
  
      if not all_or_any([hasattr(estimator, attr) for attr in attributes]):
          raise NotFittedError(msg % {'name': type(estimator).__name__})
  