Source code for patchio

from contextlib import ContextDecorator
import sys


__author__ = 'Trey Hunner'
__email__ = 'trey@treyhunner.com'
__version__ = '0.1.0'


[docs]class patch_args(ContextDecorator): """ Context manager for patching ``sys.argv``. Usage:: import sys with patch_args(["some_arg", "another_arg"]) as args: assert sys.argv == args """ def __init__(self, args): """Save fake arguments and real arguments.""" self.args = args self._old_values = [] def __enter__(self): """Monkey patch ``sys.argv`` to use fake arguments.""" self._old_values.append(sys.argv) sys.argv = self.args return sys.argv def __exit__(self, exc_type, exc_value, traceback): """Restore ``sys.argv`` to real argument values.""" sys.argv = self._old_values.pop()