U Qi@s.ddlmZddlmZzeWnek r<ddZYnXzddlmZWnGdddeZYnXzddl m Z Wne k rd d Z YnXGd d d e Z d e _Gdd d e Zz eefZWnek reZYnXddZeefZGdddeZdddZdddZGddde ZdS))ref)BoundMethodWeakrefcCs t|dS)N__call__)hasattr)objectr/_utilities.pycallable sr ) defaultdictc@sNeZdZdddZddZddZdd Zd d Zd d ZddZ ddZ dS)r NcOs6|dk rt|dstdtj|f||||_dS)Nrzfirst argument must be callable)r TypeErrordict__init__default_factory)selfrakwrrrr s zdefaultdict.__init__cCs2zt||WStk r,||YSXdSN)r __getitem__KeyError __missing__)rkeyrrrrszdefaultdict.__getitem__cCs&|jdkrt||||<}|Sr)rr)rrvaluerrrrs zdefaultdict.__missing__cCs0|jdkrt}n|jf}t||dd|fSr)rtupletypeitems)rargsrrr __reduce__%s zdefaultdict.__reduce__cCs|Sr)__copy__rrrrcopy,szdefaultdict.copycCst||j|Sr)rrrrrrr/szdefaultdict.__copy__cCs"ddl}t||j||S)Nr)rrrZdeepcopyr)rZmemorrrr __deepcopy__2s  zdefaultdict.__deepcopy__cCsd|jt|fS)Nzdefaultdict(%s, %s))rr __repr__rrrrr!7szdefaultdict.__repr__)N) __name__ __module__ __qualname__r rrrrrr r!rrrrr s r )contextmanagercCsdd}|j|_|S)Nc_s tddS)Nz8Python 2.5 or above is required to use context managers.) RuntimeError)rrrrroops@szcontextmanager..oops)r")fnr'rrrr%?sr%c@s$eZdZddZddZddZdS)_symbolcCs||_|_dS)zConstruct a new named symbol.N)r"name)rr*rrrr Hsz_symbol.__init__cCs t|jffSr)symbolr*rrrrrLsz_symbol.__reduce__cCs|jSr)r*rrrrr!Osz_symbol.__repr__N)r"r#r$r rr!rrrrr)Fsr)r+c@seZdZdZiZddZdS)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. cCs8z |j|WStk r2|j|t|YSXdSr)symbolsr setdefaultr))clsr*rrr__new__ds zsymbol.__new__N)r"r#r$__doc__r,r/rrrrr+Ts cCsVt|drt|jt|jfSt|drcCsJt|dr |jdk r t||dSt|dr@|jdk r@t||dSt||S)z@Return an annotated weak ref, supporting bound instance methods.r5N)targetZ on_deleter4)rr5rr4r:)rr=rrrr;s   r;c@s eZdZdZddZddZdS) lazy_propertyz(A @property that is only evaluated once.cCs||_|j|_dSr) _deferredr0)rZdeferredrrrr szlazy_property.__init__cCs*|dkr |S||}t||jj||Sr)rAr<r")rr8r.rrrr__get__s  zlazy_property.__get__N)r"r#r$r0r rBrrrrr@sr@)N)N)weakrefrZblinker._saferefrr NameError collectionsr r contextlibr% ImportErrorrr)r"r+strZunicoder7r9Z WeakTypesr:r>r;r@rrrrs4  ,