Source code for djstripe.context_managers

"""
dj-stripe Context Managers
"""
from contextlib import contextmanager

from . import settings as djstripe_settings


@contextmanager
def stripe_temporary_api_version(version, validate=True):
	"""
	Temporarily replace the global api_version used in stripe API calls with the given value.

	The original value is restored as soon as context exits.
	"""
	old_version = djstripe_settings.get_stripe_api_version()

	try:
		djstripe_settings.set_stripe_api_version(version, validate=validate)
		yield
	finally:
		# Validation is bypassed since we're restoring a previous value.
		djstripe_settings.set_stripe_api_version(old_version, validate=False)