コード例 #1
0
 def test_blocking_dependencies_locators_fails(self):
     # Testing the work around for //bitbucket.org/pypa/distlib/issue/59/ .
     with mock.patch.object(distlib.locators, 'locate') as locate_mock:
         py3 = {'py3_project': ''}
         breaking_project = 'test_project'
         locate_mock.side_effect = AttributeError()
         got = dependencies.blocking_dependencies([breaking_project], py3)
コード例 #2
0
def run_check(pk):
    """
    The central job to run the check. Called after a check has been
    created.
    """
    check = Check.objects.get(pk=pk)
    check.started_at = now()

    all_py3_projects = get_or_fetch_all_py3_projects()
    blockers = blocking_dependencies(check.projects, all_py3_projects)
    blockers_mapping = {}
    for blocker in sorted(blockers, key=lambda x: tuple(reversed(x))):
        blockers_mapping[blocker[0]] = blocker[1:]
    check.blockers = blockers_mapping

    flattened_blockers = set()
    for blocker_reasons in blockers:
        for blocker in blocker_reasons:
            flattened_blockers.add(blocker)
    check.unblocked = len(flattened_blockers)

    check.finished_at = now()
    check.save()
    Check.objects.filter(pk=check.pk).update(runs=F('runs') + 1)
    return blockers
コード例 #3
0
ファイル: tasks.py プロジェクト: RaviTezu/caniusepython3.com
def run_check(pk):
    """
    The central job to run the check. Called after a check has been
    created.
    """
    check = Check.objects.get(pk=pk)
    check.started_at = now()

    all_py3_projects = get_or_fetch_all_py3_projects()
    blockers = blocking_dependencies(check.projects, all_py3_projects)
    blockers_mapping = {}
    for blocker in sorted(blockers, key=lambda x: tuple(reversed(x))):
        blockers_mapping[blocker[0]] = blocker[1:]
    check.blockers = blockers_mapping

    flattened_blockers = set()
    for blocker_reasons in blockers:
        for blocker in blocker_reasons:
            flattened_blockers.add(blocker)
    check.unblocked = len(flattened_blockers)

    check.finished_at = now()
    check.save()
    Check.objects.filter(pk=check.pk).update(runs=F('runs') + 1)
    return blockers
コード例 #4
0
ファイル: tasks.py プロジェクト: acdha/caniusepython3.com
def run_check(pk):
    """
    The central job to run the check. Called after a check has been
    created.
    """
    check = Check.objects.get(pk=pk)
    check.started_at = now()

    all_py3_projects = get_or_fetch_all_py3_projects()
    blockers = blocking_dependencies(check.projects, all_py3_projects)
    blockers_mapping = {}
    for blocker in sorted(blockers, key=lambda x: tuple(reversed(x))):
        blockers_mapping[blocker[0]] = blocker[1:]
    check.blockers = blockers_mapping

    flattened_blockers = set()
    for blocker_reasons in blockers:
        for blocker in blocker_reasons:
            flattened_blockers.add(blocker)
    check.unblocked = len(flattened_blockers)

    check.finished_at = now()
    check.save()
    Check.objects.filter(pk=check.pk).update(runs=F('runs') + 1)

    redis = get_redis()

    # the number of "publicly" announced checks is the sum of all runs
    # and the number of projects that have been created lazily
    public_checks = (Check.objects.filter(public=True).aggregate(Sum('runs')))
    project_count = Project.objects.count()
    redis.set(CHECKED_COUNT_KEY,
              public_checks.get('runs__sum') or 0 + project_count)
    return blockers
コード例 #5
0
 def test_blocking_dependencies_locators_fails(self):
     # Testing the work around for //bitbucket.org/pypa/distlib/issue/59/ .
     with mock.patch.object(distlib.locators, 'locate') as locate_mock:
         py3 = {'py3_project': ''}
         breaking_project = 'test_project'
         locate_mock.side_effect = AttributeError()
         got = dependencies.blocking_dependencies([breaking_project], py3)
コード例 #6
0
def main():
    logger = logging.getLogger("python_pa")
    py2_projects = caniusepython3.pypi.all_projects()
    py3_projects = caniusepython3.pypi.all_py3_projects()
    py2_only_projects = set(py2_projects).difference(set(py3_projects))
    package_index = randint(0, len(py2_only_projects))
    selected_package_name = list(py2_only_projects)[package_index]
    blockers = blocking_dependencies(
        [selected_package_name],
        py3_projects)
    print("Randomly Selected Package is {}".format(selected_package_name))
    print(message(blockers))
    print(pprint_blockers(blockers))
コード例 #7
0
ファイル: allPythonContent.py プロジェクト: Mondego/pyreco
def check(projects):
    """Check the specified projects for Python 3 compatibility."""
    log = logging.getLogger('ciu')
    log.info('{0} top-level projects to check'.format(len(projects)))
    print('Finding and checking dependencies ...')
    blockers = dependencies.blocking_dependencies(projects, pypi.all_py3_projects())

    print('')
    for line in message(blockers):
        print(line)

    print('')
    for line in pprint_blockers(blockers):
        print(' ', line)
