code: def is_sequence(obj):
      
      seq = (not hasattr(obj, "strip") and
             hasattr(obj, "__getitem__") or
             hasattr(obj, "__iter__"))
  
      # check to make sure it is not a set, string, or dictionary
      seq = seq and all(not isinstance(obj, i) for i in (dict,
                                                         set,
                                                         basestring))
  
      # PointCloud objects can look like an array but are not
      seq = seq and type(obj).__name__ not in ['PointCloud']
  
      # numpy sometimes returns objects that are single float64 values
      # but sure look like sequences, so we check the shape
      if hasattr(obj, 'shape'):
          seq = seq and obj.shape != ()
  
      return seq
docs: Check if an object is a sequence or not.
  
      Parameters
      -------------
      obj : object
        Any object type to be checked
  
      Returns
      -------------
      is_sequence : bool
          True if object is sequence