code: def IsDataVisible(self, path):
      
      if path is None:
        return (False, RESPONSES['UNKNOWN_TYPE'])
  
      if _Matches(path, self.blacklist_patterns):
        return (False, RESPONSES['BLACKLISTED'])
  
      if not _Matches(path, self.whitelist_patterns):
        return (False, RESPONSES['NOT_WHITELISTED'])
  
      return (True, RESPONSES['VISIBLE'])
docs: Returns a tuple (visible, reason) stating if the data should be visible.
  
      Args:
        path: A dot separated path that represents a package, class, method or
        variable.  The format is identical to pythons "import" statement.
  
      Returns:
        (visible, reason) where visible is a boolean that is True if the data
        should be visible.  Reason is a string reason that can be displayed
        to the user and indicates why data is visible or not visible.