Skip to content

Instantly share code, notes, and snippets.

@ers81239
Created February 2, 2012 19:36
Show Gist options
  • Save ers81239/1725303 to your computer and use it in GitHub Desktop.
Save ers81239/1725303 to your computer and use it in GitHub Desktop.
def run_tight(*args, **kwargs):
"""
Pass this function a kwarg like set="abc" where "abc" is picked from this list:
r = show running
R = hide running
e = show stderr
E = hide stderr
o = show stdout
O = hide stdout
p = pty=True
P = pty=False
w = warn_only=True
W = warn_only=False
The default is reopW. Don't screw around with setting both r and R, who knows what happens.
"""
words = {"r": "running",
"e": "stderr",
"o": "stdout",
"p": "pty",
"w": "warn_only"}
set_string = kwargs["set"]
del kwargs["set"]
#set defaults
if "r" not in set_string.lower():
set_string += "r"
if "e" not in set_string.lower():
set_string += "e"
if "o" not in set_string.lower():
set_string += "o"
if "p" not in set_string.lower():
set_string += "p"
if "w" not in set_string.lower():
set_string += "W"
show_words = []
hide_words = []
new_settings = {}
new_kwargs = {}
for char in set_string:
#show settings
if char in "reo":
show_words.append(words[char])
#hide settings
elif char in "REO":
hide_words.append(words[char.lower()])
#things that get passed in settings
elif char in "w":
new_settings[words[char]]=True
elif char in "W":
new_settings[words[char.lower()]]=False
#things that get passed as kwargs
elif char in "p":
new_kwargs[words[char]]=True
elif char in "P":
new_kwargs[words[char.lower()]]=False
with settings(hide(*hide_words), show(*show_words), **new_settings):
return run(*args, **dict(new_kwargs, **kwargs))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment