ó i'dWc@sĎdZddlZddlmZmZddlmZddlZddl m Z m Z d„Z d„Z d„Zd „Zd „Zd „Zd „Zie e j6e e j6ee j6eee jƒe j6ee j6ee j6eee jƒe j6eee jƒe j6eee jƒe j6eee j ƒe j!6eee j"ƒe j#6eee j$ƒe j%6eee j&ƒe j'6eee j(ƒe j)6eee j*ƒe j+6eee j,ƒe j-6eee j.ƒe j/6eee j0ƒe j16eee j2ƒe j36eee j4ƒe j56eee j6ƒe j76eee j8ƒe j96eee j:ƒe j;6eee j<ƒe j=6eee j>ƒe j?6eee j@ƒe jA6eee jBƒe jC6eee jDƒe jE6ZFdS( sŽ Provide thin wrappers around C functions for looking up values in an nvlist. LOOKUP: each key maps to a function with this signature: function(nvlistp, str) -> value value will be the appropriate Python type, e.g. LIST_LOOKUP[DATA_TYPE_BOOLEAN](nvlistp, str) -> bool For C funtions that are of DATA_TYPE *_ARRAY, the value returned is a tuple of the Python type. i˙˙˙˙N(tEINVALtENOENT(tpartial(tconsttcfunccCstdƒ‚dS(Ns+can't lookup "DATA_TYPE_UNKNOWN" for nvlist(t RuntimeError(tnvltname((s ../lookup.pytnvl_lookup_unknown/scCstdƒ‚dS(Ns*can't lookup "DATA_TYPE_HRTIME" for nvlist(tNotImplementedError(RR((s ../lookup.pytnvl_lookup_hrtime4scCsĂ|jdjƒ}|||tj|ƒƒ}|dkrŸ|tkr\td|jƒ‚n|tkrwt|ƒ‚nt |d|jt j |ƒfƒ‚ny |j SWnt k rž|SXdS(s<mostly does what is right for any nvlist_lookup_*() functioniis%s(): invalid arguments%s(): %sN(targtypest_type_tCtbyrefRt TypeErrort__name__RtKeyErrortOSErrortoststrerrortvaluetAttributeError(t cfunctionRRRterr((s ../lookup.pyt nvl_scalar8s   (  cCsmtj||ƒ}|dkr"tS|tkr2tS|tkrMtdƒ‚nt|dtj |ƒƒ‚dS(Nis)nvlist_lookup_boolean(): invalid argumentsnvlist_lookup_boolean(): %s( Rtnvlist_lookup_booleantTrueRtFalseRRRRR(RRR((s ../lookup.pytnvl_lookup_booleanKs   cCstttj||ƒƒS(N(tboolRRtnvlist_lookup_boolean_value(RR((s ../lookup.pytnvl_lookup_boolean_valueXscCsőtjƒ}|jdjƒ}|||tj|ƒtj|ƒƒ}|dkrˇ|tkrttd|jƒ‚n|tkrt |ƒ‚nt |d|jt j |ƒfƒ‚nt ƒ}x(t|jƒD]}|j||ƒqĐWt|ƒS(sBmostly does what is right for any nvlist_lookup_*_array() functioniis%s(): invalid arguments%s(): %s(R tc_uintR R RRRRRRRRRtlisttxrangeRtappendttuple(RRRtnelemRRtretltidx((s ../lookup.pyt nvl_array\s '   ( cCs(ttj||ƒ}ttt|ƒƒS(N(R)Rtnvlist_lookup_boolean_arrayR%tmapR(RRtret((s ../lookup.pytnvl_lookup_boolean_arrayns(Gt__doc__tctypesR terrnoRRt functoolsRRt libnvpairRRRR RRR R)R-tDATA_TYPE_UNKNOWNtDATA_TYPE_HRTIMEtDATA_TYPE_BOOLEANtnvlist_lookup_doubletDATA_TYPE_DOUBLEtDATA_TYPE_BOOLEAN_VALUEtDATA_TYPE_BOOLEAN_ARRAYtnvlist_lookup_bytetDATA_TYPE_BYTEtnvlist_lookup_byte_arraytDATA_TYPE_BYTE_ARRAYtnvlist_lookup_int8tDATA_TYPE_INT8tnvlist_lookup_int8_arraytDATA_TYPE_INT8_ARRAYtnvlist_lookup_int16tDATA_TYPE_INT16tnvlist_lookup_int16_arraytDATA_TYPE_INT16_ARRAYtnvlist_lookup_int32tDATA_TYPE_INT32tnvlist_lookup_int32_arraytDATA_TYPE_INT32_ARRAYtnvlist_lookup_int64tDATA_TYPE_INT64tnvlist_lookup_int64_arraytDATA_TYPE_INT64_ARRAYtnvlist_lookup_uint8tDATA_TYPE_UINT8tnvlist_lookup_uint8_arraytDATA_TYPE_UINT8_ARRAYtnvlist_lookup_uint16tDATA_TYPE_UINT16tnvlist_lookup_uint16_arraytDATA_TYPE_UINT16_ARRAYtnvlist_lookup_uint32tDATA_TYPE_UINT32tnvlist_lookup_uint32_arraytDATA_TYPE_UINT32_ARRAYtnvlist_lookup_uint64tDATA_TYPE_UINT64tnvlist_lookup_uint64_arraytDATA_TYPE_UINT64_ARRAYtnvlist_lookup_nvlisttDATA_TYPE_NVLISTtnvlist_lookup_nvlist_arraytDATA_TYPE_NVLIST_ARRAYtnvlist_lookup_stringtDATA_TYPE_STRINGtnvlist_lookup_string_arraytDATA_TYPE_STRING_ARRAYtLOOKUP(((s ../lookup.pyt%s€