Esempio n. 1
0
def test_generate_eq():
    specs = ['anaconda']
    dists, specs = r.get_dists(specs)
    groups, trackers = build_groups(dists)
    C = r.gen_clauses(groups, trackers, specs)
    eq = r.generate_version_metric(C, groups, specs)
    # Should satisfy the following criteria:
    # - lower versions of the same package should should have higher
    #   coefficients.
    # - the same versions of the same package (e.g., different build strings)
    #   should have the same coefficients.
    # - a package that only has one version should not appear, unless
    #   include=True as it will have a 0 coefficient. The same is true of the
    #   latest version of a package.
    assert eq == {
        'astropy-0.2-np15py26_0.tar.bz2': 1,
        'astropy-0.2-np16py26_0.tar.bz2': 1,
        'astropy-0.2-np17py26_0.tar.bz2': 1,
        'astropy-0.2-np17py33_0.tar.bz2': 1,
        'bitarray-0.8.0-py26_0.tar.bz2': 1,
        'bitarray-0.8.0-py33_0.tar.bz2': 1,
        'cython-0.18-py26_0.tar.bz2': 1,
        'cython-0.18-py33_0.tar.bz2': 1,
        'dateutil-2.1-py26_0.tar.bz2': 1,
        'dateutil-2.1-py33_0.tar.bz2': 1,
        'distribute-0.6.34-py26_1.tar.bz2': 1,
        'distribute-0.6.34-py33_1.tar.bz2': 1,
        'ipython-0.13.1-py26_1.tar.bz2': 1,
        'ipython-0.13.1-py33_1.tar.bz2': 1,
        'llvmpy-0.11.1-py26_0.tar.bz2': 1,
        'llvmpy-0.11.1-py33_0.tar.bz2': 1,
        'lxml-3.0.2-py26_0.tar.bz2': 1,
        'lxml-3.0.2-py33_0.tar.bz2': 1,
        'matplotlib-1.2.0-np15py26_1.tar.bz2': 1,
        'matplotlib-1.2.0-np16py26_1.tar.bz2': 1,
        'matplotlib-1.2.0-np17py26_1.tar.bz2': 1,
        'matplotlib-1.2.0-np17py33_1.tar.bz2': 1,
        'nose-1.2.1-py26_0.tar.bz2': 1,
        'nose-1.2.1-py33_0.tar.bz2': 1,
        'numpy-1.5.1-py26_3.tar.bz2': 4,
        'numpy-1.6.2-py26_3.tar.bz2': 3,
        'numpy-1.6.2-py26_4.tar.bz2': 2,
        'numpy-1.6.2-py27_4.tar.bz2': 2,
        'numpy-1.7.0-py26_0.tar.bz2': 1,
        'numpy-1.7.0-py33_0.tar.bz2': 1,
        'pip-1.2.1-py26_1.tar.bz2': 1,
        'pip-1.2.1-py33_1.tar.bz2': 1,
        'psutil-0.6.1-py26_0.tar.bz2': 1,
        'psutil-0.6.1-py33_0.tar.bz2': 1,
        'pyflakes-0.6.1-py26_0.tar.bz2': 1,
        'pyflakes-0.6.1-py33_0.tar.bz2': 1,
        'python-2.6.8-6.tar.bz2': 3,
        'python-2.7.4-0.tar.bz2': 2,
        'python-3.3.0-4.tar.bz2': 1,
        'pytz-2012j-py26_0.tar.bz2': 1,
        'pytz-2012j-py33_0.tar.bz2': 1,
        'pyzmq-2.2.0.1-py26_0.tar.bz2': 1,
        'pyzmq-2.2.0.1-py33_0.tar.bz2': 1,
        'requests-0.13.9-py26_0.tar.bz2': 1,
        'requests-0.13.9-py33_0.tar.bz2': 1,
        'scipy-0.11.0-np15py26_3.tar.bz2': 1,
        'scipy-0.11.0-np16py26_3.tar.bz2': 1,
        'scipy-0.11.0-np17py26_3.tar.bz2': 1,
        'scipy-0.11.0-np17py33_3.tar.bz2': 1,
        'six-1.2.0-py26_0.tar.bz2': 1,
        'six-1.2.0-py33_0.tar.bz2': 1,
        'sphinx-1.1.3-py26_2.tar.bz2': 1,
        'sphinx-1.1.3-py33_2.tar.bz2': 1,
        'sqlalchemy-0.7.8-py26_0.tar.bz2': 1,
        'sqlalchemy-0.7.8-py33_0.tar.bz2': 1,
        'system-5.8-0.tar.bz2': 1,
        'tornado-2.4.1-py26_0.tar.bz2': 1,
        'tornado-2.4.1-py33_0.tar.bz2': 1,
        'xlrd-0.9.0-py26_0.tar.bz2': 1,
        'xlrd-0.9.0-py33_0.tar.bz2': 1,
        'zeromq-2.2.0-0.tar.bz2': 1}
