Ensure version match operator when building specifier from pipfile

This commit is contained in:
Sébastien Coavoux
2023-06-30 14:07:39 -04:00
parent 2e913386cc
commit 2ca0ed4ca3
2 changed files with 21 additions and 1 deletions
+5 -1
View File
@@ -34,7 +34,7 @@ from pipenv.patched.pip._internal.req.constructors import (
from pipenv.patched.pip._internal.req.req_install import InstallRequirement
from pipenv.patched.pip._internal.utils.temp_dir import global_tempdir_manager
from pipenv.patched.pip._internal.utils.urls import path_to_url, url_to_path
from pipenv.patched.pip._vendor.distlib.util import cached_property
from pipenv.patched.pip._vendor.distlib.util import cached_property, COMPARE_OP
from pipenv.patched.pip._vendor.packaging.markers import Marker
from pipenv.patched.pip._vendor.packaging.requirements import Requirement as PackagingRequirement
from pipenv.patched.pip._vendor.packaging.specifiers import (
@@ -2544,6 +2544,10 @@ class Requirement(ReqLibBaseModel):
if hasattr(pipfile, "keys"):
_pipfile = dict(pipfile).copy()
_pipfile["version"] = get_version(pipfile)
# We ensure version contains an operator. Default to equals (==)
if _pipfile["version"] and COMPARE_OP.match(_pipfile["version"]) is None:
_pipfile["version"] = "=={}".format(_pipfile["version"])
vcs = next(iter([vcs for vcs in VCS_LIST if vcs in _pipfile]), None)
if vcs:
_pipfile["vcs"] = vcs
+16
View File
@@ -90,6 +90,22 @@ tablib = "*"
assert c.returncode == 0
@pytest.mark.basic
@pytest.mark.install
def test_install_with_version_req_default_operator(pipenv_instance_pypi):
"""Ensure that running `pipenv install` work when spec is package = "X.Y.Z". """
with pipenv_instance_pypi(chdir=True) as p:
with open(p.pipfile_path, "w") as f:
contents = """
[packages]
fastapi = "0.95.0"
""".strip()
f.write(contents)
c = p.pipenv("install")
assert c.returncode == 0
assert "fastapi" in p.pipfile["packages"]
@pytest.mark.basic
@pytest.mark.install
def test_install_without_dev_section(pipenv_instance_pypi):