Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pipenv lock changes markers in a non deterministic way #4660

Closed
matpompili opened this issue Mar 27, 2021 · 25 comments · Fixed by #5373
Closed

Pipenv lock changes markers in a non deterministic way #4660

matpompili opened this issue Mar 27, 2021 · 25 comments · Fixed by #5373
Labels
Status: Awaiting Update ⏳ This issue requires more information before assistance can be provided. triage Type: Bug 🐛 This issue is a bug.

Comments

@matpompili
Copy link

Issue description

I'm running pipenv version 2020.11.15 in a Gitlab CI pipeline.
I use pipenv lock and then git diff Pipfile.lock to see if the Pipfile.lock was updated, meaning that the version on the repository is not up-to-date anymore.

Occasionally, pipenv updates the lock file just changing the Python 4 specifier as follows:

diff --git a/Pipfile.lock b/Pipfile.lock
index c8d17c6..0228d56 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -225,7 +225,7 @@
                 "sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6",
                 "sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d"
             ],
-            "markers": "python_version >= '3.6' and python_version < '4.0'",
+            "markers": "python_version >= '3.6' and python_version < '4'",
             "version": "==5.8.0"
         },
         "jedi": {
@@ -881,7 +881,7 @@
                 "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df",
                 "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937"
             ],
-            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4.0'",
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'",
             "version": "==1.26.4"
         },
         "wcwidth": {

And sometimes it does the opposite thing, changing from python_version < '4' to python_version < '4.0'.
This of course breaks the pipeline, because there is difference in the Pipfile.lock, even though that difference is not significant.

Expected result

pipenv lock should change the lock file in a deterministic way, either always with python_version < '4' or python_version < '4.0'.

@matpompili
Copy link
Author

As a temporary workaround, I am removing the "markers": "python_version lines before comparing the old and new Pipfiles.

Here the section of my .gitlab-ci.yml:

pipenv:
  stage: analysis
  script:
    - cp Pipfile.lock Pipfile.lock.old
    - pipenv lock
    - sed -i '/\"markers\":\ \"python_version/d' Pipfile.lock # remove markers
    - sed -i '/\"markers\":\ \"python_version/d' Pipfile.lock.old # remove markers
    - git --no-pager diff --no-index Pipfile.lock Pipfile.lock.old | tee diff.log
    - RESULT=$( head -n 1 diff.log | { grep -o 'diff' || true; } )
    - RETURN=0
    - if [ "$RESULT" = "diff" ]; then RETURN=1; echo "Something changed!"; fi 
    - exit $RETURN
  after_script:
    - pip install anybadge
    - RESULT=$( head -n 1 diff.log | { grep -o 'diff' || true; } )
    - SCORE=passed
    - if [ "$RESULT" = "diff" ]; then SCORE=outdated; echo "Something changed!"; fi 
    - anybadge -l pipenv -v $SCORE -f pipenv.svg outdated=red passed=green
  artifacts:
    paths:
      - pipenv.svg
      - diff.log
    when: always

@jshwi
Copy link

jshwi commented Aug 12, 2021

Hi, I am also getting this result, but on every pipenv lock call. It just goes back and forth between '4' and '4.0'.

@matpompili
Copy link
Author

matpompili commented Aug 25, 2021

Something changed in the latest version, now I am getting both python_version and python_full_version markers.
The following change to the .gitlab-ci.yml works

 - sed -i '/\"markers\":[[:print:]]*python_[[:print:]]*version/d' Pipfile.lock  # remove markers
 - sed -i '/\"markers\":[[:print:]]*python_[[:print:]]*version/d' Pipfile.lock.old  # remove markers

@matteius
Copy link
Member

@matpompili and @jshwi please see: #4967
TLDR: Pip 22.0.4 upgrade branch seems to make this deterministic again.

Closing this ticket now since we are already tracking it in the newer ticket.

@porn
Copy link

porn commented May 18, 2022

Still having the same behaviour after upgrading to pip 22.0.4. Using pipenv 2022.5.2:

diff --git tasks/Pipfile.lock tasks/Pipfile.lock
index f039f8175..086dbcb0c 100644
--- tasks/Pipfile.lock
+++ tasks/Pipfile.lock
@@ -68,7 +68,7 @@
                 "sha256:211800f725cdecedcbcf4c753bbd22d248312b37d130f06045434acb7d9b34e1",
                 "sha256:35dd9063244263e63bd0bd24ea61e3015b00272cead084b2c40d788b0f857c46"
             ],
