예제 #1
0
def pull_paths(paths, auth=config.auth_, ignore_cache=False):
    mean_stars_per_issue = repo_util.get_mean_stars_per_issue()
    repo_dicts = []
    min_score, max_score = None, None
    stars_per_issue_list = []
    for path in paths:
        try:
            repo_dict = pull_repo(path, mean_stars_per_issue, auth=auth, ignore_cache=ignore_cache)
            if min_score is None or repo_dict["score"] < min_score:
                min_score = repo_dict["score"]
            if max_score is None or repo_dict["score"] > max_score:
                max_score = repo_dict["score"]
            stars_per_issue = (
                float(repo_dict["stargazers_count"] / repo_dict["issue_count"])
                if repo_dict["issue_count"] != 0
                else repo_dict["stargazers_count"]
            )
            stars_per_issue_list.append(stars_per_issue)
            if not repo_dict:
                print "null repo:", path, repo_dict
            repo_dicts.append(repo_dict)
        except Exception as e:
            print "error reading:", path
            print (u"exception: {}; {}".format(type(e).__name__, e.message)).encode("utf8")
            traceback.print_exc()

            continue

    mean_stars_per_issue = (
        sum(stars_per_issue_list) / float(len(stars_per_issue_list))
        if stars_per_issue_list
        else config.default_stars_per_issue
    )
    requests.patch(
        "https://repo-quality.firebaseio.com/.json?auth=" + secrets.firebase_token,
        data=json.dumps({"mean_stars_per_issue": mean_stars_per_issue, "min_score": min_score, "max_score": max_score}),
    )

    for repo_dict in sorted(repo_dicts, key=lambda d: -d["score"]):
        print "        path:", repo_dict["path"]
        print "       stars:", repo_dict["stargazers_count"]
        print "      issues:", repo_dict["open_issues_count"]
        print "  has_issues:", repo_dict["has_issues"]
        print "         age:", repo_dict["age"]
        print "stars/issues:", repo_dict["stargazers_count"] / (repo_dict["open_issues_count"] or 1)
        print "   stars/age:", repo_dict["stargazers_count"] / (repo_dict["age"].days or 1)
        print "       score:", repo_dict["score"]
        print

    printed_suck_line = False
    for repo_dict in sorted(repo_dicts, key=lambda d: -d["score"]):
        if repo_dict["score"] < 180 and not printed_suck_line:
            printed_suck_line = True
            print "-------  suck line -------"
        print repo_dict["path"]
        print " ", repo_dict["score"]
예제 #2
0
def pull_paths(paths, auth=config.auth_, ignore_cache=False):
  mean_stars_per_issue = repo_util.get_mean_stars_per_issue()
  repo_dicts = []
  min_score, max_score = None, None
  stars_per_issue_list = []
  for path in paths:
    try:
      repo_dict = pull_repo(
        path, mean_stars_per_issue, auth=auth, ignore_cache=ignore_cache)
      if min_score is None or repo_dict['score'] < min_score:
        min_score = repo_dict['score']
      if max_score is None or repo_dict['score'] > max_score:
        max_score = repo_dict['score']
      stars_per_issue = (
        float(repo_dict['stargazers_count'] / repo_dict['issue_count'])
        if repo_dict['issue_count'] != 0 else repo_dict['stargazers_count'])
      stars_per_issue_list.append(stars_per_issue)
      if not repo_dict:
        print 'null repo:', path, repo_dict
      repo_dicts.append(repo_dict)
    except Exception as e:
      print 'error reading:', path
      print (u'exception: {}; {}'.format(type(e).__name__, e.message)).encode('utf8')
      traceback.print_exc()

      continue

  mean_stars_per_issue = (
    sum(stars_per_issue_list) / float(len(stars_per_issue_list))
    if stars_per_issue_list else config.default_stars_per_issue)
  requests.patch(
    'https://repo-quality.firebaseio.com/.json?auth=' + secrets.firebase_token,
    data=json.dumps({
      'mean_stars_per_issue': mean_stars_per_issue,
      'min_score': min_score, 'max_score': max_score
    }))

  for repo_dict in sorted(repo_dicts, key=lambda d: -d['score']):
    print '        path:', repo_dict['path']
    print '       stars:', repo_dict['stargazers_count']
    print '      issues:', repo_dict['open_issues_count']
    print '  has_issues:', repo_dict['has_issues']
    print '         age:', repo_dict['age']
    print 'stars/issues:', repo_dict['stargazers_count'] / (repo_dict['open_issues_count'] or 1)
    print '   stars/age:', repo_dict['stargazers_count'] / (repo_dict['age'].days or 1)
    print '       score:', repo_dict['score']
    print

  printed_suck_line = False
  for repo_dict in sorted(repo_dicts, key=lambda d: -d['score']):
    if repo_dict['score'] < 180 and not printed_suck_line:
      printed_suck_line = True
      print '-------  suck line -------'
    print repo_dict['path']
    print ' ', repo_dict['score']
예제 #3
0
import flask
from flask import request
from werkzeug import exceptions

import github_quality
import config
import repo_util

app = flask.Flask(__name__)

app.jinja_env.variable_start_string = '((('
app.jinja_env.variable_end_string = ')))'
app.comment_start_string = '((#'
app.comment_end_string = '#))'

mean_stars_per_issue = repo_util.get_mean_stars_per_issue()

repo_lists = {
    'connect_middleware': set([
        'expressjs/body-parser',
        'Raynos/body',
        'cojs/co-body',
        'stream-utils/raw-body',
        'expressjs/compression',
        'expressjs/timeout',
        'expressjs/cookie-parser',
        'expressjs/cookie-session',
        'expressjs/csurf',
        'expressjs/errorhandler',
        'expressjs/session',
        'expressjs/method-override',
예제 #4
0
import flask
from flask import request
from werkzeug import exceptions

import github_quality
import config
import repo_util

app = flask.Flask(__name__)

app.jinja_env.variable_start_string = '((('
app.jinja_env.variable_end_string = ')))'
app.comment_start_string = '((#'
app.comment_end_string = '#))'

mean_stars_per_issue = repo_util.get_mean_stars_per_issue()

repo_lists = {
    'connect_middleware':
    set([
        'expressjs/body-parser',
        'Raynos/body',
        'cojs/co-body',
        'stream-utils/raw-body',
        'expressjs/compression',
        'expressjs/timeout',
        'expressjs/cookie-parser',
        'expressjs/cookie-session',
        'expressjs/csurf',
        'expressjs/errorhandler',
        'expressjs/session',