

@staticmethod
def map(item):
    if item.deleted:
        return
    exponent = (2.0 / 3)
    total_rating = 0
    for ratings_value in item.ratings:
        total_rating += (item.ratings[ratings_value] * int(ratings_value))
    if (not sum(item.ratings.itervalues())):
        return
    average_rating = (total_rating / sum(item.ratings.itervalues()))
    value_per_user = (average_rating - 2)
    if (value_per_user <= 0):
        return
    statistics = stats_jobs_continuous.StatisticsAggregator.get_statistics(item.id, stats_jobs_continuous.VERSION_ALL)
    answer_count = 0
    for state_name in statistics['state_hit_counts']:
        state_stats = statistics['state_hit_counts'][state_name]
        first_entry_count = state_stats.get('first_entry_count', 0)
        no_answer_count = state_stats.get('no_answer_count', 0)
        answer_count += (first_entry_count - no_answer_count)
    reach = (answer_count ** exponent)
    exploration_summary = exp_services.get_exploration_summary_by_id(item.id)
    contributors = exploration_summary.contributors_summary
    total_commits = sum(contributors.itervalues())
    if (total_commits == 0):
        return
    for contrib_id in no_answer_count:
        contribution = (contributors[contrib_id] / float(total_commits))
        exploration_impact_score = ((value_per_user * reach) * contribution)
        (yield (contrib_id, exploration_impact_score))

dataset/ETHPy150Open oppia/oppia/core/domain/user_jobs_continuous.py UserImpactMRJobManager.map/VarMisuse@241/359 `contributors`->`no_answer_count`