-            "markers": "python_version >= '3.7' and python_version < '4.0'",
+            "markers": "python_version >= '3.7' and python_version < '4'",
             "version": "==1.10.0"
         },
         "certifi": {

reproduced with pip 22.1 as well.

...is it just me?

@gitpushdashf
Copy link

Still having the same behaviour after upgrading to pip 22.0.4. Using pipenv 2022.5.2:

diff --git tasks/Pipfile.lock tasks/Pipfile.lock
index f039f8175..086dbcb0c 100644
--- tasks/Pipfile.lock
+++ tasks/Pipfile.lock
@@ -68,7 +68,7 @@
                 "sha256:211800f725cdecedcbcf4c753bbd22d248312b37d130f06045434acb7d9b34e1",
                 "sha256:35dd9063244263e63bd0bd24ea61e3015b00272cead084b2c40d788b0f857c46"
             ],
-            "markers": "python_version >= '3.7' and python_version < '4.0'",
+            "markers": "python_version >= '3.7' and python_version < '4'",
             "version": "==1.10.0"
         },
         "certifi": {

reproduced with pip 22.1 as well.

...is it just me?

I'm getting this as well.

@matteius
Copy link
Member

Sounds like pip released a new version that may have changed in it, but pipenv vendors in pip 22.0.4 and nothing has been done to test the new version of pip. Perhaps this is a pip bug.

@matteius matteius reopened this Jul 28, 2022
@matteius
Copy link
Member

Want to check the behavior of the newly vendored pip==22.2.1 that is in main against this ticket because I saw something odd working on vistir where re-locking changed the markers from my initial lock (which had problematic markers). If anyone has energy to see if they can reproduce this issue on pipenv main or not, will let me know if I need to track down a Pip issue report I read about once (where perhaps the fix for this was reverted).

@porn
Copy link

porn commented Aug 1, 2022

Hey @matteius ,

using pip 22.2.1 and pipenv 2022.7.24 keeps altering python_full_version and python_version randomly:

diff --git tasks/Pipfile.lock tasks/Pipfile.lock
index 2149cfcdd0..2eeb60add2 100644
--- tasks/Pipfile.lock
+++ tasks/Pipfile.lock
@@ -84,7 +84,7 @@
                 "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d",
                 "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"
             ],
-            "markers": "python_full_version >= '3.6.0'",
+            "markers": "python_version >= '3.6'",
             "version": "==2022.6.15"
         },
         "cffi": {

@matteius
Copy link
Member

matteius commented Aug 1, 2022

I believe this is not an issue on the main branch as we force the usage of the vendor'd pip which eliminates the using pip VERSION_X with pipenv, as it uses a consistent version of pip for resolution.

@gitpushdashf
Copy link

Still having this on the latest pipenv which should have the fix, right?

@matteius
Copy link
Member

matteius commented Aug 8, 2022

@gitpushdashf Well technically it was vendoring of pip that fixed it and then we of course continue to vendor in new versions of pip as they are released. We recently merged in a change that hasn't been released to force the environment to use the vendor'd version of pip in more places but it has not been released yet. There are two possibilities -- one is that the version of pip you have installed doesn't match the version pipenv has vendored and that could perhaps create inconsistencies. Or it is possible that something changed again in pip creating this inconsistency, but it was definitely pip vendoring that fixed it the prior time.

@gitpushdashf
Copy link

Interesting! I get the inconsistency between runs, however, on the same system. Could that happen from mismatched pip versions, locally?

@cclauss
Copy link
Contributor

cclauss commented Aug 28, 2022

These overly chatty diffs are slowing down our code reviews.

Would it be possible to create a command-line option --use-local-pip that causes pipenv not to use vendored pip? Or a --remove-markers-from-diff option that implements #4660 (comment) ?

@matteius
Copy link
Member

@cclauss how would the --use-local-pip cause it to be less chatty? -- I think it would be more chatty because there would be more versions of pip in use for a project across users which would cause the markers to be different. I'm not a big fan of user installed pips because it has created its own share of issues, plus for locking we never did use local pip, the resolver has always been vendor'd pip's internal APIs, and it wouldn't be possible to guarantee the local pip has same APIs. We would also loose the index restricted packages patching, a patch for specifiers, and potentially some other things that the pipenv locking behaviors rely on. We dropped pip-shims (which is a good thing), so we really require locking to depend on pip==22.2.2

Also, we just merged in these two PRs that should help in a big way in the next release to not have the markers change during lock (though adding a new dependency could change the ordering, we'll have to see how that goes):
#5286
#5299

I'd recommend we see how that behaves in the next release. We could consider a no-markers or remove-markers option, but I think that would also cause problems for packages that should have markers.

@gitpushdashf
Copy link

I don't think this is fixed, unfortunately.

I ran locking once with the new 2022.8.30 version. I ran it again, and the lock file was the same.

However, the third time, I did get a difference:

diff --git a/Pipfile.lock b/Pipfile.lock
index 3fd567d..ad561b4 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -487,7 +487,7 @@
                 "sha256:0df5a63d74990b4d9318f8749bcb1c4b170799099e5f84cfef72c798f3d46db9",
                 "sha256:870e98c53b0f461065cce9db7be4864ea2ceb5de28dc97e1efa443a338f5ec28"
             ],
-            "markers": "python_version >= '3.7' and python_version < '4'",
+            "markers": "python_version >= '3.7' and python_full_version < '4.0.0'",
             "version": "==0.0.14"
         },
         "hos-simulator": {
@@ -715,7 +715,7 @@
                 "sha256:a6ea2b72ec4879b0265776df637ac4a5d1e4a7dc32fc7fca0c7abab38ee913be",
                 "sha256:e8a3ac93c1378623475e3561c3592392c447b03e7cba058f7c3fde026369213e"
             ],
