<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _find_countour_yaml(start, checked, names=None):
 """Traverse the directory tree identified by start until a directory already in checked is encountered or the path of countour.yaml is found. Checked is present both to make the loop termination easy to reason about and so the same directories do not get rechecked Args: start: the path to start looking in and work upward from checked: the set of already checked directories Returns: the path of the countour.yaml file or None if it is not found """

    extensions = []

    if names:
        for name in names:
            if not os.path.splitext(name)[1]:
                extensions.append(name + ".yaml")
                extensions.append(name + ".yml")

    yaml_names = (names or []) + CONTOUR_YAML_NAMES + extensions
    directory = start

    while directory not in checked:
        checked.add(directory)

        for fs_yaml_name in yaml_names:
            yaml_path = os.path.join(directory, fs_yaml_name)

            if os.path.exists(yaml_path):
                return yaml_path

        directory = os.path.dirname(directory)

    return