Description
Issue description
I'm seeing behavior where repeated pipenv lock
s produces different Pipfile.lock
s.
One way to reproduce this problem is with a Pipfile
that depends on both gevent
and sqlalchemy
: example Pipfile.
gevent and sqlalchemy both depend on greenlet, but they use different environment markers:
gevent 21.12.0
depends ongreenlet >= 1.1.0, < 2.0; platform_python_implementation=="CPython"
: https://github.com/gevent/gevent/blob/21.12.0/setup.py#L196-L205sqlalchemy 1.4.31
depends ongreenlet != 0.4.17;python_version>='3' and (platform_machine=='aarch64' or (platform_machine=='ppc64le' or (platform_machine=='x86_64' or (platform_machine=='amd64' or (platform_machine=='AMD64' or (platform_machine=='win32' or platform_machine=='WIN32'))))))
: https://github.com/sqlalchemy/sqlalchemy/blob/rel_1_4_31/setup.cfg#L44- (this crazy environment marker is chosen very carefully to only match for platforms that already have a binary wheel for greenlet available: greenlet is not installed on Apple M1 sqlalchemy/sqlalchemy#7714 (comment))
Actual result
I haven't really dug into the pipenv source code to understand the source of the nondeterminism, but if you look at the pipenv lock --verbose
, you can see that one example starts with Reporter.adding_requirement(SpecifierRequirement('gevent'), None)
, and the other starts with Reporter.adding_requirement(SpecifierRequirement('sqlalchemy'), None)
. I'm not sure what the source of that difference in behavior is (perhaps things are getting put in a Python set
, and then getting iterated over, and python doesn't make any promises about the order of iteration there?)
Lock produces greenlet with gevent's markers
$ reset; pipenv lock --clear; rm -f Pipfile.lock; pipenv lock --verbose
Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success!
Updated Pipfile.lock (4a8c07)!
Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Reporter.starting()
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting()
Reporter.adding_requirement(SpecifierRequirement('gevent'), None)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('gevent'), None)
Reporter.adding_requirement(SpecifierRequirement('sqlalchemy'), None)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('sqlalchemy'), None)
Reporter.starting_round(0)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(0)
Reporter.adding_requirement(SpecifierRequirement('zope.event'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('zope.event'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.adding_requirement(SpecifierRequirement('greenlet<2.0,>=1.1.0; platform_python_implementation == "CPython"'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('greenlet<2.0,>=1.1.0; platform_python_implementation == "CPython"'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.adding_requirement(SpecifierRequirement('zope.interface'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('zope.interface'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.ending_round(0, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(0, state)
Reporter.starting_round(1)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(1)
Reporter.adding_requirement(SpecifierRequirement('greenlet!=0.4.17; python_version >= "3" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32"))))))'), LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('greenlet!=0.4.17; python_version >= "3" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32"))))))'), LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))
Reporter.ending_round(1, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(1, state)
Reporter.starting_round(2)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(2)
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/d4/00/7474a1f27efa5c023fe114d84801fe2ded66db2fa5e72253d698b9a95a2a/greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b (from https://pypi.org/simple/greenlet/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/d4/00/7474a1f27efa5c023fe114d84801fe2ded66db2fa5e72253d698b9a95a2a/greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b (from https://pypi.org/simple/greenlet/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)'))
Reporter.ending_round(2, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(2, state)
Reporter.starting_round(3)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(3)
Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)'))
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)'))
Reporter.ending_round(3, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(3, state)
Reporter.starting_round(4)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(4)
Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)'))
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)'))
Reporter.ending_round(4, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(4, state)
Reporter.starting_round(5)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(5)
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/3b/02/8d4d27b1cacaac2d129a27d17a22d92a2a5eedcb7817d4ed8ab0d4daf5c4/setuptools-60.9.3-py3-none-any.whl#sha256=e4f30b9f84e5ab3decf945113119649fec09c1fc3507c6ebffec75646c56e62b (from https://pypi.org/simple/setuptools/) (requires-python:>=3.7)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/3b/02/8d4d27b1cacaac2d129a27d17a22d92a2a5eedcb7817d4ed8ab0d4daf5c4/setuptools-60.9.3-py3-none-any.whl#sha256=e4f30b9f84e5ab3decf945113119649fec09c1fc3507c6ebffec75646c56e62b (from https://pypi.org/simple/setuptools/) (requires-python:>=3.7)'))
Reporter.ending_round(5, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(5, state)
Reporter.starting_round(6)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(6)
Reporter.ending(State(mapping=OrderedDict([('gevent', LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), ('sqlalchemy', LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)')), ('greenlet', LinkCandidate('https://files.pythonhosted.org/packages/d4/00/7474a1f27efa5c023fe114d84801fe2ded66db2fa5e72253d698b9a95a2a/greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b (from https://pypi.org/simple/greenlet/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), ('zope-event', LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)')), ('zope-interface', LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)')), ('setuptools', LinkCandidate('https://files.pythonhosted.org/packages/3b/02/8d4d27b1cacaac2d129a27d17a22d92a2a5eedcb7817d4ed8ab0d4daf5c4/setuptools-60.9.3-py3-none-any.whl#sha256=e4f30b9f84e5ab3decf945113119649fec09c1fc3507c6ebffec75646c56e62b (from https://pypi.org/simple/setuptools/) (requires-python:>=3.7)'))]), criteria={'gevent': Criterion((SpecifierRequirement('gevent'), via=None)), 'sqlalchemy': Criterion((SpecifierRequirement('sqlalchemy'), via=None)), 'zope-event': Criterion((SpecifierRequirement('zope.event'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'greenlet': Criterion((SpecifierRequirement('greenlet<2.0,>=1.1.0; platform_python_implementation == "CPython"'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), (SpecifierRequirement('greenlet!=0.4.17; python_version >= "3" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32"))))))'), via=LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))), 'zope-interface': Criterion((SpecifierRequirement('zope.interface'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'setuptools': Criterion((SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), (SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)')), (SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)')))}))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending(State(mapping=OrderedDict([('gevent', LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), ('sqlalchemy', LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)')), ('greenlet', LinkCandidate('https://files.pythonhosted.org/packages/d4/00/7474a1f27efa5c023fe114d84801fe2ded66db2fa5e72253d698b9a95a2a/greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b (from https://pypi.org/simple/greenlet/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), ('zope-event', LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)')), ('zope-interface', LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)')), ('setuptools', LinkCandidate('https://files.pythonhosted.org/packages/3b/02/8d4d27b1cacaac2d129a27d17a22d92a2a5eedcb7817d4ed8ab0d4daf5c4/setuptools-60.9.3-py3-none-any.whl#sha256=e4f30b9f84e5ab3decf945113119649fec09c1fc3507c6ebffec75646c56e62b (from https://pypi.org/simple/setuptools/) (requires-python:>=3.7)'))]), criteria={'gevent': Criterion((SpecifierRequirement('gevent'), via=None)), 'sqlalchemy': Criterion((SpecifierRequirement('sqlalchemy'), via=None)), 'zope-event': Criterion((SpecifierRequirement('zope.event'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'greenlet': Criterion((SpecifierRequirement('greenlet<2.0,>=1.1.0; platform_python_implementation == "CPython"'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), (SpecifierRequirement('greenlet!=0.4.17; python_version >= "3" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32"))))))'), via=LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))), 'zope-interface': Criterion((SpecifierRequirement('zope.interface'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'setuptools': Criterion((SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), (SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)')), (SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)')))}))
⠙ Locking...
✔ Success!
Updated Pipfile.lock (4a8c07)!
$ jq '.default.greenlet.markers' Pipfile.lock
"platform_python_implementation == 'CPython'"
Lock produces greenlet with sqlalchemy's markers
$ reset; pipenv lock --clear; rm -f Pipfile.lock; pipenv lock --verbose
Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success!
Updated Pipfile.lock (4a8c07)!
Courtesy Notice: Pipenv found itself running within a virtual environment, so it will automatically use that environment, instead of creating its own for any project. You can set PIPENV_IGNORE_VIRTUALENVS=1 to force pipenv to ignore that environment and create its own instead. You can set PIPENV_VERBOSITY=-1 to suppress this warning.
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Reporter.starting()
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting()
Reporter.adding_requirement(SpecifierRequirement('sqlalchemy'), None)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('sqlalchemy'), None)
Reporter.adding_requirement(SpecifierRequirement('gevent'), None)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('gevent'), None)
Reporter.starting_round(0)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(0)
Reporter.adding_requirement(SpecifierRequirement('greenlet!=0.4.17; python_version >= "3" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32"))))))'), LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('greenlet!=0.4.17; python_version >= "3" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32"))))))'), LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)'))
Reporter.ending_round(0, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(0, state)
Reporter.starting_round(1)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(1)
Reporter.adding_requirement(SpecifierRequirement('zope.interface'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('zope.interface'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.adding_requirement(SpecifierRequirement('greenlet<2.0,>=1.1.0; platform_python_implementation == "CPython"'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('greenlet<2.0,>=1.1.0; platform_python_implementation == "CPython"'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.adding_requirement(SpecifierRequirement('zope.event'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('zope.event'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))
Reporter.ending_round(1, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(1, state)
Reporter.starting_round(2)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(2)
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/d4/00/7474a1f27efa5c023fe114d84801fe2ded66db2fa5e72253d698b9a95a2a/greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b (from https://pypi.org/simple/greenlet/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/d4/00/7474a1f27efa5c023fe114d84801fe2ded66db2fa5e72253d698b9a95a2a/greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b (from https://pypi.org/simple/greenlet/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)'))
Reporter.ending_round(2, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(2, state)
Reporter.starting_round(3)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(3)
Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)'))
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)'))
Reporter.ending_round(3, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(3, state)
Reporter.starting_round(4)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(4)
Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.adding_requirement(SpecifierRequirement('setuptools'), LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)'))
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)'))
Reporter.ending_round(4, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(4, state)
Reporter.starting_round(5)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(5)
Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/3b/02/8d4d27b1cacaac2d129a27d17a22d92a2a5eedcb7817d4ed8ab0d4daf5c4/setuptools-60.9.3-py3-none-any.whl#sha256=e4f30b9f84e5ab3decf945113119649fec09c1fc3507c6ebffec75646c56e62b (from https://pypi.org/simple/setuptools/) (requires-python:>=3.7)'))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.pinning(LinkCandidate('https://files.pythonhosted.org/packages/3b/02/8d4d27b1cacaac2d129a27d17a22d92a2a5eedcb7817d4ed8ab0d4daf5c4/setuptools-60.9.3-py3-none-any.whl#sha256=e4f30b9f84e5ab3decf945113119649fec09c1fc3507c6ebffec75646c56e62b (from https://pypi.org/simple/setuptools/) (requires-python:>=3.7)'))
Reporter.ending_round(5, state)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending_round(5, state)
Reporter.starting_round(6)
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.starting_round(6)
Reporter.ending(State(mapping=OrderedDict([('sqlalchemy', LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)')), ('gevent', LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), ('greenlet', LinkCandidate('https://files.pythonhosted.org/packages/d4/00/7474a1f27efa5c023fe114d84801fe2ded66db2fa5e72253d698b9a95a2a/greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b (from https://pypi.org/simple/greenlet/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), ('zope-event', LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)')), ('zope-interface', LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)')), ('setuptools', LinkCandidate('https://files.pythonhosted.org/packages/3b/02/8d4d27b1cacaac2d129a27d17a22d92a2a5eedcb7817d4ed8ab0d4daf5c4/setuptools-60.9.3-py3-none-any.whl#sha256=e4f30b9f84e5ab3decf945113119649fec09c1fc3507c6ebffec75646c56e62b (from https://pypi.org/simple/setuptools/) (requires-python:>=3.7)'))]), criteria={'sqlalchemy': Criterion((SpecifierRequirement('sqlalchemy'), via=None)), 'gevent': Criterion((SpecifierRequirement('gevent'), via=None)), 'greenlet': Criterion((SpecifierRequirement('greenlet!=0.4.17; python_version >= "3" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32"))))))'), via=LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)')), (SpecifierRequirement('greenlet<2.0,>=1.1.0; platform_python_implementation == "CPython"'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'zope-interface': Criterion((SpecifierRequirement('zope.interface'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'zope-event': Criterion((SpecifierRequirement('zope.event'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'setuptools': Criterion((SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), (SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)')), (SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)')))}))
INFO:pipenv.patched.notpip._internal.resolution.resolvelib.reporter:Reporter.ending(State(mapping=OrderedDict([('sqlalchemy', LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)')), ('gevent', LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), ('greenlet', LinkCandidate('https://files.pythonhosted.org/packages/d4/00/7474a1f27efa5c023fe114d84801fe2ded66db2fa5e72253d698b9a95a2a/greenlet-1.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ec8c433b3ab0419100bd45b47c9c8551248a5aee30ca5e9d399a0b57ac04651b (from https://pypi.org/simple/greenlet/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), ('zope-event', LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)')), ('zope-interface', LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)')), ('setuptools', LinkCandidate('https://files.pythonhosted.org/packages/3b/02/8d4d27b1cacaac2d129a27d17a22d92a2a5eedcb7817d4ed8ab0d4daf5c4/setuptools-60.9.3-py3-none-any.whl#sha256=e4f30b9f84e5ab3decf945113119649fec09c1fc3507c6ebffec75646c56e62b (from https://pypi.org/simple/setuptools/) (requires-python:>=3.7)'))]), criteria={'sqlalchemy': Criterion((SpecifierRequirement('sqlalchemy'), via=None)), 'gevent': Criterion((SpecifierRequirement('gevent'), via=None)), 'greenlet': Criterion((SpecifierRequirement('greenlet!=0.4.17; python_version >= "3" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32"))))))'), via=LinkCandidate('https://files.pythonhosted.org/packages/e6/15/739ade8af241b23e60d632d0efb49736bd22aa65f23ec595447085c5bd36/SQLAlchemy-1.4.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c (from https://pypi.org/simple/sqlalchemy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7)')), (SpecifierRequirement('greenlet<2.0,>=1.1.0; platform_python_implementation == "CPython"'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'zope-interface': Criterion((SpecifierRequirement('zope.interface'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'zope-event': Criterion((SpecifierRequirement('zope.event'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)'))), 'setuptools': Criterion((SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/68/13/95b3272019d69984ba044c6783de5efea76b0d92c97d96bfe832ec7dc6fa/gevent-21.12.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=05c5e8a50cd6868dd36536c92fb4468d18090e801bd63611593c0717bab63692 (from https://pypi.org/simple/gevent/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5)')), (SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/9e/85/b45408c64f3b888976f1d5b37eed8d746b8d5729a66a49ec846fda27d371/zope.event-4.5.0-py2.py3-none-any.whl#sha256=2666401939cdaa5f4e0c08cf7f20c9b21423b95e88f4675b1443973bdb080c42 (from https://pypi.org/simple/zope-event/)')), (SpecifierRequirement('setuptools'), via=LinkCandidate('https://files.pythonhosted.org/packages/e9/56/945a20c9efe2a5f68cc176b525131830c4392992ceccef91902d823de7ef/zope.interface-5.4.0-cp38-cp38-manylinux2010_x86_64.whl#sha256=db1fa631737dab9fa0b37f3979d8d2631e348c3b4e8325d6873c2541d0ae5a48 (from https://pypi.org/simple/zope-interface/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)')))}))
⠸ Locking...
✔ Success!
Updated Pipfile.lock (4a8c07)!
$ jq '.default.greenlet.markers' Pipfile.lock
"python_version >= '3' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32'))))))"
Expected result
I'm pretty sure that in this case, sqlalchemy's markers should not be making it into the Pipfile.lock
, but I don't really know how to interpret PEP 508 in the context of a tool like pipenv (PEP 508 seems to be written more from the perspective of a tool like pip, where the job is to install dependencies, and it actually makes sense to evaluate environment markers, because pip knows which machine it's installing dependencies on).
Either way, I'm confident that pipenv should behave deterministically: either always including those environment markers from sqlalchemy, or always not including those markers.
Steps to replicate
$ docker run $(docker build -q https://github.com/jfly/2022-02-22-pipenv-nondeterminism.git#main)
attempt 1: greenlet markers="python_version >= '3' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32'))))))"
attempt 2: greenlet markers="platform_python_implementation == 'CPython'"
attempt 3: greenlet markers="platform_python_implementation == 'CPython'"
...
Workaround
This all seems to go away if I explicitly add greenlet
as a top dependency:
$ diff --git a/Pipfile b/Pipfile
index a749f2e..985783f 100644
--- a/Pipfile
+++ b/Pipfile
@@ -3,4 +3,5 @@ python_version = "3.8"
[packages]
gevent = "*"
+greenlet = "*"
sqlalchemy = "*"
$ docker run $(docker build . -q)
...
attempt 201: greenlet markers=null
attempt 202: greenlet markers=null
attempt 203: greenlet markers=null
attempt 204: greenlet markers=null
attempt 205: greenlet markers=null