-            "markers": "python_version >= '3.7' and python_version < '4'",
+            "markers": "python_version >= '3.7' and python_full_version < '4.0.0'",
             "version": "==0.9.1"
         },
         "python-dateutil": {
@@ -755,7 +755,7 @@
                 "sha256:419c4e67a2799bd1811f1284aea81488ca7fafbf3fe35724a0292f0b924e0807",
                 "sha256:a49e9ae54d2eb72b06c718e9d63721a1dc67b2f70e137a0ebeac3d035fa05a4c"
             ],
-            "markers": "python_version >= '3.7' and python_version < '4'",
+            "markers": "python_version >= '3.7' and python_full_version < '4.0.0'",
             "version": "==0.2.2"
         },
         "typing-extensions": {
@@ -778,7 +778,7 @@
                 "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e",
                 "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"
             ],
-            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'",
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_full_version < '4.0.0'",
             "version": "==1.26.12"
         },
         "werkzeug": {
@@ -1587,7 +1587,7 @@
                 "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e",
                 "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"
             ],
-            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'",
+            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_full_version < '4.0.0'",
             "version": "==1.26.12"
         },
         "webencodings": {

@matteius
Copy link
Member

matteius commented Sep 1, 2022

@gitpushdashf I've run pipenv lock on the pipenv project several times on the new 2022.8.31 and haven't seen the markers change yet -- wondering if you could check again?

@dqkqd
Copy link
Contributor

dqkqd commented Sep 2, 2022

I could reproduce this.

Pipfile
[dev-packages]
sphinx = "==4.*"
sphinx-click = "==4.*"
sphinxcontrib-spelling = "==7.*"
click = "==8.0.3"
stdeb = {version="*", markers="sys_platform == 'linux'"}
zipp = {version = "==3.6.0", markers = "python_version < '3.10'"}
pre-commit = "==2.*"
atomicwrites = {version = "*", markers="sys_platform == 'win32'"}
pytest-cov = "==3.*"
typing-extensions = "==4.*"

[packages]

[scripts]
tests = "bash ./run-tests.sh"
test = "pytest -vvs"

[pipenv]
allow_prereleases = true
script.sh
#!/usr/bin/env bash

pipenv --rm
pipenv lock --dev

for i in {1..10}:
do
    mv Pipfile.lock Pipfile2.lock
    pipenv lock --dev &> /dev/null
    echo "attemp $i"
    diff Pipfile.lock Pipfile2.lock | grep "markers"
done
Dockerfile
FROM archlinux

RUN pacman -Syu diffutils python3 python-pip --noconfirm
RUN python -m pip install --upgrade pip pipenv

WORKDIR /root
COPY Pipfile .
COPY script.sh .

ENTRYPOINT ["./script.sh"]
Result
No virtualenv has been created for this project yet!
Aborted!
Creating a virtualenv for this project...
Pipfile: /root/Pipfile
Using /usr/sbin/python3 (3.10.6) to create virtualenv...
⠦ Creating virtual environment...created virtual environment CPython3.10.6.final.0-64 in 335ms
  creator CPython3Posix(dest=/root/.local/share/virtualenvs/root-BuDEOXnJ, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv)
    added seed packages: pip==22.2.2, setuptools==65.3.0, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

✔ Successfully created virtual environment!
Virtualenv location: /root/.local/share/virtualenvs/root-BuDEOXnJ
Locking [packages] dependencies...
Locking [dev-packages] dependencies...
Building requirements...
Resolving dependencies...
⠼ Locking..✔ Success!
Warning: atomicwrites==1.4.1; sys_platform == 'win32' doesn't match your environment, its dependencies won't be resolved.
zipp==3.6.0; python_version < '3.10' doesn't match your environment, its dependencies won't be resolved.
Updated Pipfile.lock (7ff3cb)!
attemp 1:
attemp 2:
attemp 3:
attemp 4:
attemp 5:
attemp 6:
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
attemp 7:
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
<             "markers": "python_version >= '3.6'",
>             "markers": "python_full_version >= '3.6.0'",
attemp 8:
attemp 9:
attemp 10:

@matteius
Copy link
Member

matteius commented Sep 2, 2022

@dqkqd are you able to reproduce it with pipenv==2022.9.2?

@matteius matteius added the Status: Awaiting Update ⏳ This issue requires more information before assistance can be provided. label Sep 2, 2022
@dqkqd
Copy link
Contributor

dqkqd commented Sep 2, 2022

Yes, it still happens. I created a docker repo for this.

docker run $(docker build --quiet https://github.com/dqkqd/pipenv-issues-4660.git)

results:

pipenv, version 2022.9.2
attemp 1: same
attemp 2: same
attemp 3: same
attemp 4: same
attemp 5: same
attemp 6: same
attemp 7: same
attemp 8: same
attemp 9: same
attemp 10:
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",

@matteius matteius added Type: Bug 🐛 This issue is a bug. and removed Status: Awaiting Update ⏳ This issue requires more information before assistance can be provided. labels Sep 2, 2022
@matteius
Copy link
Member

matteius commented Sep 8, 2022

Awesome test project @dqkqd !!!

On 2022.9.4 I am getting same each run:

matteius@matteius-VirtualBox:~/pipenv-triage/pipenv-4101$ docker run $(docker build --quiet https://github.com/dqkqd/pipenv-issues-4660.git)
pipenv, version 2022.9.4
attemp 1: same
attemp 2: same
attemp 3: same
attemp 4: same
attemp 5: same
attemp 6: same
attemp 7: same
attemp 8: same
attemp 9: same
attemp 10: same
attemp 11: same
attemp 12: same

I didn't realize it stops at 15 -- but those were all same too.

@matteius
Copy link
Member

matteius commented Sep 8, 2022

I got what you got too on 2022.9.2 -- so I think this is truly fixed now. My belief is that the sorting helped a lot, but there was still an issue passing the constraints in as an environment variable and that was converted to NamedTemporaryFile in 2022.9.4 in order to solve an issue with windows environment variable lengths.

@matteius matteius added the Status: Awaiting Update ⏳ This issue requires more information before assistance can be provided. label Sep 8, 2022
@dqkqd
Copy link
Contributor

dqkqd commented Sep 8, 2022

This issue still occurs. Should I change script to whilte true instead?

   ~ ❯ docker run $(docker build --quiet https://github.com/dqkqd/pipenv-issues-4660.git)         28s
pipenv, version 2022.9.4
attemp 1: same
attemp 2: same
attemp 3: same
attemp 4: same
attemp 5: same
attemp 6: same
attemp 7: same
attemp 8: same
attemp 9:
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",
<             "markers": "python_full_version >= '3.6.0'",
>             "markers": "python_version >= '3.6'",

@matteius
Copy link
Member

Perhaps too early to tell, but I maybe am onto something about this issue -- I removed the lru_cache decorators around the marker generation in requirementslib in this PR: #5373

I updated @dqkqd example Dockerfile to install this branch, and ran it three times without issue:

matteius@matteius-VirtualBox:~/pipenv-triage/pipenv-issues-4660$ vim Dockerfile 
matteius@matteius-VirtualBox:~/pipenv-triage/pipenv-issues-4660$ docker build .
Sending build context to Docker daemon  62.46kB
Step 1/7 : FROM archlinux
 ---> 546c416f6b9d
Step 2/7 : RUN pacman -Syu diffutils python3 python-pip git --noconfirm &> /dev/null
 ---> Using cache
 ---> 41664f828c96
Step 3/7 : RUN python -m pip install "git+https://github.com/pypa/pipenv.git@marker-determinism#egg=pipenv"  &> /dev/null
 ---> Running in 22c5f25c4438
Removing intermediate container 22c5f25c4438
 ---> c02c60d77ad3
Step 4/7 : WORKDIR /root
 ---> Running in d0e82db1ef6c
Removing intermediate container d0e82db1ef6c
 ---> 3333d4a56886
Step 5/7 : COPY Pipfile .
 ---> 42d116d6b71d
Step 6/7 : COPY script.sh .
 ---> f1089d4652f4
Step 7/7 : ENTRYPOINT ["./script.sh"]
 ---> Running in c0674607980b
Removing intermediate container c0674607980b
 ---> 964680f6585f
Successfully built 964680f6585f
matteius@matteius-VirtualBox:~/pipenv-triage/pipenv-issues-4660$ docker run 964680f6585f
pipenv, version 2022.9.22.dev0
attemp 1: same
attemp 2: same
attemp 3: same
attemp 4: same
attemp 5: same
attemp 6: same
attemp 7: same
attemp 8: same
attemp 9: same
attemp 10: same
attemp 11: same
attemp 12: same
attemp 13: same
attemp 14: same
attemp 15: same
matteius@matteius-VirtualBox:~/pipenv-triage/pipenv-issues-4660$ docker run 964680f6585f
pipenv, version 2022.9.22.dev0
attemp 1: same
attemp 2: same
attemp 3: same
attemp 4: same
attemp 5: same
attemp 6: same
attemp 7: same
attemp 8: same
attemp 9: same
attemp 10: same
attemp 11: same
attemp 12: same
attemp 13: same
attemp 14: same
attemp 15: same
matteius@matteius-VirtualBox:~/pipenv-triage/pipenv-issues-4660$ docker run 964680f6585f
pipenv, version 2022.9.22.dev0
attemp 1: same
attemp 2: same
attemp 3: same
attemp 4: same
attemp 5: same
attemp 6: same
attemp 7: same
attemp 8: same
attemp 9: same
attemp 10: same
attemp 11: same
attemp 12: same
attemp 13: same
attemp 14: same
attemp 15: same
matteius@matteius-VirtualBox:~/pipenv-triage/pipenv-issues-4660$ docker run 964680f6585f
pipenv, version 2022.9.22.dev0
attemp 1: same
attemp 2: same
attemp 3: same
attemp 4: same
attemp 5: same
attemp 6: same
attemp 7: same
attemp 8: same
attemp 9: same
attemp 10: same
attemp 11: same
attemp 12: same
attemp 13: same
attemp 14: same
attemp 15: same
matteius@matteius-VirtualBox:~/pipenv-triage/pipenv-issues-4660$ cat Dockerfile 
FROM archlinux

RUN pacman -Syu diffutils python3 python-pip git --noconfirm &> /dev/null
RUN python -m pip install "git+https://github.com/pypa/pipenv.git@marker-determinism#egg=pipenv"  &> /dev/null

WORKDIR /root
COPY Pipfile .
COPY script.sh .

ENTRYPOINT ["./script.sh"]

I also relocked pipenv 4 times and the markers only changed the first time suggesting that the branch that removes lru_cache makes it determinisitic. 🤞

@gitpushdashf
Copy link

This is great, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Awaiting Update ⏳ This issue requires more information before assistance can be provided. triage Type: Bug 🐛 This issue is a bug.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants
@matteius @porn @cclauss @matpompili @dqkqd @jshwi @gitpushdashf and others