Skip to content

Commit a402dac

Browse files
Ensure version match operator when building specifier from pipfile
1 parent cb23498 commit a402dac

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

pipenv/vendor/requirementslib/models/requirements.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
from pipenv.patched.pip._internal.req.req_install import InstallRequirement
3535
from pipenv.patched.pip._internal.utils.temp_dir import global_tempdir_manager
3636
from pipenv.patched.pip._internal.utils.urls import path_to_url, url_to_path
37-
from pipenv.patched.pip._vendor.distlib.util import cached_property
37+
from pipenv.patched.pip._vendor.distlib.util import cached_property, COMPARE_OP
3838
from pipenv.patched.pip._vendor.packaging.markers import Marker
3939
from pipenv.patched.pip._vendor.packaging.requirements import Requirement as PackagingRequirement
4040
from pipenv.patched.pip._vendor.packaging.specifiers import (
@@ -2551,6 +2551,10 @@ def from_pipfile(cls, name, pipfile):
25512551
if hasattr(pipfile, "keys"):
25522552
_pipfile = dict(pipfile).copy()
25532553
_pipfile["version"] = get_version(pipfile)
2554+
2555+
# We ensure version contains an operator. Default to equals "=="
2556+
if COMPARE_OP.match(_pipfile["version"]) is None:
2557+
_pipfile["version"] = "=={}".format(_pipfile["version"])
25542558
vcs = next(iter([vcs for vcs in VCS_LIST if vcs in _pipfile]), None)
25552559
if vcs:
25562560
_pipfile["vcs"] = vcs

tests/integration/test_install_basic.py

+17
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,23 @@ def test_install_without_dev(pipenv_instance_private_pypi):
9292

9393
@pytest.mark.basic
9494
@pytest.mark.install
95+
def test_install_with_version_req(pipenv_instance_pypi):
96+
"""Ensure that running `pipenv install` work when spec is package = "X.Y.Z". """
97+
with pipenv_instance_pypi(chdir=True) as p:
98+
with open(p.pipfile_path, "w") as f:
99+
contents = """
100+
[packages]
101+
fastapi = "0.95.0"
102+
""".strip()
103+
f.write(contents)
104+
c = p.pipenv("install")
105+
assert c.returncode == 0
106+
assert "fastapi" in p.pipfile["packages"]
107+
108+
109+
@pytest.mark.basic
110+
@pytest.mark.install
111+
@pytest.mark.resolver
95112
def test_install_without_dev_section(pipenv_instance_pypi):
96113
with pipenv_instance_pypi() as p:
97114
with open(p.pipfile_path, "w") as f:

0 commit comments

Comments
 (0)