<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def wait_until_element_attribute_is(self, element, attribute, value, timeout=None):
 """Search element and wait until the requested attribute contains the expected value :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found :param attribute: attribute belonging to the element :param value: expected value for the attribute of the element :param timeout: max time to wait :returns: the web element if the element's attribute contains the expected value :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement :raises TimeoutException: If the element's attribute does not contain the expected value after the timeout """

        return self._wait_until(self._expected_condition_value_in_element_attribute, (element, attribute, value), timeout)