pypa / pipenv

Python Development Workflow for Humans.
https://pipenv.pypa.io
MIT License
24.83k stars 1.87k forks source link

11.1.8+ broke pipenv lock/install of --dev -e . #1653

Closed hynek closed 6 years ago

hynek commented 6 years ago

Sorry I don’t have the time for the full template dance, but I woke up to a broken pipenv update and could pinpoint it to:

This is what I get with latest pipenv on lock:

Locking [dev-packages] dependencies…
ate(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/resolver.py", line 275, in _iter_dependencies
    for dependency in self.repository.get_dependencies(ireq):
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/repositories/pypi.py", line 182, in get_dependencies
    'Please run "$ pipenv-resolver {0!r} --verbose" to debug.'.format(str(ireq.req))
ValueError: Your dependencies could not be resolved.
Please run "$ pipenv-resolver 'None' --verbose" to debug.

This is what I get with latest pipenv on pipenv install --dev -e . :

Installing -e .…
Obtaining file:///Users/hynek/tmp/t
Installing collected packages: t
  Found existing installation: t 1.0
    Uninstalling t-1.0:
      Successfully uninstalled t-1.0
  Running setup.py develop for t
Successfully installed t

Adding -e . to Pipfile's [dev-packages]…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
ate(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/resolver.py", line 275, in _iter_dependencies
    for dependency in self.repository.get_dependencies(ireq):
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/repositories/pypi.py", line 182, in get_dependencies
    'Please run "$ pipenv-resolver {0!r} --verbose" to debug.'.format(str(ireq.req))
ValueError: Your dependencies could not be resolved.
Please run "$ pipenv-resolver 'None' --verbose" to debug.
hynek commented 6 years ago

Here we go

> /Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py(176)get_dependencies()
-> try:
(Pdb) p self.use_json
False
(Pdb) l
171                     except TypeError:
172                         json_raised = True
173                         json_results = set()
174
175                 legacy_raised = False
176  ->             try:
177                     legacy_results = self.get_legacy_dependencies(ireq)
178                 except Exception:
179                     legacy_raised = True
180                     legacy_results = set()
181
(Pdb) n
> /Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py(177)get_dependencies()
-> legacy_results = self.get_legacy_dependencies(ireq)
(Pdb) n
TypeError: _prepare_file() got an unexpected keyword argument 'ignore_requires_python'

Don't do silent Pokemon catches Kenneth! ;)

kennethreitz commented 6 years ago

I knew that was a bad idea — i blame logging

hynek commented 6 years ago

Quick zoom:

1 pipenv-resolver users hynek tmp python3 6 2018-03-10 15-31-34

kennethreitz commented 6 years ago

This is actually reminiscent of another bug another user is having. _prepare_file absolutely takes ignore_requires_python.

hynek commented 6 years ago

Hmmm:

(Pdb++) inspect.signature(reqset._prepare_file)
<Signature (finder, req_to_install, require_hashes=False, ignore_dependencies=False)>
kennethreitz commented 6 years ago

Confirmed in the tar.gz from PyPI. So, it's not an upload issue.

kennethreitz commented 6 years ago

(finder, req_to_install, require_hashes=False, ignore_dependencies=False, ignore_requires_python=False)

hynek commented 6 years ago

I'm gonna guess it’s some import problem and it uses pip.req.req_set.RequirementSet from pip instead the vendored version…

kennethreitz commented 6 years ago

We put our vendored version at the beginning of sys.modules in our __init__

kennethreitz commented 6 years ago

but i'll change it to be on the safe side

kennethreitz commented 6 years ago

no, everything it should be working as expected.

https://github.com/pypa/pipenv/blob/master/pipenv/__init__.py#L11

kennethreitz commented 6 years ago

you have to invoke the function from a pipenv import, obviously (as the codebase does).

I don't think that exception's normally raised.

hynek commented 6 years ago

I’ve got some bad news:

(Pdb++) sys.path
['/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/..', '/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched', '/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/vendor', '/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched', '/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/vendor', '/Users/hynek/.local/venvs/pipenv/bin', '/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/_pdbpp_path_hack', '/Users/hynek/.local/venvs/pipenv/lib/python36.zip', '/Users/hynek/.local/venvs/pipenv/lib/python3.6', '/Users/hynek/.local/venvs/pipenv/lib/python3.6/lib-dynload', '/Users/hynek/.pyenv/versions/3.6.4/lib/python3.6', '/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages']

The first entry is site-packages of the venv.

kennethreitz commented 6 years ago

omg, thank you

kennethreitz commented 6 years ago

this explains so much

kennethreitz commented 6 years ago

https://github.com/pypa/pipenv/commit/96735aca592d68a2d9f21997690d3bb7dc567107

hynek commented 6 years ago

It probably also explains the wildly different behaviors we observed.

kennethreitz commented 6 years ago

Cutting a release as soon as CI passes.

kennethreitz commented 6 years ago

Thanks for your due-diligence on this one, @hynek. You've really helped a lot.

You also have earned a cookie: 🍪

hynek commented 6 years ago

👐


FYI, in https://github.com/pypa/pipenv/blob/a8b75f42cd3eaa56a406b75d75c3313bd772161c/pipenv/patched/piptools/repositories/pypi.py#L180 legacy_raised cannot ever be True.

kennethreitz commented 6 years ago

Aware — it's there for later iteration.

kennethreitz commented 6 years ago

the original logging mechanisms are back in place now, by not catching all exceptions:

Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Could not find a version that matches aohweofihwaoeifhowef
Tried: (no version found at all)
Please check your version specifier and version number. See PEP440 for more information.
kennethreitz commented 6 years ago

now that i've made these changes, i'm somehow reproducing your error in tests/ci.

hynek commented 6 years ago

You do? SEE I’M NOT CRAZY!

techalchemy commented 6 years ago

FWIW I knew there was a reason I made a local descendent of RequirementSet when I was doing this and imported from .req_set! Can you bisect back to a specific change that caused this?

kennethreitz commented 6 years ago

non deterministic

hynek commented 6 years ago

I love how you use your $200 font literally everywhere.

kennethreitz commented 6 years ago

I got it for free, for the record :)

hynek commented 6 years ago

Yeah, rub it in. :P

kennethreitz commented 6 years ago

okay, fixed it!

techalchemy commented 6 years ago

Commit???

kennethreitz commented 6 years ago

i was doing something dumb

kennethreitz commented 6 years ago

tests running now, assuming successful pass, will be released momentarily.

kennethreitz commented 6 years ago

v11.3.2 releaed. Please test @hynek :)