Esempio n. 2
0
def test_generate_eq():
    specs = ['anaconda']
    dists, specs = r.get_dists(specs)
    groups = build_groups(dists)
    m, v, w = r.build_vw(groups)
    eq = r.generate_version_eq(v, groups, specs, include0=True)
    e = sorted(((i, w[j]) for i, j in eq), key=lambda i: i[1])
    # Should satisfy the following criteria:
    # - lower versions of the same package should should have higher
    #   coefficients.
    # - the same versions of the same package (e.g., different build strings)
    #   should have the same coefficients.
    # - a package that only has one version should not appear, unless
    #   include=True as it will have a 0 coefficient. The same is true of the
    #   latest version of a package.
    assert e == [(1, u'anaconda-1.4.0-np15py26_0.tar.bz2'),
                 (1, u'anaconda-1.4.0-np15py27_0.tar.bz2'),
                 (1, u'anaconda-1.4.0-np16py26_0.tar.bz2'),
                 (1, u'anaconda-1.4.0-np16py27_0.tar.bz2'),
                 (1, u'anaconda-1.4.0-np17py26_0.tar.bz2'),
                 (1, u'anaconda-1.4.0-np17py27_0.tar.bz2'),
                 (1, u'anaconda-1.4.0-np17py33_0.tar.bz2'),
                 (0, u'anaconda-1.5.0-np16py26_0.tar.bz2'),
                 (0, u'anaconda-1.5.0-np16py27_0.tar.bz2'),
                 (0, u'anaconda-1.5.0-np17py26_0.tar.bz2'),
                 (0, u'anaconda-1.5.0-np17py27_0.tar.bz2'),
                 (0, u'anaconda-1.5.0-np17py33_0.tar.bz2'),
                 (1, u'astropy-0.2-np15py26_0.tar.bz2'),
                 (1, u'astropy-0.2-np15py27_0.tar.bz2'),
                 (1, u'astropy-0.2-np16py26_0.tar.bz2'),
                 (1, u'astropy-0.2-np16py27_0.tar.bz2'),
                 (1, u'astropy-0.2-np17py26_0.tar.bz2'),
                 (1, u'astropy-0.2-np17py27_0.tar.bz2'),
                 (1, u'astropy-0.2-np17py33_0.tar.bz2'),
                 (0, u'astropy-0.2.1-np16py26_0.tar.bz2'),
                 (0, u'astropy-0.2.1-np16py27_0.tar.bz2'),
                 (0, u'astropy-0.2.1-np17py26_0.tar.bz2'),
                 (0, u'astropy-0.2.1-np17py27_0.tar.bz2'),
                 (0, u'astropy-0.2.1-np17py33_0.tar.bz2'),
                 (1, u'bitarray-0.8.0-py26_0.tar.bz2'),
                 (1, u'bitarray-0.8.0-py27_0.tar.bz2'),
                 (1, u'bitarray-0.8.0-py33_0.tar.bz2'),
                 (0, u'bitarray-0.8.1-py26_0.tar.bz2'),
                 (0, u'bitarray-0.8.1-py27_0.tar.bz2'),
                 (0, u'bitarray-0.8.1-py33_0.tar.bz2'),
                 (1, u'cython-0.18-py26_0.tar.bz2'),
                 (1, u'cython-0.18-py27_0.tar.bz2'),
                 (1, u'cython-0.18-py33_0.tar.bz2'),
                 (0, u'cython-0.19-py26_0.tar.bz2'),
                 (0, u'cython-0.19-py27_0.tar.bz2'),
                 (0, u'cython-0.19-py33_0.tar.bz2'),
                 (1, u'dateutil-2.1-py26_0.tar.bz2'),
                 (0, u'dateutil-2.1-py26_1.tar.bz2'),
                 (1, u'dateutil-2.1-py27_0.tar.bz2'),
                 (0, u'dateutil-2.1-py27_1.tar.bz2'),
                 (1, u'dateutil-2.1-py33_0.tar.bz2'),
                 (0, u'dateutil-2.1-py33_1.tar.bz2'),
                 (1, u'distribute-0.6.34-py26_1.tar.bz2'),
                 (1, u'distribute-0.6.34-py27_1.tar.bz2'),
                 (1, u'distribute-0.6.34-py33_1.tar.bz2'),
                 (0, u'distribute-0.6.36-py26_1.tar.bz2'),
                 (0, u'distribute-0.6.36-py27_1.tar.bz2'),
                 (0, u'distribute-0.6.36-py33_1.tar.bz2'),
                 (0, u'docutils-0.10-py26_0.tar.bz2'),
                 (0, u'docutils-0.10-py27_0.tar.bz2'),
                 (0, u'docutils-0.10-py33_0.tar.bz2'),
                 (0, u'freetype-2.4.10-0.tar.bz2'),
                 (0, u'greenlet-0.4.0-py26_0.tar.bz2'),
                 (0, u'greenlet-0.4.0-py27_0.tar.bz2'),
                 (0, u'greenlet-0.4.0-py33_0.tar.bz2'),
                 (1, u'ipython-0.13.1-py26_1.tar.bz2'),
                 (1, u'ipython-0.13.1-py27_1.tar.bz2'),
                 (1, u'ipython-0.13.1-py33_1.tar.bz2'),
                 (0, u'ipython-0.13.2-py26_0.tar.bz2'),
                 (0, u'ipython-0.13.2-py27_0.tar.bz2'),
                 (0, u'ipython-0.13.2-py33_0.tar.bz2'),
                 (0, u'jinja2-2.6-py26_0.tar.bz2'),
                 (0, u'jinja2-2.6-py27_0.tar.bz2'),
                 (0, u'jinja2-2.6-py33_0.tar.bz2'),
                 (0, u'libpng-1.5.13-1.tar.bz2'),
                 (0, u'libxml2-2.9.0-0.tar.bz2'),
                 (0, u'libxslt-1.1.28-0.tar.bz2'), (0, u'llvm-3.2-0.tar.bz2'),
                 (1, u'llvmpy-0.11.1-py26_0.tar.bz2'),
                 (1, u'llvmpy-0.11.1-py27_0.tar.bz2'),
                 (1, u'llvmpy-0.11.1-py33_0.tar.bz2'),
                 (0, u'llvmpy-0.11.2-py26_0.tar.bz2'),
                 (0, u'llvmpy-0.11.2-py27_0.tar.bz2'),
                 (0, u'llvmpy-0.11.2-py33_0.tar.bz2'),
                 (1, u'lxml-3.0.2-py26_0.tar.bz2'),
                 (1, u'lxml-3.0.2-py27_0.tar.bz2'),
                 (1, u'lxml-3.0.2-py33_0.tar.bz2'),
                 (0, u'lxml-3.2.0-py26_0.tar.bz2'),
                 (0, u'lxml-3.2.0-py27_0.tar.bz2'),
                 (0, u'lxml-3.2.0-py33_0.tar.bz2'),
                 (1, u'matplotlib-1.2.0-np15py26_1.tar.bz2'),
                 (1, u'matplotlib-1.2.0-np15py27_1.tar.bz2'),
                 (1, u'matplotlib-1.2.0-np16py26_1.tar.bz2'),
                 (1, u'matplotlib-1.2.0-np16py27_1.tar.bz2'),
                 (1, u'matplotlib-1.2.0-np17py26_1.tar.bz2'),
                 (1, u'matplotlib-1.2.0-np17py27_1.tar.bz2'),
                 (1, u'matplotlib-1.2.0-np17py33_1.tar.bz2'),
                 (0, u'matplotlib-1.2.1-np16py26_1.tar.bz2'),
                 (0, u'matplotlib-1.2.1-np16py27_1.tar.bz2'),
                 (0, u'matplotlib-1.2.1-np17py26_1.tar.bz2'),
                 (0, u'matplotlib-1.2.1-np17py27_1.tar.bz2'),
                 (0, u'matplotlib-1.2.1-np17py33_1.tar.bz2'),
                 (0, u'mdp-3.3-np15py26_0.tar.bz2'),
                 (0, u'mdp-3.3-np15py27_0.tar.bz2'),
                 (0, u'mdp-3.3-np16py26_0.tar.bz2'),
                 (0, u'mdp-3.3-np16py27_0.tar.bz2'),
                 (0, u'mdp-3.3-np17py26_0.tar.bz2'),
                 (0, u'mdp-3.3-np17py27_0.tar.bz2'),
                 (0, u'mdp-3.3-np17py33_0.tar.bz2'),
                 (0, u'networkx-1.7-py26_0.tar.bz2'),
                 (0, u'networkx-1.7-py27_0.tar.bz2'),
                 (0, u'networkx-1.7-py33_0.tar.bz2'),
                 (1, u'nose-1.2.1-py26_0.tar.bz2'),
                 (1, u'nose-1.2.1-py27_0.tar.bz2'),
                 (1, u'nose-1.2.1-py33_0.tar.bz2'),
                 (0, u'nose-1.3.0-py26_0.tar.bz2'),
                 (0, u'nose-1.3.0-py27_0.tar.bz2'),
                 (0, u'nose-1.3.0-py33_0.tar.bz2'),
                 (4, u'numpy-1.5.1-py26_3.tar.bz2'),
                 (4, u'numpy-1.5.1-py27_3.tar.bz2'),
                 (3, u'numpy-1.6.2-py26_3.tar.bz2'),
                 (2, u'numpy-1.6.2-py26_4.tar.bz2'),
                 (3, u'numpy-1.6.2-py27_3.tar.bz2'),
                 (2, u'numpy-1.6.2-py27_4.tar.bz2'),
                 (1, u'numpy-1.7.0-py26_0.tar.bz2'),
                 (1, u'numpy-1.7.0-py27_0.tar.bz2'),
                 (1, u'numpy-1.7.0-py33_0.tar.bz2'),
                 (0, u'numpy-1.7.1-py26_0.tar.bz2'),
                 (0, u'numpy-1.7.1-py27_0.tar.bz2'),
                 (0, u'numpy-1.7.1-py33_0.tar.bz2'),
                 (0, u'openssl-1.0.1c-0.tar.bz2'),
                 (1, u'pip-1.2.1-py26_1.tar.bz2'),
                 (1, u'pip-1.2.1-py27_1.tar.bz2'),
                 (1, u'pip-1.2.1-py33_1.tar.bz2'),
                 (0, u'pip-1.3.1-py26_1.tar.bz2'),
                 (0, u'pip-1.3.1-py27_1.tar.bz2'),
                 (0, u'pip-1.3.1-py33_1.tar.bz2'),
                 (0, u'ply-3.4-py26_0.tar.bz2'), (0,
                                                  u'ply-3.4-py27_0.tar.bz2'),
                 (0, u'ply-3.4-py33_0.tar.bz2'),
                 (1, u'psutil-0.6.1-py26_0.tar.bz2'),
                 (1, u'psutil-0.6.1-py27_0.tar.bz2'),
                 (1, u'psutil-0.6.1-py33_0.tar.bz2'),
                 (0, u'psutil-0.7.1-py26_0.tar.bz2'),
                 (0, u'psutil-0.7.1-py27_0.tar.bz2'),
                 (0, u'psutil-0.7.1-py33_0.tar.bz2'),
                 (0, u'pycparser-2.9.1-py26_0.tar.bz2'),
                 (0, u'pycparser-2.9.1-py27_0.tar.bz2'),
                 (0, u'pycparser-2.9.1-py33_0.tar.bz2'),
                 (0, u'pycrypto-2.6-py26_0.tar.bz2'),
                 (0, u'pycrypto-2.6-py27_0.tar.bz2'),
                 (0, u'pycrypto-2.6-py33_0.tar.bz2'),
                 (1, u'pyflakes-0.6.1-py26_0.tar.bz2'),
                 (1, u'pyflakes-0.6.1-py27_0.tar.bz2'),
                 (1, u'pyflakes-0.6.1-py33_0.tar.bz2'),
                 (0, u'pyflakes-0.7.2-py26_0.tar.bz2'),
                 (0, u'pyflakes-0.7.2-py27_0.tar.bz2'),
                 (0, u'pyflakes-0.7.2-py33_0.tar.bz2'),
                 (0, u'pygments-1.6-py26_0.tar.bz2'),
                 (0, u'pygments-1.6-py27_0.tar.bz2'),
                 (0, u'pygments-1.6-py33_0.tar.bz2'),
                 (4, u'python-2.6.8-6.tar.bz2'), (3,
                                                  u'python-2.7.3-7.tar.bz2'),
                 (2, u'python-2.7.4-0.tar.bz2'), (1,
                                                  u'python-3.3.0-4.tar.bz2'),
                 (0, u'python-3.3.1-0.tar.bz2'),
                 (1, u'pytz-2012j-py26_0.tar.bz2'),
                 (1, u'pytz-2012j-py27_0.tar.bz2'),
                 (1, u'pytz-2012j-py33_0.tar.bz2'),
                 (0, u'pytz-2013b-py26_0.tar.bz2'),
                 (0, u'pytz-2013b-py27_0.tar.bz2'),
                 (0, u'pytz-2013b-py33_0.tar.bz2'),
                 (0, u'pyyaml-3.10-py26_0.tar.bz2'),
                 (0, u'pyyaml-3.10-py27_0.tar.bz2'),
                 (0, u'pyyaml-3.10-py33_0.tar.bz2'),
                 (1, u'pyzmq-2.2.0.1-py26_0.tar.bz2'),
                 (0, u'pyzmq-2.2.0.1-py26_1.tar.bz2'),
                 (1, u'pyzmq-2.2.0.1-py27_0.tar.bz2'),
                 (0, u'pyzmq-2.2.0.1-py27_1.tar.bz2'),
                 (1, u'pyzmq-2.2.0.1-py33_0.tar.bz2'),
                 (0, u'pyzmq-2.2.0.1-py33_1.tar.bz2'),
                 (0, u'readline-6.2-0.tar.bz2'),
                 (1, u'requests-0.13.9-py26_0.tar.bz2'),
                 (1, u'requests-0.13.9-py27_0.tar.bz2'),
                 (1, u'requests-0.13.9-py33_0.tar.bz2'),
                 (0, u'requests-1.2.0-py26_0.tar.bz2'),
                 (0, u'requests-1.2.0-py27_0.tar.bz2'),
                 (0, u'requests-1.2.0-py33_0.tar.bz2'),
                 (1, u'scipy-0.11.0-np15py26_3.tar.bz2'),
                 (1, u'scipy-0.11.0-np15py27_3.tar.bz2'),
                 (1, u'scipy-0.11.0-np16py26_3.tar.bz2'),
                 (1, u'scipy-0.11.0-np16py27_3.tar.bz2'),
                 (1, u'scipy-0.11.0-np17py26_3.tar.bz2'),
                 (1, u'scipy-0.11.0-np17py27_3.tar.bz2'),
                 (1, u'scipy-0.11.0-np17py33_3.tar.bz2'),
                 (0, u'scipy-0.12.0-np16py26_0.tar.bz2'),
                 (0, u'scipy-0.12.0-np16py27_0.tar.bz2'),
                 (0, u'scipy-0.12.0-np17py26_0.tar.bz2'),
                 (0, u'scipy-0.12.0-np17py27_0.tar.bz2'),
                 (0, u'scipy-0.12.0-np17py33_0.tar.bz2'),
                 (1, u'six-1.2.0-py26_0.tar.bz2'),
                 (1, u'six-1.2.0-py27_0.tar.bz2'),
                 (1, u'six-1.2.0-py33_0.tar.bz2'),
                 (0, u'six-1.3.0-py26_0.tar.bz2'),
                 (0, u'six-1.3.0-py27_0.tar.bz2'),
                 (0, u'six-1.3.0-py33_0.tar.bz2'),
                 (1, u'sphinx-1.1.3-py26_2.tar.bz2'),
                 (0, u'sphinx-1.1.3-py26_3.tar.bz2'),
                 (1, u'sphinx-1.1.3-py27_2.tar.bz2'),
                 (0, u'sphinx-1.1.3-py27_3.tar.bz2'),
                 (1, u'sphinx-1.1.3-py33_2.tar.bz2'),
                 (0, u'sphinx-1.1.3-py33_3.tar.bz2'),
                 (1, u'sqlalchemy-0.7.8-py26_0.tar.bz2'),
                 (1, u'sqlalchemy-0.7.8-py27_0.tar.bz2'),
                 (1, u'sqlalchemy-0.7.8-py33_0.tar.bz2'),
                 (0, u'sqlalchemy-0.8.1-py26_0.tar.bz2'),
                 (0, u'sqlalchemy-0.8.1-py27_0.tar.bz2'),
                 (0, u'sqlalchemy-0.8.1-py33_0.tar.bz2'),
                 (0, u'sqlite-3.7.13-0.tar.bz2'), (1, u'system-5.8-0.tar.bz2'),
                 (0, u'system-5.8-1.tar.bz2'), (0, u'tk-8.5.13-0.tar.bz2'),
                 (1, u'tornado-2.4.1-py26_0.tar.bz2'),
                 (1, u'tornado-2.4.1-py27_0.tar.bz2'),
                 (1, u'tornado-2.4.1-py33_0.tar.bz2'),
                 (0, u'tornado-3.0.1-py26_0.tar.bz2'),
                 (0, u'tornado-3.0.1-py27_0.tar.bz2'),
                 (0, u'tornado-3.0.1-py33_0.tar.bz2'),
                 (0, u'util-linux-2.21-0.tar.bz2'),
                 (1, u'xlrd-0.9.0-py26_0.tar.bz2'),
                 (1, u'xlrd-0.9.0-py27_0.tar.bz2'),
                 (1, u'xlrd-0.9.0-py33_0.tar.bz2'),
                 (0, u'xlrd-0.9.2-py26_0.tar.bz2'),
                 (0, u'xlrd-0.9.2-py27_0.tar.bz2'),
                 (0, u'xlrd-0.9.2-py33_0.tar.bz2'),
                 (0, u'yaml-0.1.4-0.tar.bz2'), (1, u'zeromq-2.2.0-0.tar.bz2'),
                 (0, u'zeromq-2.2.0-1.tar.bz2'), (0, u'zlib-1.2.7-0.tar.bz2')]

    eq = r.generate_version_eq(v, groups, specs)
    e2 = sorted(((i, w[j]) for i, j in eq), key=lambda i: i[1])
    assert e2 == [q for q in e if q[0] > 0]
