Skip to main content

VCRPY Binary Converter

Convert binary Python VCR cassette responses to human-readable strings.

Build Status Coverage Status PyPi Licence

Showcase

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:

  1. null fields in cassettes may get replaced with nothing and become empty
  2. 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
  3. 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)

Source distribution for vcrpy-bincon 0.3.0
File Size Uploaded
vcrpy_bincon-0.3.0.tar.gz 8.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vcrpy-bincon 0.3.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page