o ØÔQiã@s$ddlmZddlmZzeWn eydd„ZYnwzddlmZWn Gdd„deƒZYzddl m Z Wn e yHd d „Z YnwGd d „d e ƒZ d e _Gdd „d e ƒZzeefZWn eymeZYnwdd„ZeefZGdd„deƒZddd„Zddd„ZGdd„de ƒZdS)é)Úref)ÚBoundMethodWeakrefcCs t|dƒS)NÚ__call__)Úhasattr)Úobject©rú4/usr/lib/python3/dist-packages/blinker/_utilities.pyÚcallable s r )Ú defaultdictc@sNeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dS)r NcOs<|dur t|dƒs tdƒ‚tj|g|¢Ri|¤Ž||_dS)Nrzfirst argument must be callable)rÚ TypeErrorÚdictÚ__init__Údefault_factory)ÚselfrÚaÚkwrrrr s ÿ zdefaultdict.__init__cCs,zt ||¡WSty| |¡YSw©N)r Ú __getitem__ÚKeyErrorÚ __missing__)rÚkeyrrrrs  ÿzdefaultdict.__getitem__cCs&|jdur t|ƒ‚| ¡||<}|Sr)rr)rrÚvaluerrrrs zdefaultdict.__missing__cCs0|jdur tƒ}n|jf}t|ƒ|dd| ¡fSr)rÚtupleÚtypeÚitems)rÚargsrrrÚ __reduce__%s zdefaultdict.__reduce__cCs| ¡Sr)Ú__copy__©rrrrÚcopy,ózdefaultdict.copycCst|ƒ|j|ƒSr)rrrrrrr/szdefaultdict.__copy__cCs"ddl}t|ƒ|j| | ¡¡ƒS)Nr)rrrÚdeepcopyr)rÚmemorrrrÚ __deepcopy__2s  ÿzdefaultdict.__deepcopy__cCsd|jt |¡fS)Nzdefaultdict(%s, %s))rr Ú__repr__rrrrr$7sÿzdefaultdict.__repr__r) Ú__name__Ú __module__Ú __qualname__r rrrrrr#r$rrrrr s  r )ÚcontextmanagercCsdd„}|j|_|S)Nc_stdƒ‚)Nz8Python 2.5 or above is required to use context managers.)Ú RuntimeError)rrrrrÚoops@r zcontextmanager..oops)r%)Úfnr*rrrr(?sr(c@s$eZdZdd„Zdd„Zdd„ZdS)Ú_symbolcCs||_|_dS)zConstruct a new named symbol.N)r%Úname)rr-rrrr Hsz_symbol.__init__cCs t|jffSr)Úsymbolr-rrrrrLs z_symbol.__reduce__cCs|jSr)r-rrrrr$Osz_symbol.__repr__N)r%r&r'r rr$rrrrr,Fs r,r.c@seZdZdZiZdd„ZdS)r.a?A constant symbol. >>> symbol('foo') is symbol('foo') True >>> symbol('foo') foo A slight refinement of the MAGICCOOKIE=object() pattern. The primary advantage of symbol() is its repr(). They are also singletons. Repeated calls of symbol('name') will all return the same instance. cCs2z|j|WSty|j |t|ƒ¡YSwr)ÚsymbolsrÚ setdefaultr,)Úclsr-rrrÚ__new__ds   ÿzsymbol.__new__N)r%r&r'Ú__doc__r/r2rrrrr.Ts cCsRt|dƒrt|jƒt|jƒfSt|dƒrt|jƒt|jƒfSt|tƒr%|St|ƒS)NÚ__func__Úim_func)rÚidr4Ú__self__r5Úim_selfÚ isinstanceÚtext)ÚobjrrrÚhashable_identityqs   r<c@seZdZdZdS)Úannotatable_weakrefz7A weakref.ref that supports custom instance attributes.N)r%r&r'r3rrrrr=sr=NcKs@t|ƒr t||ƒ}nt||ƒ}| ¡D] \}}t|||ƒq|S)zReturn an annotated weak ref.)r Úcallable_referencer=rÚsetattr)rÚcallbackÚ annotationsÚweakrrrrrÚ referenceƒs   rCcCsJt|dƒr|jdurt||dSt|dƒr |jdur t||dSt||ƒS)z@Return an annotated weak ref, supporting bound instance methods.r8N)ÚtargetÚ on_deleter7)rr8rr7r=)rr@rrrr>Žs    r>c@s eZdZdZdd„Zdd„ZdS)Ú lazy_propertyz(A @property that is only evaluated once.cCs||_|j|_dSr)Ú _deferredr3)rÚdeferredrrrr šs zlazy_property.__init__cCs*|dur|S| |¡}t||jj|ƒ|Sr)rGr?r%)rr;r1rrrrÚ__get__žs  zlazy_property.__get__N)r%r&r'r3r rIrrrrrF—s rFr)ÚweakrefrÚblinker._saferefrr Ú NameErrorÚ collectionsr r Ú contextlibr(Ú ImportErrorrr,r%r.ÚstrÚunicoder:r<Ú WeakTypesr=rCr>rFrrrrÚs<   ÿ,  ÿ   ÿ