Ñò i'dWc@sOdZddklZddklZlZlZddklZddk l Z l Z ddk Z ddk lZddklZlZd „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zheei6eei6eei6eeei eƒei!6eeei"eƒei#6eeei$eƒei%6eeei&eede'ƒƒei(6eeei)eede'ƒƒei*6eeei+eede,ƒƒei-6eeei.eede,ƒƒei/6eeei0eede,ƒƒei16eeei2eede,ƒƒei36eeei4eede,ƒƒei56eeei6eede,ƒƒei76eeei8eede,ƒƒei96eeei:eede,ƒƒei;6eeei<eede'ƒƒei=6eeei>eede'ƒƒei?6eeei@eede'ƒƒeiA6eeeiBeede'ƒƒeiC6eeeiDeede'ƒƒeiE6eeeiFeede'ƒƒeiG6eeeiHeede'ƒƒeiI6eeeiJeede'ƒƒeiK6eeeiLeƒeiM6eeeiNeƒeiO6eeeiPeƒeiQ6eeiR6ZSdS(s¡ Provide thin wrappers around C functions for adding named values to an nvlist. ADD: each key maps to a function with this signature: function(nvlistp, name, value) -> None value will be checked to be of the right type, e.g. LIST_ADD[DATA_TYPE_BOOLEAN](nvlistp, str, bool) -> None For C funtions that are of DATA_TYPE *_ARRAY, the value being set must be an Iterable of the appropriate type. iÿÿÿÿ(tIterable(tENOMEMtEINVALtENOENT(tpartial(tIntegraltRealN(tnvlistp(tconsttcfunccCstdƒ‚dS(Ns'can't add "DATA_TYPE_UNKNOWN" to nvlist(t RuntimeError(tnvltnametval((s ../add.pytnvl_add_unknown0scCstdƒ‚dS(Ns'can't add "DATA_TYPE_HRTIME" for nvlist(tNotImplementedError(R R R ((s ../add.pytnvl_add_hrtime5scCst|tƒptdt|ƒƒ‚n|tjo}ti||ƒ}|djoZ|tjotdƒ‚n|tjot dƒ‚nt |dt i |ƒƒ‚qÿnLti ||tiƒ}|dtfjo t |dt i |ƒƒ‚ndS(Nsval: '%s' object is not boolis&nvlist_add_boolean(): invalid arguments)nvlist_add_boolean(): insufficient memorysnvlist_add_boolean(): %s(t isinstancetboolt TypeErrorttypetTrueR tnvlist_add_booleanRRt MemoryErrortOSErrortoststrerrort nvlist_removeRtDATA_TYPE_BOOLEANR(R R R terr((s ../add.pytnvl_add_boolean9s    $cs؈o |dp|}ˆo d| pd‰d|d‰‡‡‡fd†}t|tƒ pt|tƒo#tdt|ƒ|ƒfƒ‚nˆ|jo ˆjno|Std||ƒfƒ‚dS(Niiics*ˆodˆˆdfSdˆdSdS(Ns range(%d, %d)is range(%d)(((tminimumtmaximumtsigned(s ../add.pyt range_strSss"val: '%s' object not integer in %ssval: %d not in %s(RRRRRt ValueError(tbitsR!R R"((R R!Rs ../add.pyt chk_integralNs!cCs.t|tƒptdt|ƒƒ‚n|S(Nsval: '%s' object not str(RtstrRR(R ((s ../add.pyt check_stringcscCsBt|tƒptdt|ƒƒ‚n|tjodpdS(Nsval: '%s' object not boolii(RRRRR(R ((s ../add.pyt check_booleanjscCsIxBt|tƒp1y |i}Wqtdt|ƒƒ‚qXqW|S(Ns&val: '%s' object not POINTER(nvlist_t)(RRt_as_parameter_RR(R ((s ../add.pyt check_nvlistqs cCsEt|tƒ pt|tƒotdt|ƒƒ‚nt|ƒS(Nsval: '%s' object not Real(RRRRRtfloat(R ((s ../add.pyt check_double~s!cCs ||ƒ}||||ƒ}|djoq|tjotd|iƒ‚n|tjotd|iƒ‚nt|d|iti|ƒfƒ‚ndS(Nis%s(): invalid arguments%s(): insufficient memorys%s(): %s(RRt__name__RRRRR(t cfunctiontcheckvalR R R tnvalR((s ../add.pytnvl_add_scalar†s    c Csut|tƒ pt|tƒotdt|ƒƒ‚ntƒ}xqt|ƒD]c\}}y|i||ƒƒWqQttfj o+}t|ƒd|t|ƒfƒ‚qQXqQWt |ƒ} |i di | } |||| |Œ| ƒ}|djoq|t jotd|i ƒ‚n|tjotd|i ƒ‚nt|d|i ti|ƒfƒ‚ndS(Ns)val: '%s' object not collections.Iterablesindex = %d: %siis%s(): invalid arguments%s(): insufficient memorys%s(): %s(RRR&RRtlistt enumeratetappendR#tlentargtypest_type_RR-RRRRR( R.R/R R R tilisttidxtelemRtnelemtcarray((s ../add.pyt nvl_add_array“s(!  +    c CsWyt|ƒWntj onXtdt|ƒƒ‚ttit|||ƒdS(Ns/val: '%s' object not valid collections.Iterable(R*RRR=R tnvlist_add_nvlist_array(R R R ((s ../add.pytnvl_add_nvlist_array±siii i@(Tt__doc__t collectionsRterrnoRRRt functoolsRtnumbersRRRtlibnvpair.cstructRt libnvpairRR RRRR%R'R(R*R,R1R=R?tDATA_TYPE_UNKNOWNtDATA_TYPE_HRTIMERtnvlist_add_doubletDATA_TYPE_DOUBLEtnvlist_add_boolean_valuetDATA_TYPE_BOOLEAN_VALUEtnvlist_add_boolean_arraytDATA_TYPE_BOOLEAN_ARRAYtnvlist_add_bytetFalsetDATA_TYPE_BYTEtnvlist_add_byte_arraytDATA_TYPE_BYTE_ARRAYtnvlist_add_int8RtDATA_TYPE_INT8tnvlist_add_int8_arraytDATA_TYPE_INT8_ARRAYtnvlist_add_int16tDATA_TYPE_INT16tnvlist_add_int16_arraytDATA_TYPE_INT16_ARRAYtnvlist_add_int32tDATA_TYPE_INT32tnvlist_add_int32_arraytDATA_TYPE_INT32_ARRAYtnvlist_add_int64tDATA_TYPE_INT64tnvlist_add_int64_arraytDATA_TYPE_INT64_ARRAYtnvlist_add_uint8tDATA_TYPE_UINT8tnvlist_add_uint8_arraytDATA_TYPE_UINT8_ARRAYtnvlist_add_uint16tDATA_TYPE_UINT16tnvlist_add_uint16_arraytDATA_TYPE_UINT16_ARRAYtnvlist_add_uint32tDATA_TYPE_UINT32tnvlist_add_uint32_arraytDATA_TYPE_UINT32_ARRAYtnvlist_add_uint64tDATA_TYPE_UINT64tnvlist_add_uint64_arraytDATA_TYPE_UINT64_ARRAYtnvlist_add_stringtDATA_TYPE_STRINGtnvlist_add_string_arraytDATA_TYPE_STRING_ARRAYtnvlist_add_nvlisttDATA_TYPE_NVLISTtDATA_TYPE_NVLIST_ARRAYtADD(((s ../add.pyt%s¾