hynek commented 6 years ago
$ pipenv lock
Locking [dev-packages] dependencies…
nged, best_matches = self._resolve_one_round()
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/resolver.py", line 297, in _iter_dependencies
    dependencies = self.repository.get_dependencies(ireq)
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/repositories/pypi.py", line 171, in get_dependencies
    legacy_results = self.get_legacy_dependencies(ireq)
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/piptools/repositories/pypi.py", line 206, in get_legacy_dependencies
    result = reqset._prepare_file(self.finder, ireq, ignore_requires_python=True)
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/../pipenv/patched/pip/req/req_set.py", line 699, in _prepare_file
    self.requires_python = check_dist_requires_python(dist, absorb=False)
TypeError: check_dist_requires_python() got an unexpected keyword argument 'absorb'

Seems like you missed some import?

hynek commented 6 years ago

also:

$ pipenv-resolver 'autobahn[encryption,accelerate,asyncio,serialization]'
Traceback (most recent call last):
  File "/Users/hynek/.local/bin/pipenv-resolver", line 11, in <module>
    sys.exit(main())
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/resolver.py", line 54, in main
    results = resolve(packages, pre=do_pre, sources=project.sources, verbose=is_verbose, clear=do_clear)
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/resolver.py", line 52, in resolve
    return pipenv.utils.resolve_deps(packages, which, project=project, pre=pre, sources=sources, clear=clear, verbose=verbose)
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/utils.py", line 398, in resolve_deps
    resolved_tree, resolver = actually_resolve_reps(deps, index_lookup, markers_lookup, project, sources, verbose, clear, pre)
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/utils.py", line 331, in actually_resolve_reps
    resolved_tree.update(resolver.resolve(max_rounds=PIPENV_MAX_ROUNDS))
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 102, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 200, in _resolve_one_round
    for dep in self._iter_dependencies(best_match):
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched/piptools/resolver.py", line 284, in _iter_dependencies
    for dependency in self.repository.get_dependencies(ireq):
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 171, in get_dependencies
    legacy_results = self.get_legacy_dependencies(ireq)
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 206, in get_legacy_dependencies
    result = reqset._prepare_file(self.finder, ireq, ignore_requires_python=True)
  File "/Users/hynek/.local/venvs/pipenv/lib/python3.6/site-packages/pipenv/patched/pip/req/req_set.py", line 699, in _prepare_file
    self.requires_python = check_dist_requires_python(dist, absorb=False)
