I'm having trouble with a Python dependency on `js...
# general
n
I'm having trouble with a Python dependency on
jsonschema
. If I do a
pants export
without the
jsonschema
dependency to build a venv, enter that venv, and
pip install jsonschema[format-nongpl]
it works fine. It installs version 4.22. But if I do a
pants export
with that dependency I get:
Copy code
Dependency on jsonpointer (via: neptune>=1.5.0 -> bravado<12.0.0,>=11.0.0 -> bravado-core>=5.16.1 -> jsonschema[format-nongpl]>=2.5.1 -> jsonpointer>1.13; extra == "format-nongpl") not satisfied, no candidates found.

Dependency on rfc3339-validator (via: neptune>=1.5.0 -> bravado<12.0.0,>=11.0.0 -> bravado-core>=5.16.1 -> jsonschema[format-nongpl]>=2.5.1 -> rfc3339-validator; extra == "format-nongpl") not satisfied, no candidates found.

Dependency on rfc3986-validator (via: neptune>=1.5.0 -> bravado<12.0.0,>=11.0.0 -> bravado-core>=5.16.1 -> jsonschema[format-nongpl]>=2.5.1 -> rfc3986-validator>0.1.0; extra == "format-nongpl") not satisfied, no candidates found.

Dependency on webcolors (via: neptune>=1.5.0 -> bravado<12.0.0,>=11.0.0 -> bravado-core>=5.16.1 -> jsonschema[format-nongpl]>=2.5.1 -> webcolors; extra == "format-nongpl") not satisfied, no candidates found.
I think maybe it's related to https://github.com/python-jsonschema/jsonschema/issues/962 but I'm not sure why it's different via pants and via pip nor am I clear on what to do about it. Any ideas?
Interesting. If I revert the changes I made to my
requirements.txt
I still see this issue. So something changed "out in the world" rather than with any of my code. Per that bug it seems like maybe they were going to change the name of the extra from
format-nongpl
to
format_nongpl
and maybe that's what's messing everything up. I still don't understand why it works with pip and not pants though.
Huh! This doesn't make any sense at all. If I add an explicit:
Copy code
jsonschema[format-nongpl]
to my
requirements.txt
and change nothing else it works. so somehow when it's a transitive dependency things break but when listed explicitly it's fine.