1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-09 01:03:24 +00:00

not really very happy about this

This commit is contained in:
Kevin McCarthy
2014-05-06 20:16:56 -10:00
parent c0691a96e6
commit 66c6909021
4 changed files with 35 additions and 21 deletions

View File

@@ -1,5 +1,6 @@
from vcr.serializers import compat
from vcr.request import Request
import yaml
#version 1 cassettes started with VCR 1.0.x. Before 1.0.x, there was no versioning.
CASSETTE_FORMAT_VERSION = 1
@@ -16,15 +17,25 @@ Serializing: bytestring -> string (yaml persists to utf-8)
Deserializing: string (yaml converts from utf-8) -> bytestring
"""
def _looks_like_an_old_cassette(data):
return isinstance(data, list) and len(data) and 'request' in data[0]
def _warn_about_old_cassette_format(data):
raise ValueError(
"Your cassette files were generated in an older version "
"of VCR. Delete your cassettes or run the migration script."
"See http://git.io/mHhLBg for more details."
)
def deserialize(cassette_string, serializer):
data = serializer.deserialize(cassette_string)
if not isinstance(data, dict):
raise ValueError(
"Your cassette files were generated in an older version "
"of VCR. Delete your cassettes or run the migration script."
"See http://git.io/mHhLBg for more details."
)
try:
data = serializer.deserialize(cassette_string)
# Old cassettes used to use yaml object thingy so I have to
# check for some fairly stupid exceptions here
except (ImportError, yaml.constructor.ConstructorError):
_warn_about_old_cassette_format(data)
if _looks_like_an_old_cassette(data):
_warn_about_old_cassette_format(data)
requests = [Request._from_dict(r['request']) for r in data['interactions']]
responses = [compat.convert_to_bytes(r['response']) for r in data['interactions']]