Exemplo n.º 1
0
def status_detect(num_days, num_segments):
    repos = Repo.query.filter().filter(Repo.status == 'unknown')
    for repo in repos:
        result = db.session.query(RepoStars.day, RepoStars.stars)\
            .filter(RepoStars.repo_id == repo.id)\
            .order_by(expression.asc(RepoStars.day))\
            .all()

        val = 0 if not result else result_mean(
            result_split(list(result_normalize(result, num_days)),
                         num_segments))

        repo.status = 'hopeless' if val < 1 else 'promising'

        db.session.add(RepoMean(repo=repo, value=val))
        db.session.commit()
Exemplo n.º 2
0
def status_detect(num_days, num_segments):
    repos = Repo.query.filter(Repo.status == 'unknown')
    for repo in repos:
        result = db.session.query(RepoStars.day, RepoStars.stars)\
            .filter(RepoStars.repo_id == repo.id)\
            .order_by(expression.asc(RepoStars.day))\
            .limit(num_days)\
            .all()

        val = 0 if not result else repo_mean(result, num_days, num_segments,
                                             last_known_mean(repo.id))

        repo.status = 'hopeless' if val < 1 else 'promising'

        db.session.merge(
            RepoMean(repo=repo, value=val, created_at=datetime.now()))
        db.session.commit()
Exemplo n.º 3
0
def status_detect(num_days, num_segments):
    repos = Repo.query.filter(Repo.status == 'unknown')
    for repo in repos:
        result = db.session.query(RepoStars.day, RepoStars.stars)\
            .filter(RepoStars.repo_id == repo.id)\
            .order_by(expression.asc(RepoStars.day))\
            .limit(num_days)\
            .all()

        val = 0 if not result else repo_mean(result, num_days, num_segments,
                                             last_known_mean(repo.id))

        status_old = repo.status
        repo.status = 'hopeless' if val < 1 else 'promising'

        log.info(
            'Repository status of {0}({1}) has been changed to {2} (was: {3})'.
            format(repo.id, repo.full_name, repo.status, status_old))

        db.session.merge(
            RepoMean(repo=repo,
                     value=val,
                     created_at=datetime.today().strftime('%Y-%m-%d')))
        db.session.commit()
Exemplo n.º 4
0
 def test_find_last_known_mean(self):
     self.assertEqual(last_known_mean(1, 7), 7.0)
     db.session.add(
         RepoMean(repo_id=1, created_at=datetime.now(), value=77.0))
     db.session.commit()
     self.assertEqual(last_known_mean(1, 999), 77.0)
Exemplo n.º 5
0
    job = Job(service, query)
    job.execute()

    cnt = 0
    lst = {}
    for row in results_of(job):
        key = '{} {}'.format(row[1], row[3])
        lst[key] = lst.get(key, ()) + ((int(row[2]), int(row[0])), )

        db.session.merge(
            RepoStars(repo_id=result.id, stars=row[0], year=row[1],
                      day=row[2]))
        cnt += 1

    db.session.query(RepoMean).filter(RepoMean.repo_id == result.id).delete()
    db.session.commit()

    for key in lst.keys():
        avg = repo_mean(lst[key], 28, 4, last_known_mean(result.id))
        db.session.add(
            RepoMean(repo_id=result.id,
                     created_at=datetime.strptime(key, '%Y %m'),
                     value=avg))
        db.session.commit()

    db.session.query(Repo).filter(Repo.id == result.id)\
        .update({Repo.status: 'unknown', Repo.last_reset_at: now})
    db.session.commit()

    app.logger.info('Repository %d has %d days', result.id, cnt)