| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | from __future__ import unicode_literalsfrom __future__ import absolute_importfrom __future__ import divisionimport datetimeimport osimport socketfrom .errors import UserErrordef cached_property(f):    """    returns a cached property that is calculated by function f    http://code.activestate.com/recipes/576563-cached-property/    """    def get(self):        try:            return self._property_cache[f]        except AttributeError:            self._property_cache = {}            x = self._property_cache[f] = f(self)            return x        except KeyError:            x = self._property_cache[f] = f(self)            return x    return property(get)def yesno(prompt, default=None):    """    Prompt the user for a yes or no.    Can optionally specify a default value, which will only be    used if they enter a blank line.    Unrecognised input (anything other than "y", "n", "yes",    "no" or "") will return None.    """    answer = raw_input(prompt).strip().lower()    if answer == "y" or answer == "yes":        return True    elif answer == "n" or answer == "no":        return False    elif answer == "":        return default    else:        return None# http://stackoverflow.com/a/5164027def prettydate(d):    diff = datetime.datetime.utcnow() - d    s = diff.seconds    if diff.days > 7 or diff.days < 0:        return d.strftime('%d %b %y')    elif diff.days == 1:        return '1 day ago'    elif diff.days > 1:        return '{0} days ago'.format(diff.days)    elif s <= 1:        return 'just now'    elif s < 60:        return '{0} seconds ago'.format(s)    elif s < 120:        return '1 minute ago'    elif s < 3600:        return '{0} minutes ago'.format(s/60)    elif s < 7200:        return '1 hour ago'    else:        return '{0} hours ago'.format(s/3600)def mkdir(path, permissions=0o700):    if not os.path.exists(path):        os.mkdir(path)    os.chmod(path, permissions)    return pathdef docker_url():    return os.environ.get('DOCKER_HOST')
 |