def IsDataVisible(self, path):
    """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.
    """
    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'])
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.