import os, pwd, regex def expand_tilde(path): if not path.startswith('~'): return path parts = path.split('/', 1) if parts[0] == '~': parts[0] = os.getenv('HOME') elif parts[0].startswith('~'): users = [x[0] for x in pwd.getpwall()] if parts[0][1:] in users: home = pwd.getpwnam(parts[0][1:])[5] parts[0] = home if len(parts) > 1: s = os.path.join(parts[0], parts[1]) else: s = parts[0] s = os.path.realpath(s) if os.path.isdir(s): s += '/' return s def cleanse(s): s2 = s.replace("\n", "") return s2 def padtrunc(s, i, c=' '): assert i >= 0 assert len(c) == 1 l = len(s) if l < i: return s + c * (i - l) elif l > i: return s[0:i] else: return s def pad(s, i, c=' '): assert len(c) == 1 l = len(s) if len(s) < i: return s + c * (i - l) else: return s def count_leading_whitespace(s): m = regex.leading_whitespace.match(s) assert m, "count leading whitespace failed somehow" return m.end() - m.start() def dump(x): d = {} for name in dir(x): d[name] = getattr(x, name) return '%s: %r' % (x, d)