code: def num_samples(x, is_nested=False):
      
      if hasattr(x, 'fit'):
          # Don't get num_samples from an ensembles length!
          raise TypeError('Expected sequence or array-like, got '
                          'estimator %s' % x)
  
      if is_nested:
          return sum(num_samples(xx, is_nested=False) for xx in x)
  
      if not hasattr(x, '__len__') and not hasattr(x, 'shape'):
          if hasattr(x, '__array__'):
              x = np.asarray(x)
          else:
              raise TypeError("Expected sequence or array-like, got %s" %
                              type(x))
      if hasattr(x, 'shape'):
          if len(x.shape) == 0:
              raise TypeError("Singleton array %r cannot be considered"
                              " a valid collection." % x)
          return x.shape[0]
      else:
          return len(x)
docs: Return number of samples in array-like x.