code: def is_attr_selected(attr_name,     # type: str
                       include=None,  # type: Union[str, Tuple[str]]
                       exclude=None   # type: Union[str, Tuple[str]]
                       ):
      
  
      if include is not None and exclude is not None:
          raise ValueError('Only one of \'include\' or \'exclude\' argument should be provided.')
  
      # win time by not doing this
      # check_var(include, var_name='include', var_types=[str, tuple], enforce_not_none=False)
      # check_var(exclude, var_name='exclude', var_types=[str, tuple], enforce_not_none=False)
  
      if attr_name is 'self':
          return False
      if exclude and attr_name in exclude:
          return False
      if not include or attr_name in include:
          return True
      else:
          return False
docs: decide whether an action has to be performed on the attribute or not, based on its name