diff options
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/util/__init__.py')
-rw-r--r-- | lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/util/__init__.py | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/util/__init__.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/util/__init__.py deleted file mode 100644 index 281c345c..00000000 --- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/util/__init__.py +++ /dev/null @@ -1,204 +0,0 @@ -# This file is part of Buildbot. Buildbot is free software: you can -# redistribute it and/or modify it under the terms of the GNU General Public -# License as published by the Free Software Foundation, version 2. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 51 -# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Copyright Buildbot Team Members - - -import time, re, string -import datetime -import calendar -from buildbot.util.misc import deferredLocked, SerializedInvocation - -def naturalSort(l): - l = l[:] - def try_int(s): - try: - return int(s) - except ValueError: - return s - def key_func(item): - return [try_int(s) for s in re.split('(\d+)', item)] - # prepend integer keys to each element, sort them, then strip the keys - keyed_l = [ (key_func(i), i) for i in l ] - keyed_l.sort() - l = [ i[1] for i in keyed_l ] - return l - -def flatten(l): - if l and type(l[0]) == list: - rv = [] - for e in l: - if type(e) == list: - rv.extend(flatten(e)) - else: - rv.append(e) - return rv - else: - return l - -def now(_reactor=None): - if _reactor and hasattr(_reactor, "seconds"): - return _reactor.seconds() - else: - return time.time() - -def formatInterval(eta): - eta_parts = [] - if eta > 3600: - eta_parts.append("%d hrs" % (eta / 3600)) - eta %= 3600 - if eta > 60: - eta_parts.append("%d mins" % (eta / 60)) - eta %= 60 - eta_parts.append("%d secs" % eta) - return ", ".join(eta_parts) - -class ComparableMixin: - - compare_attrs = [] - - class _None: - pass - - def __hash__(self): - alist = [self.__class__] + \ - [getattr(self, name, self._None) for name in self.compare_attrs] - return hash(tuple(map(str, alist))) - - def __cmp__(self, them): - result = cmp(type(self), type(them)) - if result: - return result - - result = cmp(self.__class__.__name__, them.__class__.__name__) - if result: - return result - - result = cmp(self.compare_attrs, them.compare_attrs) - if result: - return result - - self_list = [getattr(self, name, self._None) - for name in self.compare_attrs] - them_list = [getattr(them, name, self._None) - for name in self.compare_attrs] - return cmp(self_list, them_list) - -def diffSets(old, new): - if not isinstance(old, set): - old = set(old) - if not isinstance(new, set): - new = set(new) - return old - new, new - old - -# Remove potentially harmful characters from builder name if it is to be -# used as the build dir. -badchars_map = string.maketrans("\t !#$%&'()*+,./:;<=>?@[\\]^{|}~", - "______________________________") -def safeTranslate(str): - if isinstance(str, unicode): - str = str.encode('utf8') - return str.translate(badchars_map) - -def none_or_str(x): - if x is not None and not isinstance(x, str): - return str(x) - return x - -# place a working json module at 'buildbot.util.json'. Code is adapted from -# Paul Wise <pabs@debian.org>: -# http://lists.debian.org/debian-python/2010/02/msg00016.html -# json doesn't exist as a standard module until python2.6 -# However python2.6's json module is much slower than simplejson, so we prefer -# to use simplejson if available. -try: - import simplejson as json - assert json -except ImportError: - import json # python 2.6 or 2.7 -try: - _tmp = json.loads -except AttributeError: - import warnings - import sys - warnings.warn("Use simplejson, not the old json module.") - sys.modules.pop('json') # get rid of the bad json module - import simplejson as json - -# changes and schedulers consider None to be a legitimate name for a branch, -# which makes default function keyword arguments hard to handle. This value -# is always false. -class NotABranch: - def __nonzero__(self): - return False -NotABranch = NotABranch() - -# time-handling methods - -class UTC(datetime.tzinfo): - """Simple definition of UTC timezone""" - def utcoffset(self, dt): - return datetime.timedelta(0) - - def dst(self, dt): - return datetime.timedelta(0) - - def tzname(self): - return "UTC" -UTC = UTC() - -def epoch2datetime(epoch): - """Convert a UNIX epoch time to a datetime object, in the UTC timezone""" - if epoch is not None: - return datetime.datetime.fromtimestamp(epoch, tz=UTC) - -def datetime2epoch(dt): - """Convert a non-naive datetime object to a UNIX epoch timestamp""" - if dt is not None: - return calendar.timegm(dt.utctimetuple()) - -def makeList(input): - if isinstance(input, basestring): - return [ input ] - elif input is None: - return [ ] - else: - return list(input) - -def in_reactor(f): - """decorate a function by running it with maybeDeferred in a reactor""" - def wrap(*args, **kwargs): - from twisted.internet import reactor, defer - result = [ ] - def async(): - d = defer.maybeDeferred(f, *args, **kwargs) - def eb(f): - f.printTraceback() - d.addErrback(eb) - def do_stop(r): - result.append(r) - reactor.stop() - d.addBoth(do_stop) - reactor.callWhenRunning(async) - reactor.run() - return result[0] - wrap.__doc__ = f.__doc__ - wrap.__name__ = f.__name__ - wrap._orig = f # for tests - return wrap - -__all__ = [ - 'naturalSort', 'now', 'formatInterval', 'ComparableMixin', 'json', - 'safeTranslate', 'LRUCache', 'none_or_str', - 'NotABranch', 'deferredLocked', 'SerializedInvocation', 'UTC', - 'diffLists', 'makeList', 'in_reactor' ] |