�`^c@s\dZddlmZmZdZd
Zeed�Zeed�Zd �Zd
�Z dS(sEfunctools.py - Tools for working with functions and callable objects
i�(tpartialtreducet
__module__t__name__t__doc__t__dict__cCsax'|D]}t||t||��qWx0|D](}t||�jt||i��q1W|S(sUpdate a wrapper function to look like the wrapped function
wrapper is the function to be updated
wrapped is the original function
assigned is a tuple naming the attributes assigned directly
from the wrapped function to the wrapper function (defaults to
functools.WRAPPER_ASSIGNMENTS)
updated is a tuple naming the attributes of the wrapper that
are updated with the corresponding attribute from the wrapped
function (defaults to functools.WRAPPER_UPDATES)
(tsetattrtgetattrtupdate(twrappertwrappedtassignedtupdatedtattr((s/sys/lib/python2.7/functools.pytupdate_wrappers
&cCsttd|d|d|�S(s�Decorator factory to apply update_wrapper() to a wrapper function
Returns a decorator that invokes update_wrapper() with the decorated
function as the wrapper argument and the arguments to wraps() as the
remaining arguments. Default arguments are as for update_wrapper().
This is a convenience function to simplify applying partial() to
update_wrapper().
R
RR(RR(R
RR((s/sys/lib/python2.7/functools.pytwraps'scCsKidd�fdd�fdd�fgd6dd�fdd �fdd
�fgd6dd�fdd�fdd
�fgd6dd�fdd�fdd�fgd6}tt|��t|�@}|s�d��nt|�}xU||D]I\}}||kr�|_tt|�j|_t|||�q�W|S(s6Class decorator that fills in missing ordering methodst__gt__cSs||kp||kS(N((tselftother((s/sys/lib/python2.7/functools.pyt<lambda>8st__le__cSs||kp||kS(N((RR((s/sys/lib/python2.7/functools.pyR9st__ge__cSs||kS(N((RR((s/sys/lib/python2.7/functools.pyR:st__lt__cSs||kp||kS(N((RR((s/sys/lib/python2.7/functools.pyR;scSs||ko||kS(N((RR((s/sys/lib/python2.7/functools.pyR<scSs||kS(N((RR((s/sys/lib/python2.7/functools.pyR=scSs||kp||kS(N((RR((s/sys/lib/python2.7/functools.pyR>scSs||kp||kS(N((RR((s/sys/lib/python2.7/functools.pyR?scSs||kS(N((RR((s/sys/lib/python2.7/functools.pyR@scSs||kp||kS(N((RR((s/sys/lib/python2.7/functools.pyRAscSs||ko||kS(N((RR((s/sys/lib/python2.7/functools.pyRBscSs||kS(N((RR((s/sys/lib/python2.7/functools.pyRCss6must define at least one ordering operation: < > <= >=( tsettdirt
ValueErrortmaxRRtintRR(tclstconverttrootstroottopnametopfunc((s/sys/lib/python2.7/functools.pyttotal_ordering5s. cs dtf�fd��Y}|S(s,Convert a cmp= function into a key= functiontKcs}eZdgZd�Z�fd�Z�fd�Z�fd�Z�fd�Z�fd�Z�fd�Z d�Z
RS( tobjcWs
||_dS(N(R$(RR$targs((s/sys/lib/python2.7/functools.pyt__init__Tscs�|j|j�dkS(Ni(R$(RR(tmycmp(s/sys/lib/python2.7/functools.pyRVscs�|j|j�dkS(Ni(R$(RR(R'(s/sys/lib/python2.7/functools.pyRXscs�|j|j�dkS(Ni(R$(RR(R'(s/sys/lib/python2.7/functools.pyt__eq__Zscs�|j|j�dkS(Ni(R$(RR(R'(s/sys/lib/python2.7/functools.pyR\scs�|j|j�dkS(Ni(R$(RR(R'(s/sys/lib/python2.7/functools.pyR^scs�|j|j�dkS(Ni(R$(RR(R'(s/sys/lib/python2.7/functools.pyt__ne__`scSstd��dS(Nshash not implemented(t TypeError(R((s/sys/lib/python2.7/functools.pyt__hash__bs(RRt __slots__R&RRR(RRR)R+((R'(s/sys/lib/python2.7/functools.pyR#Rs (tobject(R'R#((R's/sys/lib/python2.7/functools.pyt
cmp_to_keyPsN(s
__module__s__name__s__doc__(s__dict__(
Rt
_functoolsRRtWRAPPER_ASSIGNMENTStWRAPPER_UPDATESRRR"R.(((s/sys/lib/python2.7/functools.pyt<module>s
|