def can_be_loaded(cassette_library_dir, cassette_name, serialize_with, record_mode): # If we want to record a cassette we don't care if the file exists # yet recording = False if record_mode in ['once', 'all', 'new_episodes']: recording = True serializer = serializer_registry.get(serialize_with) if not serializer: raise ValueError( 'Serializer {0} is not registered with Betamax'.format( serialize_with )) cassette_path = serializer.generate_cassette_name( cassette_library_dir, cassette_name ) # Otherwise if we're only replaying responses, we should probably # have the cassette the user expects us to load and raise. return os.path.exists(cassette_path) or recording
def __init__(self, cassette_name, serialization_format, **kwargs): #: Short name of the cassette self.cassette_name = cassette_name self.serialized = None defaults = Cassette.default_cassette_options # Determine the record mode self.record_mode = _option_from('record_mode', kwargs, defaults) # Retrieve the serializer for this cassette serializer = serializer_registry.get(serialization_format) if serializer is None: raise ValueError( 'No serializer registered for {0}'.format(serialization_format) ) self.serializer = SerializerProxy(serializer, cassette_name) # Determine which placeholders to use self.placeholders = kwargs.get('placeholders') if not self.placeholders: self.placeholders = defaults['placeholders'] # Determine whether to preserve exact body bytes self.preserve_exact_body_bytes = _option_from( 'preserve_exact_body_bytes', kwargs, defaults ) # Initialize the interactions self.interactions = [] # Initialize the match options self.match_options = set() self.load_interactions() self.serializer.allow_serialization = self.is_recording()