Esempio n. 3
0
def test_generate_eq():
    specs = ['anaconda']
    dists, specs = r.get_dists(specs)
    groups, trackers = build_groups(dists)
    C = r.gen_clauses(groups, trackers, specs)
    eqv, eqb = r.generate_version_metrics(C, groups, specs)
    # Should satisfy the following criteria:
    # - lower versions of the same package should should have higher
    #   coefficients.
    # - the same versions of the same package (e.g., different build strings)
    #   should have the same coefficients.
    # - a package that only has one version should not appear, unless
    #   include=True as it will have a 0 coefficient. The same is true of the
    #   latest version of a package.
    assert eqv == {
        'astropy-0.2-np15py26_0.tar.bz2': 1,
        'astropy-0.2-np16py26_0.tar.bz2': 1,
        'astropy-0.2-np17py26_0.tar.bz2': 1,
        'astropy-0.2-np17py33_0.tar.bz2': 1,
        'bitarray-0.8.0-py26_0.tar.bz2': 1,
        'bitarray-0.8.0-py33_0.tar.bz2': 1,
        'cython-0.18-py26_0.tar.bz2': 1,
        'cython-0.18-py33_0.tar.bz2': 1,
        'distribute-0.6.34-py26_1.tar.bz2': 1,
        'distribute-0.6.34-py33_1.tar.bz2': 1,
        'ipython-0.13.1-py26_1.tar.bz2': 1,
        'ipython-0.13.1-py33_1.tar.bz2': 1,
        'llvmpy-0.11.1-py26_0.tar.bz2': 1,
        'llvmpy-0.11.1-py33_0.tar.bz2': 1,
        'lxml-3.0.2-py26_0.tar.bz2': 1,
        'lxml-3.0.2-py33_0.tar.bz2': 1,
        'matplotlib-1.2.0-np15py26_1.tar.bz2': 1,
        'matplotlib-1.2.0-np16py26_1.tar.bz2': 1,
        'matplotlib-1.2.0-np17py26_1.tar.bz2': 1,
        'matplotlib-1.2.0-np17py33_1.tar.bz2': 1,
        'nose-1.2.1-py26_0.tar.bz2': 1,
        'nose-1.2.1-py33_0.tar.bz2': 1,
        'numpy-1.5.1-py26_3.tar.bz2': 3,
        'numpy-1.6.2-py26_3.tar.bz2': 2,
        'numpy-1.6.2-py26_4.tar.bz2': 2,
        'numpy-1.6.2-py27_4.tar.bz2': 2,
        'numpy-1.7.0-py26_0.tar.bz2': 1,
        'numpy-1.7.0-py33_0.tar.bz2': 1,
        'pip-1.2.1-py26_1.tar.bz2': 1,
        'pip-1.2.1-py33_1.tar.bz2': 1,
        'psutil-0.6.1-py26_0.tar.bz2': 1,
        'psutil-0.6.1-py33_0.tar.bz2': 1,
        'pyflakes-0.6.1-py26_0.tar.bz2': 1,
        'pyflakes-0.6.1-py33_0.tar.bz2': 1,
        'python-2.6.8-6.tar.bz2': 3,
        'python-2.7.4-0.tar.bz2': 2,
        'python-3.3.0-4.tar.bz2': 1,
        'pytz-2012j-py26_0.tar.bz2': 1,
        'pytz-2012j-py33_0.tar.bz2': 1,
        'requests-0.13.9-py26_0.tar.bz2': 1,
        'requests-0.13.9-py33_0.tar.bz2': 1,
        'scipy-0.11.0-np15py26_3.tar.bz2': 1,
        'scipy-0.11.0-np16py26_3.tar.bz2': 1,
        'scipy-0.11.0-np17py26_3.tar.bz2': 1,
        'scipy-0.11.0-np17py33_3.tar.bz2': 1,
        'six-1.2.0-py26_0.tar.bz2': 1,
        'six-1.2.0-py33_0.tar.bz2': 1,
        'sqlalchemy-0.7.8-py26_0.tar.bz2': 1,
        'sqlalchemy-0.7.8-py33_0.tar.bz2': 1,
        'tornado-2.4.1-py26_0.tar.bz2': 1,
        'tornado-2.4.1-py33_0.tar.bz2': 1,
        'xlrd-0.9.0-py26_0.tar.bz2': 1,
        'xlrd-0.9.0-py33_0.tar.bz2': 1
    }
    assert eqb == {
        'dateutil-2.1-py26_0.tar.bz2': 1,
        'dateutil-2.1-py33_0.tar.bz2': 1,
        'numpy-1.6.2-py26_3.tar.bz2': 1,
        'pyzmq-2.2.0.1-py26_0.tar.bz2': 1,
        'pyzmq-2.2.0.1-py33_0.tar.bz2': 1,
        'sphinx-1.1.3-py26_2.tar.bz2': 1,
        'sphinx-1.1.3-py33_2.tar.bz2': 1,
        'system-5.8-0.tar.bz2': 1,
        'zeromq-2.2.0-0.tar.bz2': 1
    }
