VCR cassette responses often get saved as binary instead of a human-readable string. This makes inspecting the content difficult and depending on the VCR configuration, cassette matching impossible. This tool takes in a cassette directory and converts all binary response interactions to a human-readable string before dumping the yaml back to the cassette file. This allows for devs to properly inspect their cassette content while retaining all the original data - super useful if switching your VCR config from binary to strings.
# Takes something like the following from a vcrpy cassette:
interactions:
response:
body:
string: !!binary |
H4sIAAAAAAAAA4yRT0vEMBDFv0rJ1RaS/rc3xYJCVxZ3XfBUps0UI21a0lTUZb+7k0ovnvY4j997
byY5MyVZwUCaOm8kZEkEaZwJIRChyXIedk2eAEb8VjCfjc0Htpb4OykNzjNJrUGwKGtwcsjDKBA8
4OlRZEWSFFF0w3nBOYHLJK8DNQxISFmdng6uYBwm0N+s0Evf+2y2BtEKAqIsjb2V8vYv5aEq37z7
6vTANiYkxvmVJTPblbv94xo4W9qDlOMzDT9qclG5EGkQC56uhYu2xnleHT69jxq3dhxA9dswjNLl
TGaUS2vVqJ0ZjFFo6g5a1a/Nfyy9lpKorQKyW7OgzzqUaKCvLXzV7hO2+2i7f9onGtWpFlzHzIrz
5fILAAD//wMAxbg+BbcBAAA=
# And turns it into this:
interactions:
response:
body:
string: '{"id": "adr_8bda753a647111eeab7802fb85ae3091", "object": "Address",
"created_at": "2023-10-06T17:55:33+00:00", "updated_at": "2023-10-06T17:55:33+00:00",
"name": "ELVIS", "company": null, "street1": "3764 ELVIS PRESLEY BLVD", "street2":
"", "city": "MEMPHIS", "state": "TN", "zip": "38116-4106", "country": "US",
"phone": null, "email": null, "mode": "production", "carrier_facility": null,
"residential": true, "federal_tax_id": null, "state_tax_id": null, "verifications":
{}}'
Install
# Homebrew install
brew tap justintime50/formulas
brew install vcrpy-bincon
# Pip install
pip3 install vcrpy-bincon
# Install locally
just install
Usage
# Specify the directory where your cassette files live as the first param
vcrpy-bincon tests/cassettes
Known Side Effects
Using this tool has a couple of known (low-impact) side effects:
nullfields in cassettes may get replaced with nothing and become empty- Some already human-readable strings may get re-encoded as escaped JSON strings if VCRPY had odd line breaks such as the ending quote on a newline with no other content
- Long URL and other field values may get bumped down a line from its key pair due to the default line length of 80
Development
# Get a comprehensive list of development tools
just --list
Metadata
Release files for vcrpy-bincon 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vcrpy_bincon-0.3.0.tar.gz | 8.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vcrpy_bincon-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.9 kB
Release files / vcrpy_bincon-0.3.0.tar.gz
| Download URL | vcrpy_bincon-0.3.0.tar.gz |
|---|---|
| Size | 8.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a32eb0c1d82fc0f0f76e8a3cf5272c8c46ff576285c438367037dfc70511a790
|
|
BLAKE2b-256 checksum How to use checksums |
916464c3310efad467e7685cf3056d9743af0247fda19f7d9f8db6142d2421d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / vcrpy_bincon-0.3.0-py3-none-any.whl
| Download URL | vcrpy_bincon-0.3.0-py3-none-any.whl |
|---|---|
| Size | 5.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2476bf335fae228952c170e27f731dfe05344b7db5548fbee6b1a9a09dc8cf5d
|
|
BLAKE2b-256 checksum How to use checksums |
aa6ff976be76cc0aab39e946318b5f6fc15ad79651830252377f6f76ab3702a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|