@classmethod
def _annotate_first_of_milestones(self, feature_list, version=None):
    try:
        omaha_data = util.get_omaha_data()
        win_versions = omaha_data[0]['versions']
        canary_versions = [x for x in win_versions if (x.get('channel') and x.get('channel').startswith('canary'))]
        LATEST_VERSION = int(canary_versions[0].get('version').split('.')[0])
        milestones = range(1, (LATEST_VERSION + 1))
        milestones.reverse()
        versions = [IMPLEMENTATION_STATUS[NO_ACTIVE_DEV], IMPLEMENTATION_STATUS[PROPOSED], IMPLEMENTATION_STATUS[IN_DEVELOPMENT], IMPLEMENTATION_STATUS[DEPRECATED]]
        versions.extend(milestones)
        versions.append(IMPLEMENTATION_STATUS[NO_LONGER_PURSUING])
        first_of_milestone_func = Feature._first_of_milestone
        if (version == 2):
            first_of_milestone_func = Feature._first_of_milestone_v2
        last_good_idx = 0
        for (i, ver) in enumerate(versions):
            idx = first_of_milestone_func(feature_list, ver, start=last_good_idx)
            if (idx != (- 1)):
                feature_list[idx]['first_of_milestone'] = True
                last_good_idx = idx
    except Exception as e:
        logging.error(e)
@classmethod
def _annotate_first_of_milestones(self, feature_list, version=None):
    try:
        omaha_data = util.get_omaha_data()
        win_versions = omaha_data[0]['versions']
        canary_versions = [x for x in win_versions if (x.get('channel') and x.get('channel').startswith('canary'))]
        LATEST_VERSION = int(canary_versions[0].get('version').split('.')[0])
        milestones = range(1, (LATEST_VERSION + 1))
        milestones.reverse()
        versions = [IMPLEMENTATION_STATUS[NO_ACTIVE_DEV], IMPLEMENTATION_STATUS[PROPOSED], IMPLEMENTATION_STATUS[IN_DEVELOPMENT], IMPLEMENTATION_STATUS[DEPRECATED]]
        versions.extend(milestones)
        versions.append(IMPLEMENTATION_STATUS[NO_LONGER_PURSUING])
        first_of_milestone_func = Feature._first_of_milestone
        if (version == 2):
            first_of_milestone_func = Feature._first_of_milestone_v2
        last_good_idx = 0
        for (i, ver) in enumerate(versions):
            idx = first_of_milestone_func(feature_list, ver, start=last_good_idx)
            if (idx != (- 1)):
                feature_list[idx]['first_of_milestone'] = True
                last_good_idx = idx
    except Exception as e:
        logging.error(e)