B t ` @sdZddlZddlZddlZddlZddlZddlZddddddd d d d d ddg Ze e e e kZ ej dddkrd2dd Z n d3dd Z yddlZddZWnek rddZYnXddZej dkrd4ddZn d5ddZeedre Ze Zne Ze ZGdddZGdddZd d Zd!d Zej dkrJd6d#d Zn d7d$d Zej ddd%krrd&d'Zn4ydd(lmZWnek rd)ZYnXd*d'Zej ddd+krd,d Znd-d Zej dddkrd8d/dZn d9d0dZd:d1dZ dS);zP This module contains fixups for using nose under different versions of Python. Nmake_instancemethod cmp_to_key sort_list ClassTypeTypeTypeUNICODE_STRINGSunbound_methodismethodbytes_is_base_exception force_unicodeexc_to_unicodeformat_exception)rUTF-8cCs6y t|}Wn$tk r0t||d}YnX|S)Nreplace)strUnicodeDecodeErrordecode)sencodingr2/tmp/pip-unpacked-wheel-cjhnoqsi/nose/pyversion.pyr s  cCst|S)N)r)rrrrrr scCst|j||jS)N)newZinstancemethod__func__ __class__)functioninstancerrrr%s cCs|||jS)N)__get__r)rrrrrr)scsGfdddt}|S)z,Convert a cmp= function into a key= functioncs8eZdZddZfddZfddZfddZd S) zcmp_to_key..KeycSs ||_dS)N)obj)selfr rrr__init__2sz cmp_to_key..Key.__init__cs|j|jdkS)Nr)r )r!other)mycmprr__lt__4szcmp_to_key..Key.__lt__cs|j|jdkS)Nr)r )r!r#)r$rr__gt__6szcmp_to_key..Key.__gt__cs|j|jdkS)Nr)r )r!r#)r$rr__eq__8szcmp_to_key..Key.__eq__N)__name__ __module__ __qualname__r"r%r&r'r)r$rrKey1s  r+)object)r$r+r)r$rr/s )rFcs,|r|fddS|fddSdS)Ncst||S)N)cmp)ab)keyrrAzsort_list..cst||S)N)r.)r/r0)r1rrr2Cr3)sort)lr1reverser)r1rr?scCs|j||dS)N)r1r6)r4)r5r1r6rrrrEsc@s4eZdZddZddZddZddZd d Zd S) UnboundMethodcCs@|j|_||_t||_tjdkr.||j_t|dd|_ dS)N)rr__doc__) __dict__copy_func UnboundSelf__self__sys version_inforgetattrr8)r!clsfuncrrrr"Vs    zUnboundMethod.__init__cCsX|jj}|j}tj|}t|dd}|dk r8tj|}t j ||d|j |j j ffS)N__file__z%s.%s)r=rAr)r>modulesr@ospathabspathnoseutilsrcr(r;)r!rAmodnamemodulefilenamerrraddress`s   zUnboundMethod.addresscOs |j||S)N)r;)r!argskwargsrrr__call__jszUnboundMethod.__call__cCs t|j|S)N)r@r;)r!attrrrr __getattr__mszUnboundMethod.__getattr__cCsd|jjj|jjfS)Nz)r=rAr(r;)r!rrr__repr__ps zUnboundMethod.__repr__N)r(r)r*r"rNrQrSrTrrrrr7Us   r7c@seZdZddZddZdS)r<cCs ||_dS)N)rA)r!rArrrr"uszUnboundSelf.__init__cCs|dkr|jSt||SdS)Nr)rAr,__getattribute__)r!rRrrrrUzszUnboundSelf.__getattribute__N)r(r)r*r"rUrrrrr<tsr<cCs4t|r|St|s*tdt|ft||S)Nz%s is not a function)inspectr isfunction TypeErrorreprr7)rArBrrrrs   cCst|pt|tS)N)rVr isinstancer7)r rrrr sutf8cCst|tr|St||S)N)rZbytes)rrrrrr s cCst|S)N)r)rrrrrr s)rcCs$t|tr|j}t|p"t|S)N)rZr7r;rVisgeneratorfunction isgenerator)orrrr_s r_) CO_GENERATOR cCs*y|jjt@dkStk r$dSXdS)NrF)__code__co_flagsraAttributeError)rBrrrr_s)rcCs t|tS)N)rZ Exception)excrrrr scCs t|tS)N)rZ BaseException)rhrrrr sutf-8cCst|rft|dsxt|ds6t|jr0|jdp2d}n|j}t||d}t|jj|d}d||f}nt|t sxt |}t||dS)N __unicode__messager)rz%s: %s) r hasattrlenrOrlr rr(rZrrY)evrmsgZclsnamerrrr s    cCst|S)N)r)rprrrrr scCsR|\}}}t|s8tdt||}t|}||Stdtj||SdS)Nrm)r r join traceback format_tbr r)exc_inforZecrptbZtb_datarrrrs )r)r)F)F)r[)N)rj)rj)r)!r8r>rErstypesrVZ nose.utilrH__all__typerrr?r rr ImportErrorrrrnrrr7r<rr r r_Zcompiler.constsrar r rrrrrsb