コード例 #8
0
def check(projects):
    """Check the specified projects for Python 3 compatibility."""
    log = logging.getLogger('ciu')
    log.info('{0} top-level projects to check'.format(len(projects)))
    print('Finding and checking dependencies ...')
    blockers = dependencies.blocking_dependencies(projects,
                                                  pypi.all_py3_projects())

    print('')
    for line in message(blockers):
        print(line)

    print('')
    for line in pprint_blockers(blockers):
        print(' ', line)
コード例 #9
0
def check(projects):
    """Check the specified projects for Python 3 compatibility."""
    # Without this, the 'ciu' logger will emit nothing.
    logging.basicConfig(format='[%(levelname)s] %(message)s')

    log = logging.getLogger('ciu')
    log.info('{0} top-level projects to check'.format(len(projects)))
    print('Finding and checking dependencies ...')
    blockers = dependencies.blocking_dependencies(projects, pypi.all_py3_projects())

    print('')
    for line in message(blockers):
        print(line)

    print('')
    for line in pprint_blockers(blockers):
        print(' ', line)
コード例 #10
0
 def test_blocking_dependencies_no_project(self):
     got = dependencies.blocking_dependencies(['asdfsadfdsfsdffdfadf'], {})
     self.assertEqual(got, frozenset())
コード例 #11
0
 def test_top_level_project_normalization(self):
     py3 = {'wsgi_intercept': ''}
     abnormal_name = 'WSGI-intercept'  # Note dash instead of underscore.
     got = dependencies.blocking_dependencies([abnormal_name], py3)
     self.assertEqual(got, frozenset())
コード例 #12
0
 def test_top_level_project_normalization(self):
     py3 = {'wsgi_intercept': ''}
     abnormal_name = 'WSGI-intercept'  # Note dash instead of underscore.
     got = dependencies.blocking_dependencies([abnormal_name], py3)
     self.assertEqual(got, frozenset())
コード例 #13
0
 def test_blocking_dependencies(self):
     got = dependencies.blocking_dependencies(['pastescript'],
                                              {'paste': ''})
     want = frozenset([('pastedeploy', 'pastescript')])
     self.assertEqual(frozenset(got), want)
コード例 #14
0
 def test_blocking_dependencies_no_project(self):
     got = dependencies.blocking_dependencies(['asdfsadfdsfsdffdfadf'], {})
     self.assertEqual(got, frozenset())
コード例 #15
0
 def test_blocking_dependencies(self):
     got = dependencies.blocking_dependencies(['pastescript'], {'paste': ''})
     want = frozenset([('pastedeploy', 'pastescript')])
     self.assertEqual(frozenset(got), want)
コード例 #16
0
 def test_recursion(self, dependencies_mock):
     deps = {'a': ['b'], 'b': ['a']}
     dependencies_mock.side_effect = lambda name: deps[name]
     got = dependencies.blocking_dependencies(['a'], {})
     self.assertEqual(frozenset(), got)
コード例 #17
0
 def test_blocking_dependencies(self):
     got = dependencies.blocking_dependencies(['mozinfo'], {})
     want = frozenset([('mozfile', 'mozinfo')])
     self.assertEqual(frozenset(got), want)
コード例 #18
0
 def test_blocking_dependencies(self):
     got = dependencies.blocking_dependencies(['mozinfo'], {})
     want = frozenset([('mozfile', 'mozinfo')])
     self.assertEqual(frozenset(got), want)
コード例 #19
0
 def test_recursion(self, dependencies_mock):
     deps = {'a': ['b'], 'b': ['a']}
     dependencies_mock.side_effect = lambda name: deps[name]
     got = dependencies.blocking_dependencies(['a'], {})
     self.assertEqual(frozenset(), got)
コード例 #20
0
def write_results(top_blockers):
    with open('top_blockers', 'wt') as out_file:
        pprint(top_blockers.most_common(), stream=out_file)


if __name__ == "__main__":
    logger = logging.getLogger(__name__)
    all_py_projects = list(caniusepython3.pypi.all_projects())
    py3_projects = caniusepython3.pypi.all_py3_projects()
    top_blockers = Counter()
    for py_projects_sublist in chunk_list(all_py_projects, 50):
        all_blockers = None
        try:
            all_blockers = blocking_dependencies(
                py_projects_sublist,
                py3_projects)

            blocker_list = []
            for blockers_subset in all_blockers:
                for blocker in blockers_subset:
                    blocker_list.append(blocker)
            top_blockers.update(blocker_list)
        except SyntaxError as error:
            logger.exception("{} throw on projects {}".format(
                error,
                py_projects_sublist))
        except TypeError as error:
            logger.exception("{} throw on projects {}".format(
                error,
                py_projects_sublist))