Several small utilities are available at the top-level
package. As always, see the API documentation for more information.
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.
getmethod that takes a key and a function to call (with the key) when the key is not in the cache. Both
getand the miss function return Deferreds.
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
datetime.tzinfosubclass 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)