code: def is_iterable(obj,
                  forbid_literals = (str, bytes),
                  minimum_length = None,
                  maximum_length = None,
                  **kwargs):
      
      if obj is None:
          return False
  
      if obj in forbid_literals:
          return False
  
      try:
          obj = validators.iterable(obj,
                                    allow_empty = True,
                                    forbid_literals = forbid_literals,
                                    minimum_length = minimum_length,
                                    maximum_length = maximum_length,
                                    **kwargs)
      except SyntaxError as error:
          raise error
      except Exception:
          return False
  
      return True
docs: Indicate whether ``obj`` is iterable.
  
      :param forbid_literals: A collection of literals that will be considered invalid
        even if they are (actually) iterable. Defaults to a :class:`tuple <python:tuple>`
        containing :class:`str <python:str>` and :class:`bytes <python:bytes>`.
      :type forbid_literals: iterable
  
      :param minimum_length: If supplied, indicates the minimum number of members
        needed to be valid.
      :type minimum_length: :class:`int <python:int>`
  
      :param maximum_length: If supplied, indicates the minimum number of members
        needed to be valid.
      :type maximum_length: :class:`int <python:int>`
  
      :returns: ``True`` if ``obj`` is a valid iterable, ``False`` if not.
      :rtype: :class:`bool <python:bool>`
  
      :raises SyntaxError: if ``kwargs`` contains duplicate keyword parameters or duplicates
        keyword parameters passed to the underlying validator