Here is an issue I recently ran into with Pipenv. pipenv lock tells me it cannot resolve the websockets dependency, because there is no version both >6 and <6. Not the nicest error message, but it makes sense that it wouldn’t be able to resolve that. So what dependencies are responsible for this?
pipenv graph has says there there are two dependencies that pull in websockets:
– websockets [required: >=4.0, installed: 5.0.1]
– websockets [required: >=6.0.0,<7.0.0, installed: 6.0]
What is the problem here? There should be a version of websockets that can satisfy both constraints, right?
It turns out that contrary to that output, which shows what is currently installed, pipenv lock actually tries to update sanic to a new version, with a different constraint. You can debug this using pipenv lock –verbose.
This ecosystem is super confusing. Here is the low-down:
- LevelDB is a (K/V-Store) database
- leveldown is a NodeJS binding.
- levelup is another NodeJS module, which wraps leveldown. However, it allows leveldown to be replaced with another backend.
In this way, you can use a single library and API – levelup – but with all kinds of different storage backends, from Redis, to SQL databases.
- Shell in a Box
Every time I have to deal with the Thumbor storage configuration options, I get really confused. For my own reference, here is what I need to know:
The key is in the terminology. The thing that thumbor calls “storage” is a different thing entirely than what they call “result storage”. “upload storage” is yet another thing.
Storage caches a) source files b) “crypto data” and c) the result of the “feature detectors” (see the very clean base class). You can then set the storage class to the Mixed Storage implementation, and can then use a separate storage class for each of the three types of data.
Result storage saves the processed results.
Upload storage is what backs Thumbor’s upload feature.