if not self.yesno(prompt): self.fail("You must accept the terms and conditions to proceed.")

def input(self, prompt, empty=None): #@ReservedAssignment """ Prompts the user for input. The input is expected to be a string, which is stripped of leading and trailing whitespace. If `empty` is true, empty strings are allowed. Otherwise, they are not. """

print self.write(prompt, Style.BRIGHT)

while True:

if empty: prompt = "[{}]> ".format(empty) else: prompt = "> "

rv = raw_input(prompt) rv = rv.strip()

if rv: return rv

if empty is not None: return empty

print

def choice(self, prompt, choices, default=None): """ Prompts the user with prompt, and then presents him with a list of choices.

`choices` A list of (value, label) tuples.

`default` If not None, should be one of the values. The value that we use return if the user just hits enter. """

Please create a git repository for your project; no one wants to download a random rar from a forum. There seem to be a lot of questionable practices throughout your code (aside from the fact that I can't really see the point).

Would you mind explaining to potential users why (you think) this would be useful?