Description
Description
In the last couple of days, when pip install kestrel-jupyter==1.0.6
, it will fail with a pip
internal issue:
AssertionError: Internal issue: Candidate is not for this requirement jsonschema[format-nongpl,format-nongpl] vs jsonschema[format-nongpl]
The package kestrel-jupyter
has dependencies
jupyterlab-server
(fromjupyterlab
)stix2-validator
(fromstix-shifter
fromkestrel-lang
)
I checked that stix2-validator
requires jsonschema[format-nongpl]
.
And it looks like jupyterlab-server
only requires jsonschema
.
Usually this will not lead to anything wrong, but several people hit the same error when installing kestrel-jupyter
. The generated requirement jsonschema[format-nongpl,format-nongpl]
looks strange. When I check further with pip --debug
, it looks like pip
tries to satisfy jsonschema with extras format-nongpl
and format_nongpl
(hyphen and underscore). Not sure how this happened and whether this led to a dependency resolution failure.
Expected behavior
Success installation of kestrel-jupyter
.
I find a version of jupyterlab-server
that does not trigger the issue, so I released a new version of kestrel-jupyter
(1.0.7) to specify that version of jupyterlab-server
and temporarily mitigate the issue for users.
That is to say, this will work:
# in a clean Python venv with latest pip
pip install jupyterlab-server==2.15.2
pip install kestrel-jupyter==1.0.6
But the following will fail:
# in a clean Python venv with latest pip
# jupyterlab-server>=2.16 will be installed
pip install kestrel-jupyter==1.0.6
pip version
22.3.1
Python version
3.9
OS
macos
How to Reproduce
In a newly created Python venv, upgrade pip to the latest (22.3.1), then do:
pip install kestrel-jupyter==1.0.6
Output
ERROR: Exception:
Traceback (most recent call last):
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
status = run_func(*args)
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 247, in wrapper
return func(self, options, args)
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 400, in run
requirement_set = resolver.resolve(
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve
result = self._result = resolver.resolve(
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 481, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 373, in resolve
failure_causes = self._attempt_to_pin_criterion(name)
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 222, in _attempt_to_pin_criterion
satisfied = all(
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 223, in <genexpr>
self._p.is_satisfied_by(requirement=r, candidate=candidate)
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/provider.py", line 233, in is_satisfied_by
return requirement.is_satisfied_by(candidate)
File "/Users/subx/venv/test3/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py", line 84, in is_satisfied_by
assert candidate.name == self.name, (
AssertionError: Internal issue: Candidate is not for this requirement jsonschema[format-nongpl,format-nongpl] vs jsonschema[format-nongpl]
Code of Conduct
- I agree to follow the PSF Code of Conduct.