Several small utilities are available at the top-level buildbot.util
package. As always, see the API documentation for more information.
natualSort
winslave1
, winslave2
, ..
formatInterval
ComparableMixin
class Widget(FactoryProduct, ComparableMixin): compare_attrs = [ 'radius', 'thickness' ] # ...
Any attributes not in compare_attrs
will not be considered when
comparing objects. This is particularly useful in implementing buildbot's
reconfig logic, where a simple comparison between the new and existing objects
can determine whether the new object should replace the existing object.
safeTranslate
AsyncLRUCache
get
method that
takes a key and a function to call (with the key) when the key is not in the
cache. Both get
and the miss function return Deferreds.
deferredLocked
Deferred
) in an acquire/release pair of a designated
DeferredLock
. For simple functions with a static lock, this is as easy as
someLock = defer.DeferredLock() @util.deferredLocked(someLock) def someLockedFunction(..): # .. return d
for class methods which must access a lock that is an instance attribute, the lock can be specified by a string, which will be dynamically resolved to the specific instance at runtime:
def __init__(self): self.someLock = defer.DeferredLock() @util.deferredLocked('someLock') def someLockedFunction(..): # .. return d
epoch2datetime
datetime2epoch
UTC
datetime.tzinfo
subclass representing UTC time. A similar class has
finally been added to Python in version 3.2, but the implementation is simple
enough to include here. This is mostly used in tests to create timezeon-aware
datetime objects in UTC:
dt = datetime.datetime(1978, 6, 15, 12, 31, 15, tzinfo=UTC)