Index: third_party/buildbot_7_12/buildbot/util.py |
diff --git a/third_party/buildbot_7_12/buildbot/util.py b/third_party/buildbot_7_12/buildbot/util.py |
deleted file mode 100644 |
index a3fc5431cdf15fe6ba5d36f5a8e7c4e0cef0162b..0000000000000000000000000000000000000000 |
--- a/third_party/buildbot_7_12/buildbot/util.py |
+++ /dev/null |
@@ -1,133 +0,0 @@ |
-# -*- test-case-name: buildbot.test.test_util -*- |
- |
-from twisted.internet.defer import Deferred |
-from twisted.spread import pb |
-import time, re, string |
- |
-def naturalSort(l): |
- """Returns a sorted copy of l, so that numbers in strings are sorted in the |
- proper order. |
- |
- e.g. ['foo10', 'foo1', 'foo2'] will be sorted as ['foo1', 'foo2', 'foo10'] |
- instead of the default ['foo1', 'foo10', 'foo2']""" |
- l = l[:] |
- def try_int(s): |
- try: |
- return int(s) |
- except: |
- 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 now(): |
- #return int(time.time()) |
- return time.time() |
- |
-def earlier(old, new): |
- # minimum of two things, but "None" counts as +infinity |
- if old: |
- if new < old: |
- return new |
- return old |
- return new |
- |
-def later(old, new): |
- # maximum of two things, but "None" counts as -infinity |
- if old: |
- if new > old: |
- return new |
- return old |
- return new |
- |
-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 CancelableDeferred(Deferred): |
- """I am a version of Deferred that can be canceled by calling my |
- .cancel() method. After being canceled, no callbacks or errbacks will be |
- executed. |
- """ |
- def __init__(self): |
- Deferred.__init__(self) |
- self.canceled = 0 |
- def cancel(self): |
- self.canceled = 1 |
- def _runCallbacks(self): |
- if self.canceled: |
- self.callbacks = [] |
- return |
- Deferred._runCallbacks(self) |
- |
-def ignoreStaleRefs(failure): |
- """d.addErrback(util.ignoreStaleRefs)""" |
- r = failure.trap(pb.DeadReferenceError, pb.PBConnectionLost) |
- return None |
- |
-class _None: |
- pass |
- |
-class ComparableMixin: |
- """Specify a list of attributes that are 'important'. These will be used |
- for all comparison operations.""" |
- |
- compare_attrs = [] |
- |
- def __hash__(self): |
- alist = [self.__class__] + \ |
- [getattr(self, name, _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__, them.__class__) |
- if result: |
- return result |
- |
- assert self.compare_attrs == them.compare_attrs |
- self_list= [getattr(self, name, _None) for name in self.compare_attrs] |
- them_list= [getattr(them, name, _None) for name in self.compare_attrs] |
- return cmp(self_list, them_list) |
- |
-def to_text(s): |
- if isinstance(s, (str, unicode)): |
- return s |
- else: |
- return str(s) |
- |
-# 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 remove_userpassword(url): |
- if '@' not in url: |
- return url |
- if '://' not in url: |
- return url |
- |
- # urlparse would've been nice, but doesn't support ssh... sigh |
- protocol_url = url.split('://') |
- protocol = protocol_url[0] |
- repo_url = protocol_url[1].split('@')[-1] |
- |
- return protocol + '://' + repo_url |