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:
@@ -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']]
|
||||
|
||||
Reference in New Issue
Block a user