TypeError: check_dist_requires_python() got an unexpected keyword argument 'absorb'
techalchemy commented 6 years ago

Presumably that is also import related. It seems like the prescribed path modifications are not happening at runtime.

techalchemy commented 6 years ago

Likely because we need to set PYTHONPATH as well

kennethreitz commented 6 years ago

yes working on it

techalchemy commented 6 years ago

(Or unset it—do you have it set?)

techalchemy commented 6 years ago

Lol. What changed about it though?

kennethreitz commented 6 years ago

making all of pip relative imports

kennethreitz commented 6 years ago

just patching sys.path again

kennethreitz commented 6 years ago

i need to take a break — @techalchemy feel free to dig into this.

kennethreitz commented 6 years ago

k got 11.3.3 out — think it fixes this for good

kennethreitz commented 6 years ago

will take a deeper look in the morning though, this is the "putting out the fire" release

hynek commented 6 years ago

Something is still broken. I could narrow it down to installing keyring which will just silently exit with code 1.

Verbose output is more helpful:

``` Locking [dev-packages] dependencies… Using pip: -i https://pypi.python.org/simple ROUND 1 Current constraints: Finding the best candidates: Finding secondary dependencies: ------------------------------------------------------------ Result of round 1: stable, done Locking [packages] dependencies… Using pip: -i https://pypi.python.org/simple ROUND 1 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 1: not stable ROUND 2 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 2: not stable ROUND 3 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 3: not stable ROUND 4 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 4: not stable ROUND 5 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 5: not stable ROUND 6 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 6: not stable ROUND 7 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 7: not stable ROUND 8 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 8: not stable ROUND 9 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 9: not stable ROUND 10 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 10: not stable ROUND 11 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 11: not stable ROUND 12 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 12: not stable ROUND 13 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 13: not stable ROUND 14 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 14: not stable ROUND 15 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 15: not stable ROUND 16 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 16: not stable Using pip: -i https://pypi.python.org/simple ROUND 1 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 1: not stable ROUND 2 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 2: not stable ROUND 3 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 3: not stable ROUND 4 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 4: not stable ROUND 5 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 5: not stable ROUND 6 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 6: not stable ROUND 7 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 7: not stable ROUND 8 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 8: not stable ROUND 9 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 9: not stable ROUND 10 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 10: not stable ROUND 11 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 11: not stable ROUND 12 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 12: not stable ROUND 13 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 13: not stable ROUND 14 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 14: not stable ROUND 15 Current constraints: keyring Finding the best candidates: found candidate keyring==11.0.0 (constraint was ) Finding secondary dependencies: keyring==11.0.0 requires keyring==11.0.0; python_version == ">=2.7" New dependencies found in this round: adding ['keyring', '==11.0.0', '[]'] Removed dependencies in this round: Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 15: not stable ROUND 16 Current constraints: keyring==11.0.0 Finding the best candidates: found candidate keyring==11.0.0 (constraint was ==11.0.0) Finding secondary dependencies: New dependencies found in this round: Removed dependencies in this round: removing ['keyring', '==11.0.0', '[]'] Unsafe dependencies in this round: ------------------------------------------------------------ Result of round 16: not stable INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl INFO:pip.download:File was already downloaded /Users/hynek/Library/Caches/pipenv/wheels/keyring-11.0.0-py2.py3-none-any.whl ```

It seems like it catches itself in an infinite loop flip-flopping the conditional marker.

I wonder if that’s related to the bug I keep complaining about but that I wasn’t able to reproduce where pipenv will randomly flip-flop markers on a lock.

techalchemy commented 6 years ago

Whoa wtf. @hynek can you pipenv-resolver keyring --debug --clear --verbose ? Is this into a clean environment? Did you explicitly pin keyring? And does this only happen when you put it in dev-packages?

kennethreitz commented 6 years ago

i think that's for another issue :)

hynek commented 6 years ago

JFTR, I cannot reproduce it anymore either which makes me 99.9% confident it’s the same bug that haunts me by occasionally stripping markers from the lock files.