Esempio n. 4
0
def test_generate_eq():
    specs = ["anaconda"]
    dists, specs = r.get_dists(specs)
    groups = build_groups(dists)
    m, v, w = r.build_vw(groups)
    eq = r.generate_version_eq(v, groups, specs, include0=True)
    e = sorted(((i, w[j]) for i, j in eq), key=lambda i: i[1])
    # Should satisfy the following criteria:
    # - lower versions of the same package should should have higher
    #   coefficients.
    # - the same versions of the same package (e.g., different build strings)
    #   should have the same coefficients.
    # - a package that only has one version should not appear, unless
    #   include=True as it will have a 0 coefficient. The same is true of the
    #   latest version of a package.
    assert e == [
        (1, u"anaconda-1.4.0-np15py26_0.tar.bz2"),
        (1, u"anaconda-1.4.0-np15py27_0.tar.bz2"),
        (1, u"anaconda-1.4.0-np16py26_0.tar.bz2"),
        (1, u"anaconda-1.4.0-np16py27_0.tar.bz2"),
        (1, u"anaconda-1.4.0-np17py26_0.tar.bz2"),
        (1, u"anaconda-1.4.0-np17py27_0.tar.bz2"),
        (1, u"anaconda-1.4.0-np17py33_0.tar.bz2"),
        (0, u"anaconda-1.5.0-np16py26_0.tar.bz2"),
        (0, u"anaconda-1.5.0-np16py27_0.tar.bz2"),
        (0, u"anaconda-1.5.0-np17py26_0.tar.bz2"),
        (0, u"anaconda-1.5.0-np17py27_0.tar.bz2"),
        (0, u"anaconda-1.5.0-np17py33_0.tar.bz2"),
        (1, u"astropy-0.2-np15py26_0.tar.bz2"),
        (1, u"astropy-0.2-np15py27_0.tar.bz2"),
        (1, u"astropy-0.2-np16py26_0.tar.bz2"),
        (1, u"astropy-0.2-np16py27_0.tar.bz2"),
        (1, u"astropy-0.2-np17py26_0.tar.bz2"),
        (1, u"astropy-0.2-np17py27_0.tar.bz2"),
        (1, u"astropy-0.2-np17py33_0.tar.bz2"),
        (0, u"astropy-0.2.1-np16py26_0.tar.bz2"),
        (0, u"astropy-0.2.1-np16py27_0.tar.bz2"),
        (0, u"astropy-0.2.1-np17py26_0.tar.bz2"),
        (0, u"astropy-0.2.1-np17py27_0.tar.bz2"),
        (0, u"astropy-0.2.1-np17py33_0.tar.bz2"),
        (1, u"bitarray-0.8.0-py26_0.tar.bz2"),
        (1, u"bitarray-0.8.0-py27_0.tar.bz2"),
        (1, u"bitarray-0.8.0-py33_0.tar.bz2"),
        (0, u"bitarray-0.8.1-py26_0.tar.bz2"),
        (0, u"bitarray-0.8.1-py27_0.tar.bz2"),
        (0, u"bitarray-0.8.1-py33_0.tar.bz2"),
        (1, u"cython-0.18-py26_0.tar.bz2"),
        (1, u"cython-0.18-py27_0.tar.bz2"),
        (1, u"cython-0.18-py33_0.tar.bz2"),
        (0, u"cython-0.19-py26_0.tar.bz2"),
        (0, u"cython-0.19-py27_0.tar.bz2"),
        (0, u"cython-0.19-py33_0.tar.bz2"),
        (1, u"dateutil-2.1-py26_0.tar.bz2"),
        (0, u"dateutil-2.1-py26_1.tar.bz2"),
        (1, u"dateutil-2.1-py27_0.tar.bz2"),
        (0, u"dateutil-2.1-py27_1.tar.bz2"),
        (1, u"dateutil-2.1-py33_0.tar.bz2"),
        (0, u"dateutil-2.1-py33_1.tar.bz2"),
        (1, u"distribute-0.6.34-py26_1.tar.bz2"),
        (1, u"distribute-0.6.34-py27_1.tar.bz2"),
        (1, u"distribute-0.6.34-py33_1.tar.bz2"),
        (0, u"distribute-0.6.36-py26_1.tar.bz2"),
        (0, u"distribute-0.6.36-py27_1.tar.bz2"),
        (0, u"distribute-0.6.36-py33_1.tar.bz2"),
        (0, u"docutils-0.10-py26_0.tar.bz2"),
        (0, u"docutils-0.10-py27_0.tar.bz2"),
        (0, u"docutils-0.10-py33_0.tar.bz2"),
        (0, u"freetype-2.4.10-0.tar.bz2"),
        (0, u"greenlet-0.4.0-py26_0.tar.bz2"),
        (0, u"greenlet-0.4.0-py27_0.tar.bz2"),
        (0, u"greenlet-0.4.0-py33_0.tar.bz2"),
        (1, u"ipython-0.13.1-py26_1.tar.bz2"),
        (1, u"ipython-0.13.1-py27_1.tar.bz2"),
        (1, u"ipython-0.13.1-py33_1.tar.bz2"),
        (0, u"ipython-0.13.2-py26_0.tar.bz2"),
        (0, u"ipython-0.13.2-py27_0.tar.bz2"),
        (0, u"ipython-0.13.2-py33_0.tar.bz2"),
        (0, u"jinja2-2.6-py26_0.tar.bz2"),
        (0, u"jinja2-2.6-py27_0.tar.bz2"),
        (0, u"jinja2-2.6-py33_0.tar.bz2"),
        (0, u"libpng-1.5.13-1.tar.bz2"),
        (0, u"libxml2-2.9.0-0.tar.bz2"),
        (0, u"libxslt-1.1.28-0.tar.bz2"),
        (0, u"llvm-3.2-0.tar.bz2"),
        (1, u"llvmpy-0.11.1-py26_0.tar.bz2"),
        (1, u"llvmpy-0.11.1-py27_0.tar.bz2"),
        (1, u"llvmpy-0.11.1-py33_0.tar.bz2"),
        (0, u"llvmpy-0.11.2-py26_0.tar.bz2"),
        (0, u"llvmpy-0.11.2-py27_0.tar.bz2"),
        (0, u"llvmpy-0.11.2-py33_0.tar.bz2"),
        (1, u"lxml-3.0.2-py26_0.tar.bz2"),
        (1, u"lxml-3.0.2-py27_0.tar.bz2"),
        (1, u"lxml-3.0.2-py33_0.tar.bz2"),
        (0, u"lxml-3.2.0-py26_0.tar.bz2"),
        (0, u"lxml-3.2.0-py27_0.tar.bz2"),
        (0, u"lxml-3.2.0-py33_0.tar.bz2"),
        (1, u"matplotlib-1.2.0-np15py26_1.tar.bz2"),
        (1, u"matplotlib-1.2.0-np15py27_1.tar.bz2"),
        (1, u"matplotlib-1.2.0-np16py26_1.tar.bz2"),
        (1, u"matplotlib-1.2.0-np16py27_1.tar.bz2"),
        (1, u"matplotlib-1.2.0-np17py26_1.tar.bz2"),
        (1, u"matplotlib-1.2.0-np17py27_1.tar.bz2"),
        (1, u"matplotlib-1.2.0-np17py33_1.tar.bz2"),
        (0, u"matplotlib-1.2.1-np16py26_1.tar.bz2"),
        (0, u"matplotlib-1.2.1-np16py27_1.tar.bz2"),
        (0, u"matplotlib-1.2.1-np17py26_1.tar.bz2"),
        (0, u"matplotlib-1.2.1-np17py27_1.tar.bz2"),
        (0, u"matplotlib-1.2.1-np17py33_1.tar.bz2"),
        (0, u"mdp-3.3-np15py26_0.tar.bz2"),
        (0, u"mdp-3.3-np15py27_0.tar.bz2"),
        (0, u"mdp-3.3-np16py26_0.tar.bz2"),
        (0, u"mdp-3.3-np16py27_0.tar.bz2"),
        (0, u"mdp-3.3-np17py26_0.tar.bz2"),
        (0, u"mdp-3.3-np17py27_0.tar.bz2"),
        (0, u"mdp-3.3-np17py33_0.tar.bz2"),
        (0, u"networkx-1.7-py26_0.tar.bz2"),
        (0, u"networkx-1.7-py27_0.tar.bz2"),
        (0, u"networkx-1.7-py33_0.tar.bz2"),
        (1, u"nose-1.2.1-py26_0.tar.bz2"),
        (1, u"nose-1.2.1-py27_0.tar.bz2"),
        (1, u"nose-1.2.1-py33_0.tar.bz2"),
        (0, u"nose-1.3.0-py26_0.tar.bz2"),
        (0, u"nose-1.3.0-py27_0.tar.bz2"),
        (0, u"nose-1.3.0-py33_0.tar.bz2"),
        (4, u"numpy-1.5.1-py26_3.tar.bz2"),
        (4, u"numpy-1.5.1-py27_3.tar.bz2"),
        (3, u"numpy-1.6.2-py26_3.tar.bz2"),
        (2, u"numpy-1.6.2-py26_4.tar.bz2"),
        (3, u"numpy-1.6.2-py27_3.tar.bz2"),
        (2, u"numpy-1.6.2-py27_4.tar.bz2"),
        (1, u"numpy-1.7.0-py26_0.tar.bz2"),
        (1, u"numpy-1.7.0-py27_0.tar.bz2"),
        (1, u"numpy-1.7.0-py33_0.tar.bz2"),
        (0, u"numpy-1.7.1-py26_0.tar.bz2"),
        (0, u"numpy-1.7.1-py27_0.tar.bz2"),
        (0, u"numpy-1.7.1-py33_0.tar.bz2"),
        (0, u"openssl-1.0.1c-0.tar.bz2"),
        (1, u"pip-1.2.1-py26_1.tar.bz2"),
        (1, u"pip-1.2.1-py27_1.tar.bz2"),
        (1, u"pip-1.2.1-py33_1.tar.bz2"),
        (0, u"pip-1.3.1-py26_1.tar.bz2"),
        (0, u"pip-1.3.1-py27_1.tar.bz2"),
        (0, u"pip-1.3.1-py33_1.tar.bz2"),
        (0, u"ply-3.4-py26_0.tar.bz2"),
        (0, u"ply-3.4-py27_0.tar.bz2"),
        (0, u"ply-3.4-py33_0.tar.bz2"),
        (1, u"psutil-0.6.1-py26_0.tar.bz2"),
        (1, u"psutil-0.6.1-py27_0.tar.bz2"),
        (1, u"psutil-0.6.1-py33_0.tar.bz2"),
        (0, u"psutil-0.7.1-py26_0.tar.bz2"),
        (0, u"psutil-0.7.1-py27_0.tar.bz2"),
        (0, u"psutil-0.7.1-py33_0.tar.bz2"),
        (0, u"pycparser-2.9.1-py26_0.tar.bz2"),
        (0, u"pycparser-2.9.1-py27_0.tar.bz2"),
        (0, u"pycparser-2.9.1-py33_0.tar.bz2"),
        (0, u"pycrypto-2.6-py26_0.tar.bz2"),
        (0, u"pycrypto-2.6-py27_0.tar.bz2"),
        (0, u"pycrypto-2.6-py33_0.tar.bz2"),
        (1, u"pyflakes-0.6.1-py26_0.tar.bz2"),
        (1, u"pyflakes-0.6.1-py27_0.tar.bz2"),
        (1, u"pyflakes-0.6.1-py33_0.tar.bz2"),
        (0, u"pyflakes-0.7.2-py26_0.tar.bz2"),
        (0, u"pyflakes-0.7.2-py27_0.tar.bz2"),
        (0, u"pyflakes-0.7.2-py33_0.tar.bz2"),
        (0, u"pygments-1.6-py26_0.tar.bz2"),
        (0, u"pygments-1.6-py27_0.tar.bz2"),
        (0, u"pygments-1.6-py33_0.tar.bz2"),
        (4, u"python-2.6.8-6.tar.bz2"),
        (3, u"python-2.7.3-7.tar.bz2"),
        (2, u"python-2.7.4-0.tar.bz2"),
        (1, u"python-3.3.0-4.tar.bz2"),
        (0, u"python-3.3.1-0.tar.bz2"),
        (1, u"pytz-2012j-py26_0.tar.bz2"),
        (1, u"pytz-2012j-py27_0.tar.bz2"),
        (1, u"pytz-2012j-py33_0.tar.bz2"),
        (0, u"pytz-2013b-py26_0.tar.bz2"),
        (0, u"pytz-2013b-py27_0.tar.bz2"),
        (0, u"pytz-2013b-py33_0.tar.bz2"),
        (0, u"pyyaml-3.10-py26_0.tar.bz2"),
        (0, u"pyyaml-3.10-py27_0.tar.bz2"),
        (0, u"pyyaml-3.10-py33_0.tar.bz2"),
        (1, u"pyzmq-2.2.0.1-py26_0.tar.bz2"),
        (0, u"pyzmq-2.2.0.1-py26_1.tar.bz2"),
        (1, u"pyzmq-2.2.0.1-py27_0.tar.bz2"),
        (0, u"pyzmq-2.2.0.1-py27_1.tar.bz2"),
        (1, u"pyzmq-2.2.0.1-py33_0.tar.bz2"),
        (0, u"pyzmq-2.2.0.1-py33_1.tar.bz2"),
        (0, u"readline-6.2-0.tar.bz2"),
        (1, u"requests-0.13.9-py26_0.tar.bz2"),
        (1, u"requests-0.13.9-py27_0.tar.bz2"),
        (1, u"requests-0.13.9-py33_0.tar.bz2"),
        (0, u"requests-1.2.0-py26_0.tar.bz2"),
        (0, u"requests-1.2.0-py27_0.tar.bz2"),
        (0, u"requests-1.2.0-py33_0.tar.bz2"),
        (1, u"scipy-0.11.0-np15py26_3.tar.bz2"),
        (1, u"scipy-0.11.0-np15py27_3.tar.bz2"),
        (1, u"scipy-0.11.0-np16py26_3.tar.bz2"),
        (1, u"scipy-0.11.0-np16py27_3.tar.bz2"),
        (1, u"scipy-0.11.0-np17py26_3.tar.bz2"),
        (1, u"scipy-0.11.0-np17py27_3.tar.bz2"),
        (1, u"scipy-0.11.0-np17py33_3.tar.bz2"),
        (0, u"scipy-0.12.0-np16py26_0.tar.bz2"),
        (0, u"scipy-0.12.0-np16py27_0.tar.bz2"),
        (0, u"scipy-0.12.0-np17py26_0.tar.bz2"),
        (0, u"scipy-0.12.0-np17py27_0.tar.bz2"),
        (0, u"scipy-0.12.0-np17py33_0.tar.bz2"),
        (1, u"six-1.2.0-py26_0.tar.bz2"),
        (1, u"six-1.2.0-py27_0.tar.bz2"),
        (1, u"six-1.2.0-py33_0.tar.bz2"),
        (0, u"six-1.3.0-py26_0.tar.bz2"),
        (0, u"six-1.3.0-py27_0.tar.bz2"),
        (0, u"six-1.3.0-py33_0.tar.bz2"),
        (1, u"sphinx-1.1.3-py26_2.tar.bz2"),
        (0, u"sphinx-1.1.3-py26_3.tar.bz2"),
        (1, u"sphinx-1.1.3-py27_2.tar.bz2"),
        (0, u"sphinx-1.1.3-py27_3.tar.bz2"),
        (1, u"sphinx-1.1.3-py33_2.tar.bz2"),
        (0, u"sphinx-1.1.3-py33_3.tar.bz2"),
        (1, u"sqlalchemy-0.7.8-py26_0.tar.bz2"),
        (1, u"sqlalchemy-0.7.8-py27_0.tar.bz2"),
        (1, u"sqlalchemy-0.7.8-py33_0.tar.bz2"),
        (0, u"sqlalchemy-0.8.1-py26_0.tar.bz2"),
        (0, u"sqlalchemy-0.8.1-py27_0.tar.bz2"),
        (0, u"sqlalchemy-0.8.1-py33_0.tar.bz2"),
        (0, u"sqlite-3.7.13-0.tar.bz2"),
        (1, u"system-5.8-0.tar.bz2"),
        (0, u"system-5.8-1.tar.bz2"),
        (0, u"tk-8.5.13-0.tar.bz2"),
        (1, u"tornado-2.4.1-py26_0.tar.bz2"),
        (1, u"tornado-2.4.1-py27_0.tar.bz2"),
        (1, u"tornado-2.4.1-py33_0.tar.bz2"),
        (0, u"tornado-3.0.1-py26_0.tar.bz2"),
        (0, u"tornado-3.0.1-py27_0.tar.bz2"),
        (0, u"tornado-3.0.1-py33_0.tar.bz2"),
        (0, u"util-linux-2.21-0.tar.bz2"),
        (1, u"xlrd-0.9.0-py26_0.tar.bz2"),
        (1, u"xlrd-0.9.0-py27_0.tar.bz2"),
        (1, u"xlrd-0.9.0-py33_0.tar.bz2"),
        (0, u"xlrd-0.9.2-py26_0.tar.bz2"),
        (0, u"xlrd-0.9.2-py27_0.tar.bz2"),
        (0, u"xlrd-0.9.2-py33_0.tar.bz2"),
        (0, u"yaml-0.1.4-0.tar.bz2"),
        (1, u"zeromq-2.2.0-0.tar.bz2"),
        (0, u"zeromq-2.2.0-1.tar.bz2"),
        (0, u"zlib-1.2.7-0.tar.bz2"),
    ]

    eq = r.generate_version_eq(v, groups, specs)
    e2 = sorted(((i, w[j]) for i, j in eq), key=lambda i: i[1])
    assert e2 == [q for q in e if q[0] > 0]
