PK!m±j((carly/__init__.pyfrom __future__ import print_function from twisted.internet.defer import Deferred, gatherResults from twisted.internet import reactor from types import ClassType class BoundHook(object): def __init__(self, hooked, original, instance): self.hooked = hooked self.original = original self.instance = instance def __call__(self, *args, **kw): result = self.original(self.instance, *args, **kw) self.hooked.called.callback(self.instance) self.hooked.called = Deferred() return result class HookedCall(object): def __init__(self, class_, hook): self.called = Deferred() self.original = getattr(class_, hook) def __get__(self, instance, owner): if instance is None: return self return BoundHook(self.called, self.original, instance) def hook(class_, *hooks): methods = {} for hook in hooks: d = Deferred() methods[hook] = HookedCall(class_, hook) if issubclass(class_, object): type_ = type else: # pragma: no cover # some protocols don't have object has a base class! type_ = ClassType return type_('Hooked'+class_.__name__, (class_,), methods) def waitUntilAll(**deferreds): for name, d in deferreds.items(): # This short timeout is important so that if something goes wrong, we find # out about it soon, rather than blocking forever on something that can # can no longer happen. d.addTimeout(0.2, reactor) return gatherResults(deferreds.values()) PK!Hqf”WXcarly-0.1.0.dist-info/WHEEL ÊA € н§ð#f›ðÑ."jmð)!fbÒ…·¯·~ûÜ´Aß,mç¼ÁÐTD£}E›õ® n0‹H¡é¥¹*î|D[´Â¬éüc îi=±0(q3PK!Hæx•÷!©carly-0.1.0.dist-info/METADATA•QMO1¼÷W¼£&nÃâШ‘àA",DPÎÍòX·}kÛ…ðï} Hâqomg¦3“™bÔkuò…>r º2™¶¨ ×¾<ˆ Б©ìˆEm­öâ,&•.˜ù™½g³U&&&Gøa:^Ša·ä !•°!U£qX …Œ‹Ú­!§²Äüz ñ/6ž,,÷&D\C@¿ã(P‡I—à0îÉó]޶ÞX™¸eÎÙ:A«MÉ=ìeÂ$ùBŒJ‚ÙäxçÌ ÌcV•§û©c‹?øŸdî©ðÚÚ&ÈD»¢æ. ~`[לºmù²×RqÛ–/ïZ+î[+Z+zâjã'¯<´ºì}õü”öåàæ1ÈεøPK!H¡ðQÌcarly-0.1.0.dist-info/RECORDuÌÁn‚0лßRÐv‚pØ¡[›4‹ æ¥a"¶ŒQhÍ ~½ÙÁ£ïÞ©Ò]r.{yåÜ,0¢Bžÿ:G~ˆí!o-‚ò8a?üžph%yq¦1N~…wH €ÞÆ_œþ'gåBwåÖÒ\Ù7jY0J·“E‡5,ºâæêÒ–;U-÷rš¡Œêz3R‹ÎÌ(Oƈæ˜à?Ò¦,©u3wñÙ¬Çtÿ¦q†é`ç·&ä™Ú—¬g_Éø|²¦ô}—wPK!m±j((¤carly/__init__.pyPK!Hqf”WXWcarly-0.1.0.dist-info/WHEELPK!Hæx•÷!©çcarly-0.1.0.dist-info/METADATAPK!H¡ðQÌDcarly-0.1.0.dist-info/RECORDPKJ