Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

78 lines (63 sloc) 1.899 kB
"""
Internal utility functions.
`htmlentitydecode` came from here:
http://wiki.python.org/moin/EscapingHtml
"""
from __future__ import print_function
import re
import sys
import time
try:
from html.entities import name2codepoint
unichr = chr
except ImportError:
from htmlentitydefs import name2codepoint
def htmlentitydecode(s):
return re.sub(
'&(%s);' % '|'.join(name2codepoint),
lambda m: unichr(name2codepoint[m.group(1)]), s)
def smrt_input(globals_, locals_, ps1=">>> ", ps2="... "):
inputs = []
while True:
if inputs:
prompt = ps2
else:
prompt = ps1
inputs.append(input(prompt))
try:
ret = eval('\n'.join(inputs), globals_, locals_)
if ret:
print(str(ret))
return
except SyntaxError:
pass
def printNicely(string):
if hasattr(sys.stdout, 'buffer'):
sys.stdout.buffer.write(string.encode('utf8'))
print()
else:
print(string.encode('utf8'))
__all__ = ["htmlentitydecode", "smrt_input"]
def err(msg=""):
print(msg, file=sys.stderr)
class Fail(object):
"""A class to count fails during a repetitive task.
Args:
maximum: An integer for the maximum of fails to allow.
exit: An integer for the exit code when maximum of fail is reached.
Methods:
count: Count a fail, exit when maximum of fails is reached.
wait: Same as count but also sleep for a given time in seconds.
"""
def __init__(self, maximum=10, exit=1):
self.i = maximum
self.exit = exit
def count(self):
self.i -= 1
if self.i == 0:
err("Too many consecutive fails, exiting.")
raise SystemExit(self.exit)
def wait(self, delay=0):
self.count()
if delay > 0:
time.sleep(delay)
Jump to Line
Something went wrong with that request. Please try again.