"""
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)
