Beispiel #1
0
def _test_combine_install_requirements_extras(with_extra, without_extra):
    combined = combine_install_requirements([without_extra, with_extra])
    assert str(combined) == str(with_extra)
    assert combined.extras == with_extra.extras

    combined = combine_install_requirements([with_extra, without_extra])
    assert str(combined) == str(with_extra)
    assert combined.extras == with_extra.extras
Beispiel #2
0
def test_combine_install_requirements(from_line):
    celery30 = from_line("celery>3.0", comes_from="-r requirements.in")
    celery31 = from_line("celery==3.1.1", comes_from=from_line("fake-package"))
    celery32 = from_line("celery<3.2")

    combined = combine_install_requirements([celery30, celery31])
    assert combined.comes_from == celery31.comes_from  # shortest string
    assert set(combined._source_ireqs) == {celery30, celery31}
    assert str(combined.req.specifier) == "==3.1.1,>3.0"

    combined_all = combine_install_requirements([celery32, combined])
    assert combined_all.comes_from is None
    assert set(combined_all._source_ireqs) == {celery30, celery31, celery32}
    assert str(combined_all.req.specifier) == "<3.2,==3.1.1,>3.0"
Beispiel #3
0
def test_combine_install_requirements_for_one_package_with_multiple_extras(
    from_line, ):
    """Regression test for https://github.com/jazzband/pip-tools/pull/1512"""
    pkg1 = from_line("ray[default]==1.1.1")
    pkg2 = from_line("ray[tune]==1.1.1")
    combined = combine_install_requirements([pkg1, pkg2])

    assert str(combined) == "ray[default,tune]==1.1.1"
Beispiel #4
0
def test_combine_install_requirements_with_paths(from_line, make_package):
    name = "fake_package_b"
    version = "1.0.0"

    test_package = make_package(name, version=version)
    fake_package = from_line(f"{name} @ {path_to_url(test_package)}")
    fake_package_name = from_line(f"{name}=={version}",
                                  comes_from=from_line(name))

    for pair in [(fake_package, fake_package_name),
                 (fake_package_name, fake_package)]:
        combined = combine_install_requirements(pair)
        assert str(combined.specifier) == str(fake_package_name.specifier)
        assert str(combined.link) == str(fake_package.link)
        assert str(combined.local_file_path) == str(
            fake_package.local_file_path)
        assert str(combined.original_link) == str(fake_package.original_link)
Beispiel #5
0
def test_iter_dependencies_after_combine_install_requirements(
        pypi_repository, base_resolver, make_package, from_line):
    res = base_resolver([], repository=pypi_repository)

    sub_deps = ["click"]
    package_a = make_package("package-a", install_requires=sub_deps)
    package_b = make_package("package-b", install_requires=["package-a"])

    local_package_a = from_line(path_to_url(package_a))
    assert [dep.name
            for dep in res._iter_dependencies(local_package_a)] == sub_deps

    package_a_from_b = from_line("package-a",
                                 comes_from=path_to_url(package_b))
    combined = combine_install_requirements(
        [local_package_a, package_a_from_b])
    assert [dep.name for dep in res._iter_dependencies(combined)] == sub_deps
Beispiel #6
0
def test_iter_dependencies_after_combine_install_requirements_extras(
        pypi_repository, base_resolver, make_package, from_line):
    res = base_resolver([], repository=pypi_repository)

    package_a = make_package("package-a",
                             extras_require={
                                 "click": ["click"],
                                 "celery": ["celery"]
                             })
    package_b = make_package("package-b", install_requires=["package-a"])

    local_package_a = from_line(path_to_url(package_a))
    assert [dep.name for dep in res._iter_dependencies(local_package_a)] == []

    package_a_from_b = from_line("package-a[click]",
                                 comes_from=path_to_url(package_b))
    package_a_with_other_extra = from_line("package-a[celery]")
    combined = combine_install_requirements(
        [local_package_a, package_a_from_b, package_a_with_other_extra])

    dependency_names = {dep.name for dep in res._iter_dependencies(combined)}
    assert {"celery", "click"}.issubset(dependency_names)