diff --git a/news/5486.bugfix.rst b/news/5486.bugfix.rst new file mode 100644 index 00000000..d7bb01d1 --- /dev/null +++ b/news/5486.bugfix.rst @@ -0,0 +1 @@ +Solve issue where null markers were getting added to lock file when extras were provided. diff --git a/pipenv/utils/dependencies.py b/pipenv/utils/dependencies.py index effb220c..17aa5f55 100644 --- a/pipenv/utils/dependencies.py +++ b/pipenv/utils/dependencies.py @@ -234,7 +234,8 @@ def clean_resolved_dep(dep, is_top_level=False, pipfile_entry=None): else: try: pipfile_entry = translate_markers(pipfile_entry) - lockfile["markers"] = pipfile_entry.get("markers") + if pipfile_entry.get("markers"): + lockfile["markers"] = pipfile_entry.get("markers") except TypeError: pass return {name: lockfile} diff --git a/tests/integration/test_lock.py b/tests/integration/test_lock.py index 723d45f0..37c82820 100644 --- a/tests/integration/test_lock.py +++ b/tests/integration/test_lock.py @@ -1,6 +1,5 @@ import json import os -import sys from pathlib import Path import pytest @@ -719,3 +718,17 @@ six = "*" assert c.returncode == 0 assert p.lockfile["prereq"]["six"]["index"] == "test" assert p.lockfile["default"]["requests"]["index"] == "test" + +def test_pinned_pipfile_no_null_markers_when_extras(pipenv_instance_pypi): + with pipenv_instance_pypi() as p: + with open(p.pipfile_path, "w") as f: + contents = """ +[packages] +dataclasses-json = {extras = ["dev"], version = "==0.5.7"} + """.strip() + f.write(contents) + c = p.pipenv("lock") + assert c.returncode == 0 + assert "dataclasses-json" in p.pipfile["packages"] + assert "dataclasses-json" in p.lockfile["default"] + assert "markers" not in p.lockfile["default"]["dataclasses-json"] \ No newline at end of file