kevin1024/vcrpy

String decoding fails for POST requests with byte payload

thomas-maschler opened this issue · 4 comments

One of my requests I am trying to record uploads an image to cloud storage.

The POST requests' payload is a byte-string (not a BytesIO object).

The body contains some non-utf-8 characters and when trying to decode them, function replace_post_data_parameters breaks

  File "/.../site-packages/vcr/filters.py", line 116, in replace_post_data_parameters
    rk = k.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte

On the same idea, I have the issue of using Whisper model from OpenAI, using their official librairy, the client is HTTPx, and it send a post with bytes data. I have the same failure at a different place:
https://github.com/kevin1024/vcrpy/blob/master/vcr/stubs/httpx_stubs.py#L108

body = httpx_request.read().decode("utf-8")

So the questions are: Is this decode necessary at this moment ? How can we use VCRPY in these cases ?

I got it to work with this patch
master...thomas-maschler:vcrpy:decode

This looks like a duplicate of #660

Probably needs this too 1ef75a1