Esempio n. 5
0
def test_generate_eq():
    specs = ["anaconda"]
    dists, _ = r.get_dists(specs)
    groups = build_groups(dists)
    m, v, w = r.build_vw(groups)
    eq = r.generate_version_eq(v, groups, specs, include0=True)
    e = sorted(((i, w[j]) for i, j in eq), key=lambda i: i[1])
    # Should satisfy the following criteria:
    # - lower versions of the same package should should have higher
    #   coefficients.
    # - the same versions of the same package (e.g., different build strings)
    #   should have the same coefficients.
    # - a package that only has one version should not appear, unless
    #   include=True as it will have a 0 coefficient. The same is true of the
    #   latest version of a package.
    assert e == [
        (0, u"_license-1.1-py27_0.tar.bz2"),
        (44, u"anaconda-1.4.0-np15py26_0.tar.bz2"),
        (40, u"anaconda-1.4.0-np15py27_0.tar.bz2"),
        (36, u"anaconda-1.4.0-np16py26_0.tar.bz2"),
        (32, u"anaconda-1.4.0-np16py27_0.tar.bz2"),
        (28, u"anaconda-1.4.0-np17py26_0.tar.bz2"),
        (24, u"anaconda-1.4.0-np17py27_0.tar.bz2"),
        (20, u"anaconda-1.4.0-np17py33_0.tar.bz2"),
        (16, u"anaconda-1.5.0-np16py26_0.tar.bz2"),
        (12, u"anaconda-1.5.0-np16py27_0.tar.bz2"),
        (8, u"anaconda-1.5.0-np17py26_0.tar.bz2"),
        (4, u"anaconda-1.5.0-np17py27_0.tar.bz2"),
        (0, u"anaconda-1.5.0-np17py33_0.tar.bz2"),
        (0, u"argparse-1.2.1-py26_0.tar.bz2"),
        (11, u"astropy-0.2-np15py26_0.tar.bz2"),
        (10, u"astropy-0.2-np15py27_0.tar.bz2"),
        (9, u"astropy-0.2-np16py26_0.tar.bz2"),
        (8, u"astropy-0.2-np16py27_0.tar.bz2"),
        (7, u"astropy-0.2-np17py26_0.tar.bz2"),
        (6, u"astropy-0.2-np17py27_0.tar.bz2"),
        (5, u"astropy-0.2-np17py33_0.tar.bz2"),
        (4, u"astropy-0.2.1-np16py26_0.tar.bz2"),
        (3, u"astropy-0.2.1-np16py27_0.tar.bz2"),
        (2, u"astropy-0.2.1-np17py26_0.tar.bz2"),
        (1, u"astropy-0.2.1-np17py27_0.tar.bz2"),
        (0, u"astropy-0.2.1-np17py33_0.tar.bz2"),
        (1, u"atom-0.2.3-py26_0.tar.bz2"),
        (0, u"atom-0.2.3-py27_0.tar.bz2"),
        (9, u"biopython-1.60-np15py26_0.tar.bz2"),
        (8, u"biopython-1.60-np15py27_0.tar.bz2"),
        (7, u"biopython-1.60-np16py26_0.tar.bz2"),
        (6, u"biopython-1.60-np16py27_0.tar.bz2"),
        (5, u"biopython-1.60-np17py26_0.tar.bz2"),
        (4, u"biopython-1.60-np17py27_0.tar.bz2"),
        (3, u"biopython-1.61-np16py26_0.tar.bz2"),
        (2, u"biopython-1.61-np16py27_0.tar.bz2"),
        (1, u"biopython-1.61-np17py26_0.tar.bz2"),
        (0, u"biopython-1.61-np17py27_0.tar.bz2"),
        (5, u"bitarray-0.8.0-py26_0.tar.bz2"),
        (4, u"bitarray-0.8.0-py27_0.tar.bz2"),
        (3, u"bitarray-0.8.0-py33_0.tar.bz2"),
        (2, u"bitarray-0.8.1-py26_0.tar.bz2"),
        (1, u"bitarray-0.8.1-py27_0.tar.bz2"),
        (0, u"bitarray-0.8.1-py33_0.tar.bz2"),
        (3, u"boto-2.8.0-py26_0.tar.bz2"),
        (2, u"boto-2.8.0-py27_0.tar.bz2"),
        (1, u"boto-2.9.2-py26_0.tar.bz2"),
        (0, u"boto-2.9.2-py27_0.tar.bz2"),
        (1, u"cairo-1.12.2-0.tar.bz2"),
        (0, u"cairo-1.12.2-1.tar.bz2"),
        (1, u"casuarius-1.1-py26_0.tar.bz2"),
        (0, u"casuarius-1.1-py27_0.tar.bz2"),
        (1, u"conda-1.4.4-py27_0.tar.bz2"),
        (0, u"conda-1.5.2-py27_0.tar.bz2"),
        (1, u"cubes-0.10.2-py27_0.tar.bz2"),
        (0, u"cubes-0.10.2-py27_1.tar.bz2"),
        (0, u"curl-7.30.0-0.tar.bz2"),
        (5, u"cython-0.18-py26_0.tar.bz2"),
        (4, u"cython-0.18-py27_0.tar.bz2"),
        (3, u"cython-0.18-py33_0.tar.bz2"),
        (2, u"cython-0.19-py26_0.tar.bz2"),
        (1, u"cython-0.19-py27_0.tar.bz2"),
        (0, u"cython-0.19-py33_0.tar.bz2"),
        (5, u"dateutil-2.1-py26_0.tar.bz2"),
        (2, u"dateutil-2.1-py26_1.tar.bz2"),
        (4, u"dateutil-2.1-py27_0.tar.bz2"),
        (1, u"dateutil-2.1-py27_1.tar.bz2"),
        (3, u"dateutil-2.1-py33_0.tar.bz2"),
        (0, u"dateutil-2.1-py33_1.tar.bz2"),
        (1, u"disco-0.4.4-py26_0.tar.bz2"),
        (0, u"disco-0.4.4-py27_0.tar.bz2"),
        (5, u"distribute-0.6.34-py26_1.tar.bz2"),
        (4, u"distribute-0.6.34-py27_1.tar.bz2"),
        (3, u"distribute-0.6.34-py33_1.tar.bz2"),
        (2, u"distribute-0.6.36-py26_1.tar.bz2"),
        (1, u"distribute-0.6.36-py27_1.tar.bz2"),
        (0, u"distribute-0.6.36-py33_1.tar.bz2"),
        (2, u"docutils-0.10-py26_0.tar.bz2"),
        (1, u"docutils-0.10-py27_0.tar.bz2"),
        (0, u"docutils-0.10-py33_0.tar.bz2"),
        (2, u"dynd-python-0.3.0-np17py26_0.tar.bz2"),
        (1, u"dynd-python-0.3.0-np17py27_0.tar.bz2"),
        (0, u"dynd-python-0.3.0-np17py33_0.tar.bz2"),
        (0, u"enaml-0.7.6-py27_0.tar.bz2"),
        (0, u"erlang-R15B01-0.tar.bz2"),
        (1, u"flask-0.9-py26_0.tar.bz2"),
        (0, u"flask-0.9-py27_0.tar.bz2"),
        (0, u"freetype-2.4.10-0.tar.bz2"),
        (1, u"gdata-2.0.17-py26_0.tar.bz2"),
        (0, u"gdata-2.0.17-py27_0.tar.bz2"),
        (3, u"gevent-0.13.7-py26_0.tar.bz2"),
        (2, u"gevent-0.13.7-py27_0.tar.bz2"),
        (1, u"gevent-0.13.8-py26_0.tar.bz2"),
        (0, u"gevent-0.13.8-py27_0.tar.bz2"),
        (3, u"gevent-websocket-0.3.6-py26_1.tar.bz2"),
        (1, u"gevent-websocket-0.3.6-py26_2.tar.bz2"),
        (2, u"gevent-websocket-0.3.6-py27_1.tar.bz2"),
        (0, u"gevent-websocket-0.3.6-py27_2.tar.bz2"),
        (3, u"gevent_zeromq-0.2.5-py26_1.tar.bz2"),
        (1, u"gevent_zeromq-0.2.5-py26_2.tar.bz2"),
        (2, u"gevent_zeromq-0.2.5-py27_1.tar.bz2"),
        (0, u"gevent_zeromq-0.2.5-py27_2.tar.bz2"),
        (1, u"googlecl-0.9.12-py26_0.tar.bz2"),
        (0, u"googlecl-0.9.12-py27_0.tar.bz2"),
        (2, u"greenlet-0.4.0-py26_0.tar.bz2"),
        (1, u"greenlet-0.4.0-py27_0.tar.bz2"),
        (0, u"greenlet-0.4.0-py33_0.tar.bz2"),
        (1, u"grin-1.2.1-py26_1.tar.bz2"),
        (0, u"grin-1.2.1-py27_1.tar.bz2"),
        (5, u"h5py-2.1.1-np15py26_0.tar.bz2"),
        (4, u"h5py-2.1.1-np15py27_0.tar.bz2"),
        (3, u"h5py-2.1.1-np16py26_0.tar.bz2"),
        (2, u"h5py-2.1.1-np16py27_0.tar.bz2"),
        (1, u"h5py-2.1.1-np17py26_0.tar.bz2"),
        (0, u"h5py-2.1.1-np17py27_0.tar.bz2"),
        (0, u"hdf5-1.8.9-0.tar.bz2"),
        (1, u"imaging-1.1.7-py26_2.tar.bz2"),
        (0, u"imaging-1.1.7-py27_2.tar.bz2"),
        (5, u"ipython-0.13.1-py26_1.tar.bz2"),
        (4, u"ipython-0.13.1-py27_1.tar.bz2"),
        (3, u"ipython-0.13.1-py33_1.tar.bz2"),
        (2, u"ipython-0.13.2-py26_0.tar.bz2"),
        (1, u"ipython-0.13.2-py27_0.tar.bz2"),
        (0, u"ipython-0.13.2-py33_0.tar.bz2"),
        (2, u"jinja2-2.6-py26_0.tar.bz2"),
        (1, u"jinja2-2.6-py27_0.tar.bz2"),
        (0, u"jinja2-2.6-py33_0.tar.bz2"),
        (0, u"jpeg-8d-0.tar.bz2"),
        (0, u"libdynd-0.3.0-0.tar.bz2"),
        (0, u"libevent-2.0.20-0.tar.bz2"),
        (1, u"libnetcdf-4.2.1.1-0.tar.bz2"),
        (0, u"libnetcdf-4.2.1.1-1.tar.bz2"),
        (0, u"libpng-1.5.13-1.tar.bz2"),
        (0, u"libxml2-2.9.0-0.tar.bz2"),
        (0, u"libxslt-1.1.28-0.tar.bz2"),
        (0, u"llvm-3.2-0.tar.bz2"),
        (5, u"llvmpy-0.11.1-py26_0.tar.bz2"),
        (4, u"llvmpy-0.11.1-py27_0.tar.bz2"),
        (3, u"llvmpy-0.11.1-py33_0.tar.bz2"),
        (2, u"llvmpy-0.11.2-py26_0.tar.bz2"),
        (1, u"llvmpy-0.11.2-py27_0.tar.bz2"),
        (0, u"llvmpy-0.11.2-py33_0.tar.bz2"),
        (5, u"lxml-3.0.2-py26_0.tar.bz2"),
        (4, u"lxml-3.0.2-py27_0.tar.bz2"),
        (3, u"lxml-3.0.2-py33_0.tar.bz2"),
        (2, u"lxml-3.2.0-py26_0.tar.bz2"),
        (1, u"lxml-3.2.0-py27_0.tar.bz2"),
        (0, u"lxml-3.2.0-py33_0.tar.bz2"),
        (11, u"matplotlib-1.2.0-np15py26_1.tar.bz2"),
        (10, u"matplotlib-1.2.0-np15py27_1.tar.bz2"),
        (9, u"matplotlib-1.2.0-np16py26_1.tar.bz2"),
        (8, u"matplotlib-1.2.0-np16py27_1.tar.bz2"),
        (7, u"matplotlib-1.2.0-np17py26_1.tar.bz2"),
        (6, u"matplotlib-1.2.0-np17py27_1.tar.bz2"),
        (5, u"matplotlib-1.2.0-np17py33_1.tar.bz2"),
        (4, u"matplotlib-1.2.1-np16py26_1.tar.bz2"),
        (3, u"matplotlib-1.2.1-np16py27_1.tar.bz2"),
        (2, u"matplotlib-1.2.1-np17py26_1.tar.bz2"),
        (1, u"matplotlib-1.2.1-np17py27_1.tar.bz2"),
        (0, u"matplotlib-1.2.1-np17py33_1.tar.bz2"),
        (6, u"mdp-3.3-np15py26_0.tar.bz2"),
        (5, u"mdp-3.3-np15py27_0.tar.bz2"),
        (4, u"mdp-3.3-np16py26_0.tar.bz2"),
        (3, u"mdp-3.3-np16py27_0.tar.bz2"),
        (2, u"mdp-3.3-np17py26_0.tar.bz2"),
        (1, u"mdp-3.3-np17py27_0.tar.bz2"),
        (0, u"mdp-3.3-np17py33_0.tar.bz2"),
        (2, u"meta-0.4.2.dev-py26_0.tar.bz2"),
        (1, u"meta-0.4.2.dev-py27_0.tar.bz2"),
        (0, u"meta-0.4.2.dev-py33_0.tar.bz2"),
        (1, u"mpi4py-1.3-py26_0.tar.bz2"),
        (0, u"mpi4py-1.3-py27_0.tar.bz2"),
        (0, u"mpich2-1.4.1p1-0.tar.bz2"),
        (4, u"netcdf4-1.0.4-np16py26_0.tar.bz2"),
        (3, u"netcdf4-1.0.4-np16py27_0.tar.bz2"),
        (2, u"netcdf4-1.0.4-np17py26_0.tar.bz2"),
        (1, u"netcdf4-1.0.4-np17py27_0.tar.bz2"),
        (0, u"netcdf4-1.0.4-np17py33_0.tar.bz2"),
        (2, u"networkx-1.7-py26_0.tar.bz2"),
        (1, u"networkx-1.7-py27_0.tar.bz2"),
        (0, u"networkx-1.7-py33_0.tar.bz2"),
        (5, u"nltk-2.0.4-np15py26_0.tar.bz2"),
        (4, u"nltk-2.0.4-np15py27_0.tar.bz2"),
        (3, u"nltk-2.0.4-np16py26_0.tar.bz2"),
        (2, u"nltk-2.0.4-np16py27_0.tar.bz2"),
        (1, u"nltk-2.0.4-np17py26_0.tar.bz2"),
        (0, u"nltk-2.0.4-np17py27_0.tar.bz2"),
        (5, u"nose-1.2.1-py26_0.tar.bz2"),
        (4, u"nose-1.2.1-py27_0.tar.bz2"),
        (3, u"nose-1.2.1-py33_0.tar.bz2"),
        (2, u"nose-1.3.0-py26_0.tar.bz2"),
        (1, u"nose-1.3.0-py27_0.tar.bz2"),
        (0, u"nose-1.3.0-py33_0.tar.bz2"),
        (8, u"numba-0.7.0-np16py26_1.tar.bz2"),
        (7, u"numba-0.7.0-np16py27_1.tar.bz2"),
        (6, u"numba-0.7.0-np17py26_1.tar.bz2"),
        (5, u"numba-0.7.0-np17py27_1.tar.bz2"),
        (4, u"numba-0.8.1-np16py26_0.tar.bz2"),
        (3, u"numba-0.8.1-np16py27_0.tar.bz2"),
        (2, u"numba-0.8.1-np17py26_0.tar.bz2"),
        (1, u"numba-0.8.1-np17py27_0.tar.bz2"),
        (0, u"numba-0.8.1-np17py33_0.tar.bz2"),
        (11, u"numexpr-2.0.1-np16py26_1.tar.bz2"),
        (7, u"numexpr-2.0.1-np16py26_2.tar.bz2"),
        (3, u"numexpr-2.0.1-np16py26_3.tar.bz2"),
        (15, u"numexpr-2.0.1-np16py26_ce0.tar.bz2"),
        (10, u"numexpr-2.0.1-np16py27_1.tar.bz2"),
        (6, u"numexpr-2.0.1-np16py27_2.tar.bz2"),
        (2, u"numexpr-2.0.1-np16py27_3.tar.bz2"),
        (14, u"numexpr-2.0.1-np16py27_ce0.tar.bz2"),
        (9, u"numexpr-2.0.1-np17py26_1.tar.bz2"),
        (5, u"numexpr-2.0.1-np17py26_2.tar.bz2"),
        (1, u"numexpr-2.0.1-np17py26_3.tar.bz2"),
        (13, u"numexpr-2.0.1-np17py26_ce0.tar.bz2"),
        (8, u"numexpr-2.0.1-np17py27_1.tar.bz2"),
        (4, u"numexpr-2.0.1-np17py27_2.tar.bz2"),
        (0, u"numexpr-2.0.1-np17py27_3.tar.bz2"),
        (12, u"numexpr-2.0.1-np17py27_ce0.tar.bz2"),
        (11, u"numpy-1.5.1-py26_3.tar.bz2"),
        (10, u"numpy-1.5.1-py27_3.tar.bz2"),
        (9, u"numpy-1.6.2-py26_3.tar.bz2"),
        (7, u"numpy-1.6.2-py26_4.tar.bz2"),
        (8, u"numpy-1.6.2-py27_3.tar.bz2"),
        (6, u"numpy-1.6.2-py27_4.tar.bz2"),
        (5, u"numpy-1.7.0-py26_0.tar.bz2"),
        (4, u"numpy-1.7.0-py27_0.tar.bz2"),
        (3, u"numpy-1.7.0-py33_0.tar.bz2"),
        (2, u"numpy-1.7.1-py26_0.tar.bz2"),
        (1, u"numpy-1.7.1-py27_0.tar.bz2"),
        (0, u"numpy-1.7.1-py33_0.tar.bz2"),
        (5, u"opencv-2.4.2-np15py26_1.tar.bz2"),
        (4, u"opencv-2.4.2-np15py27_1.tar.bz2"),
        (3, u"opencv-2.4.2-np16py26_1.tar.bz2"),
        (2, u"opencv-2.4.2-np16py27_1.tar.bz2"),
        (1, u"opencv-2.4.2-np17py26_1.tar.bz2"),
        (0, u"opencv-2.4.2-np17py27_1.tar.bz2"),
        (0, u"openssl-1.0.1c-0.tar.bz2"),
        (0, u"ordereddict-1.1-py26_0.tar.bz2"),
        (13, u"pandas-0.10.0-np16py26_0.tar.bz2"),
        (12, u"pandas-0.10.0-np16py27_0.tar.bz2"),
        (11, u"pandas-0.10.0-np17py26_0.tar.bz2"),
        (10, u"pandas-0.10.0-np17py27_0.tar.bz2"),
        (9, u"pandas-0.10.1-np16py26_0.tar.bz2"),
        (8, u"pandas-0.10.1-np16py27_0.tar.bz2"),
        (7, u"pandas-0.10.1-np17py26_0.tar.bz2"),
        (6, u"pandas-0.10.1-np17py27_0.tar.bz2"),
        (5, u"pandas-0.10.1-np17py33_0.tar.bz2"),
        (4, u"pandas-0.11.0-np16py26_1.tar.bz2"),
        (3, u"pandas-0.11.0-np16py27_1.tar.bz2"),
        (2, u"pandas-0.11.0-np17py26_1.tar.bz2"),
        (1, u"pandas-0.11.0-np17py27_1.tar.bz2"),
        (0, u"pandas-0.11.0-np17py33_1.tar.bz2"),
        (25, u"pandas-0.8.1-np16py26_0.tar.bz2"),
        (24, u"pandas-0.8.1-np16py27_0.tar.bz2"),
        (23, u"pandas-0.8.1-np17py26_0.tar.bz2"),
        (22, u"pandas-0.8.1-np17py27_0.tar.bz2"),
        (21, u"pandas-0.9.0-np16py26_0.tar.bz2"),
        (20, u"pandas-0.9.0-np16py27_0.tar.bz2"),
        (19, u"pandas-0.9.0-np17py26_0.tar.bz2"),
        (18, u"pandas-0.9.0-np17py27_0.tar.bz2"),
        (17, u"pandas-0.9.1-np16py26_0.tar.bz2"),
        (16, u"pandas-0.9.1-np16py27_0.tar.bz2"),
        (15, u"pandas-0.9.1-np17py26_0.tar.bz2"),
        (14, u"pandas-0.9.1-np17py27_0.tar.bz2"),
        (5, u"pip-1.2.1-py26_1.tar.bz2"),
        (4, u"pip-1.2.1-py27_1.tar.bz2"),
        (3, u"pip-1.2.1-py33_1.tar.bz2"),
        (2, u"pip-1.3.1-py26_1.tar.bz2"),
        (1, u"pip-1.3.1-py27_1.tar.bz2"),
        (0, u"pip-1.3.1-py33_1.tar.bz2"),
        (0, u"pixman-0.26.2-0.tar.bz2"),
        (2, u"ply-3.4-py26_0.tar.bz2"),
        (1, u"ply-3.4-py27_0.tar.bz2"),
        (0, u"ply-3.4-py33_0.tar.bz2"),
        (5, u"psutil-0.6.1-py26_0.tar.bz2"),
        (4, u"psutil-0.6.1-py27_0.tar.bz2"),
        (3, u"psutil-0.6.1-py33_0.tar.bz2"),
        (2, u"psutil-0.7.1-py26_0.tar.bz2"),
        (1, u"psutil-0.7.1-py27_0.tar.bz2"),
        (0, u"psutil-0.7.1-py33_0.tar.bz2"),
        (2, u"py-1.4.12-py26_0.tar.bz2"),
        (1, u"py-1.4.12-py27_0.tar.bz2"),
        (0, u"py-1.4.12-py33_0.tar.bz2"),
        (3, u"py2cairo-1.10.0-py26_0.tar.bz2"),
        (1, u"py2cairo-1.10.0-py26_1.tar.bz2"),
        (2, u"py2cairo-1.10.0-py27_0.tar.bz2"),
        (0, u"py2cairo-1.10.0-py27_1.tar.bz2"),
        (2, u"pycosat-0.6.0-py26_0.tar.bz2"),
        (1, u"pycosat-0.6.0-py27_0.tar.bz2"),
        (0, u"pycosat-0.6.0-py33_0.tar.bz2"),
        (2, u"pycparser-2.9.1-py26_0.tar.bz2"),
        (1, u"pycparser-2.9.1-py27_0.tar.bz2"),
        (0, u"pycparser-2.9.1-py33_0.tar.bz2"),
        (2, u"pycrypto-2.6-py26_0.tar.bz2"),
        (1, u"pycrypto-2.6-py27_0.tar.bz2"),
        (0, u"pycrypto-2.6-py33_0.tar.bz2"),
        (3, u"pycurl-7.19.0-py26_0.tar.bz2"),
        (1, u"pycurl-7.19.0-py26_2.tar.bz2"),
        (2, u"pycurl-7.19.0-py27_0.tar.bz2"),
        (0, u"pycurl-7.19.0-py27_2.tar.bz2"),
        (5, u"pyflakes-0.6.1-py26_0.tar.bz2"),
        (4, u"pyflakes-0.6.1-py27_0.tar.bz2"),
        (3, u"pyflakes-0.6.1-py33_0.tar.bz2"),
        (2, u"pyflakes-0.7.2-py26_0.tar.bz2"),
        (1, u"pyflakes-0.7.2-py27_0.tar.bz2"),
        (0, u"pyflakes-0.7.2-py33_0.tar.bz2"),
        (2, u"pygments-1.6-py26_0.tar.bz2"),
        (1, u"pygments-1.6-py27_0.tar.bz2"),
        (0, u"pygments-1.6-py33_0.tar.bz2"),
        (1, u"pyparsing-1.5.6-py26_0.tar.bz2"),
        (0, u"pyparsing-1.5.6-py27_0.tar.bz2"),
        (4, u"pysal-1.5.0-np15py27_0.tar.bz2"),
        (3, u"pysal-1.5.0-np16py27_0.tar.bz2"),
        (1, u"pysal-1.5.0-np16py27_1.tar.bz2"),
        (2, u"pysal-1.5.0-np17py27_0.tar.bz2"),
        (0, u"pysal-1.5.0-np17py27_1.tar.bz2"),
        (1, u"pysam-0.6-py26_0.tar.bz2"),
        (0, u"pysam-0.6-py27_0.tar.bz2"),
        (1, u"pyside-1.1.2-py26_0.tar.bz2"),
        (0, u"pyside-1.1.2-py27_0.tar.bz2"),
        (3, u"pytables-2.4.0-np16py26_0.tar.bz2"),
        (2, u"pytables-2.4.0-np16py27_0.tar.bz2"),
        (1, u"pytables-2.4.0-np17py26_0.tar.bz2"),
        (0, u"pytables-2.4.0-np17py27_0.tar.bz2"),
        (3, u"pytest-2.3.4-py26_0.tar.bz2"),
        (1, u"pytest-2.3.4-py26_1.tar.bz2"),
        (2, u"pytest-2.3.4-py27_0.tar.bz2"),
        (0, u"pytest-2.3.4-py27_1.tar.bz2"),
        (4, u"python-2.6.8-6.tar.bz2"),
        (3, u"python-2.7.3-7.tar.bz2"),
        (2, u"python-2.7.4-0.tar.bz2"),
        (1, u"python-3.3.0-4.tar.bz2"),
        (0, u"python-3.3.1-0.tar.bz2"),
        (5, u"pytz-2012j-py26_0.tar.bz2"),
        (4, u"pytz-2012j-py27_0.tar.bz2"),
        (3, u"pytz-2012j-py33_0.tar.bz2"),
        (2, u"pytz-2013b-py26_0.tar.bz2"),
        (1, u"pytz-2013b-py27_0.tar.bz2"),
        (0, u"pytz-2013b-py33_0.tar.bz2"),
        (2, u"pyyaml-3.10-py26_0.tar.bz2"),
        (1, u"pyyaml-3.10-py27_0.tar.bz2"),
        (0, u"pyyaml-3.10-py33_0.tar.bz2"),
        (5, u"pyzmq-2.2.0.1-py26_0.tar.bz2"),
        (2, u"pyzmq-2.2.0.1-py26_1.tar.bz2"),
        (4, u"pyzmq-2.2.0.1-py27_0.tar.bz2"),
        (1, u"pyzmq-2.2.0.1-py27_1.tar.bz2"),
        (3, u"pyzmq-2.2.0.1-py33_0.tar.bz2"),
        (0, u"pyzmq-2.2.0.1-py33_1.tar.bz2"),
        (0, u"qt-4.7.4-0.tar.bz2"),
        (0, u"readline-6.2-0.tar.bz2"),
        (0, u"redis-2.6.9-0.tar.bz2"),
        (1, u"redis-py-2.7.2-py26_0.tar.bz2"),
        (0, u"redis-py-2.7.2-py27_0.tar.bz2"),
        (5, u"requests-0.13.9-py26_0.tar.bz2"),
        (4, u"requests-0.13.9-py27_0.tar.bz2"),
        (3, u"requests-0.13.9-py33_0.tar.bz2"),
        (2, u"requests-1.2.0-py26_0.tar.bz2"),
        (1, u"requests-1.2.0-py27_0.tar.bz2"),
        (0, u"requests-1.2.0-py33_0.tar.bz2"),
        (0, u"rope-0.9.4-py27_0.tar.bz2"),
        (9, u"scikit-image-0.8.2-np16py26_0.tar.bz2"),
        (4, u"scikit-image-0.8.2-np16py26_1.tar.bz2"),
        (8, u"scikit-image-0.8.2-np16py27_0.tar.bz2"),
        (3, u"scikit-image-0.8.2-np16py27_1.tar.bz2"),
        (7, u"scikit-image-0.8.2-np17py26_0.tar.bz2"),
        (2, u"scikit-image-0.8.2-np17py26_1.tar.bz2"),
        (6, u"scikit-image-0.8.2-np17py27_0.tar.bz2"),
        (1, u"scikit-image-0.8.2-np17py27_1.tar.bz2"),
        (5, u"scikit-image-0.8.2-np17py33_0.tar.bz2"),
        (0, u"scikit-image-0.8.2-np17py33_1.tar.bz2"),
        (9, u"scikit-learn-0.13-np15py26_1.tar.bz2"),
        (8, u"scikit-learn-0.13-np15py27_1.tar.bz2"),
        (7, u"scikit-learn-0.13-np16py26_1.tar.bz2"),
        (6, u"scikit-learn-0.13-np16py27_1.tar.bz2"),
        (5, u"scikit-learn-0.13-np17py26_1.tar.bz2"),
        (4, u"scikit-learn-0.13-np17py27_1.tar.bz2"),
        (3, u"scikit-learn-0.13.1-np16py26_0.tar.bz2"),
        (2, u"scikit-learn-0.13.1-np16py27_0.tar.bz2"),
        (1, u"scikit-learn-0.13.1-np17py26_0.tar.bz2"),
        (0, u"scikit-learn-0.13.1-np17py27_0.tar.bz2"),
        (11, u"scipy-0.11.0-np15py26_3.tar.bz2"),
        (10, u"scipy-0.11.0-np15py27_3.tar.bz2"),
        (9, u"scipy-0.11.0-np16py26_3.tar.bz2"),
        (8, u"scipy-0.11.0-np16py27_3.tar.bz2"),
        (7, u"scipy-0.11.0-np17py26_3.tar.bz2"),
        (6, u"scipy-0.11.0-np17py27_3.tar.bz2"),
        (5, u"scipy-0.11.0-np17py33_3.tar.bz2"),
        (4, u"scipy-0.12.0-np16py26_0.tar.bz2"),
        (3, u"scipy-0.12.0-np16py27_0.tar.bz2"),
        (2, u"scipy-0.12.0-np17py26_0.tar.bz2"),
        (1, u"scipy-0.12.0-np17py27_0.tar.bz2"),
        (0, u"scipy-0.12.0-np17py33_0.tar.bz2"),
        (1, u"shiboken-1.1.2-py26_0.tar.bz2"),
        (0, u"shiboken-1.1.2-py27_0.tar.bz2"),
        (5, u"six-1.2.0-py26_0.tar.bz2"),
        (4, u"six-1.2.0-py27_0.tar.bz2"),
        (3, u"six-1.2.0-py33_0.tar.bz2"),
        (2, u"six-1.3.0-py26_0.tar.bz2"),
        (1, u"six-1.3.0-py27_0.tar.bz2"),
        (0, u"six-1.3.0-py33_0.tar.bz2"),
        (5, u"sphinx-1.1.3-py26_2.tar.bz2"),
        (2, u"sphinx-1.1.3-py26_3.tar.bz2"),
        (4, u"sphinx-1.1.3-py27_2.tar.bz2"),
        (1, u"sphinx-1.1.3-py27_3.tar.bz2"),
        (3, u"sphinx-1.1.3-py33_2.tar.bz2"),
        (0, u"sphinx-1.1.3-py33_3.tar.bz2"),
        (1, u"spyder-2.1.13-py27_0.tar.bz2"),
        (0, u"spyder-2.2.0-py27_0.tar.bz2"),
        (5, u"sqlalchemy-0.7.8-py26_0.tar.bz2"),
        (4, u"sqlalchemy-0.7.8-py27_0.tar.bz2"),
        (3, u"sqlalchemy-0.7.8-py33_0.tar.bz2"),
        (2, u"sqlalchemy-0.8.1-py26_0.tar.bz2"),
        (1, u"sqlalchemy-0.8.1-py27_0.tar.bz2"),
        (0, u"sqlalchemy-0.8.1-py33_0.tar.bz2"),
        (0, u"sqlite-3.7.13-0.tar.bz2"),
        (7, u"statsmodels-0.4.3-np16py26_0.tar.bz2"),
        (3, u"statsmodels-0.4.3-np16py26_1.tar.bz2"),
        (6, u"statsmodels-0.4.3-np16py27_0.tar.bz2"),
        (2, u"statsmodels-0.4.3-np16py27_1.tar.bz2"),
        (5, u"statsmodels-0.4.3-np17py26_0.tar.bz2"),
        (1, u"statsmodels-0.4.3-np17py26_1.tar.bz2"),
        (4, u"statsmodels-0.4.3-np17py27_0.tar.bz2"),
        (0, u"statsmodels-0.4.3-np17py27_1.tar.bz2"),
        (4, u"sympy-0.7.1-py26_0.tar.bz2"),
        (3, u"sympy-0.7.1-py27_0.tar.bz2"),
        (2, u"sympy-0.7.2-py26_0.tar.bz2"),
        (1, u"sympy-0.7.2-py27_0.tar.bz2"),
        (0, u"sympy-0.7.2-py33_0.tar.bz2"),
        (1, u"system-5.8-0.tar.bz2"),
        (0, u"system-5.8-1.tar.bz2"),
        (9, u"theano-0.5.0-np15py26_0.tar.bz2"),
        (8, u"theano-0.5.0-np15py27_0.tar.bz2"),
        (7, u"theano-0.5.0-np16py26_0.tar.bz2"),
        (3, u"theano-0.5.0-np16py26_1.tar.bz2"),
        (6, u"theano-0.5.0-np16py27_0.tar.bz2"),
        (2, u"theano-0.5.0-np16py27_1.tar.bz2"),
        (5, u"theano-0.5.0-np17py26_0.tar.bz2"),
        (1, u"theano-0.5.0-np17py26_1.tar.bz2"),
        (4, u"theano-0.5.0-np17py27_0.tar.bz2"),
        (0, u"theano-0.5.0-np17py27_1.tar.bz2"),
        (0, u"tk-8.5.13-0.tar.bz2"),
        (5, u"tornado-2.4.1-py26_0.tar.bz2"),
        (4, u"tornado-2.4.1-py27_0.tar.bz2"),
        (3, u"tornado-2.4.1-py33_0.tar.bz2"),
        (2, u"tornado-3.0.1-py26_0.tar.bz2"),
        (1, u"tornado-3.0.1-py27_0.tar.bz2"),
        (0, u"tornado-3.0.1-py33_0.tar.bz2"),
        (0, u"util-linux-2.21-0.tar.bz2"),
        (1, u"werkzeug-0.8.3-py26_0.tar.bz2"),
        (0, u"werkzeug-0.8.3-py27_0.tar.bz2"),
        (5, u"xlrd-0.9.0-py26_0.tar.bz2"),
        (4, u"xlrd-0.9.0-py27_0.tar.bz2"),
        (3, u"xlrd-0.9.0-py33_0.tar.bz2"),
        (2, u"xlrd-0.9.2-py26_0.tar.bz2"),
        (1, u"xlrd-0.9.2-py27_0.tar.bz2"),
        (0, u"xlrd-0.9.2-py33_0.tar.bz2"),
        (3, u"xlwt-0.7.4-py26_0.tar.bz2"),
        (2, u"xlwt-0.7.4-py27_0.tar.bz2"),
        (1, u"xlwt-0.7.5-py26_0.tar.bz2"),
        (0, u"xlwt-0.7.5-py27_0.tar.bz2"),
        (0, u"yaml-0.1.4-0.tar.bz2"),
        (1, u"zeromq-2.2.0-0.tar.bz2"),
        (0, u"zeromq-2.2.0-1.tar.bz2"),
        (0, u"zlib-1.2.7-0.tar.bz2"),
    ]

    eq = r.generate_version_eq(v, groups, specs)
    e2 = sorted(((i, w[j]) for i, j in eq), key=lambda i: i[1])
    assert e2 == [q for q in e if q[0] > 0]