def is_attribute_visible(self, key):
if key in self:<EOL><INDENT>attribute_status = getattr(self, key)<EOL>if isinstance(attribute_status, bool) and attribute_status is True:<EOL><INDENT>return True<EOL><DEDENT>elif isinstance(attribute_status, self.__class__) and attribute_status.are_any_attributes_visible():<EOL><INDENT>return True<EOL><DEDENT><DEDENT>return False<EOL>
Returns True if an attribute is visible
If attribute is an instance of AttributeFilter, it returns True if all attributes
of the sub filter are visible.

:param key: name of attribute to check
:type key: str
:return: whether attribute is visible
:rtype: bool