ofc @s}dZddlZejddkZejdkrejdkrddlZejrzedkrzejdednej d d ed nybedkrerd dUn ddl Z e Z dd l m Znddl Z dd lm ZWn*ek r!ddlZeje=nXe ZZejZejZddlZddlZddlmZejdkrddlZejZnddlZejZdefdYZdefdYZdddddddddZ!dddddddddZ"ddddddddddd Z#dZ$dZ%yddl&Z'['Wnek rxde_(nXdS(sSupport for Berkeley DB 4.3 through 5.3 with a simple interface. For the full featured object oriented interface use the bsddb.db module instead. It mirrors the Oracle Berkeley DB C API. iNiiiitbsddb3sQin 3.x, the bsddb module has been removed; please use the pybsddb project insteadtignores .*CObject.*sbsddb.__init__sfrom . import _pybsddb(t DeadlockWrap(treft _iter_mixincBs,eZdZdZdZdZRS(cCsAt|jj}t|}t||j||j|<|S(N(t _DeadlockWraptdbtcursortidRt_gen_cref_cleanert _cursor_refs(tselftcurtkey((s&/usr/lib64/python2.7/bsddb/__init__.pyt_make_iter_cursor_s csfdS(NcsjjdS(N(R tpoptNone(R(R R (s&/usr/lib64/python2.7/bsddb/__init__.pytis((R R ((R R s&/usr/lib64/python2.7/bsddb/__init__.pyR esccs@t|_|jd7_yy|j}t|jdddd}|Vt|d}xy"t|dddd}|VWq]tjk r|jrt dn|j}t|j |dddt|d}q]Xq]Wn'tj k rntjk rnXWn|jd8_nX|jd8_dS(Niitnexts'Database changed size during iteration.( tFalset_kill_iterationt_in_iterRRtfirsttgetattrt_bsddbtDBCursorClosedErrort RuntimeErrortsettDBNotFoundError(R R R R((s&/usr/lib64/python2.7/bsddb/__init__.pyt__iter__ks4     ccsG|js dSt|_|jd7_yy|j}t|j}|d}|Vt|d}xyt|}|d}|VWqgtj k r|jrt dn|j}t|j |dddt|d}qgXqgWn'tj k rntj k rnXWn|jd8_nX|jd8_dS(NiiRs'Database changed size during iteration.( RRRRRRRRRRRRR(R R tkvR R((s&/usr/lib64/python2.7/bsddb/__init__.pyt iteritemss<         (t__name__t __module__RR RR(((s&/usr/lib64/python2.7/bsddb/__init__.pyR^s   )t _DBWithCursorcBseZdZdZdZdZddZdZdZdZ e j dkrid Z nd Z d ZdZdZdZdZdZdZe j ddkreZndZdZdZdZRS(s A simple wrapper around DB that makes it look like the bsddbobject in the old module. It uses a cursor as needed to provide DB traversal. cCsJ||_|jjdd|_d|_i|_d|_t|_dS(Ni( Rtset_get_returns_noneRtdbct saved_dbc_keyR RRR(R R((s&/usr/lib64/python2.7/bsddb/__init__.pyt__init__s     cCs|jdS(N(tclose(R ((s&/usr/lib64/python2.7/bsddb/__init__.pyt__del__scCs\|jdkrXt|jj|_|jdk rXt|jj|jd|_qXndS(N(R$RRRRR%R(R ((s&/usr/lib64/python2.7/bsddb/__init__.pyt _checkCursors icCs|jrq|j}d|_|r^y#t|jdddd|_Wq^tjk rZq^Xnt|j~nx<|jj D]+}|}|dk rt|jqqWdS(Ni( R$RRtcurrentR%RtDBErrorR'R tvalues(R tsavetctcref((s&/usr/lib64/python2.7/bsddb/__init__.pyt _closeCursorss   #   cCs|jdkrtdndS(Ns$BSDDB object has already been closed(RRterror(R ((s&/usr/lib64/python2.7/bsddb/__init__.pyt _checkOpenscCs |jdk S(N(RR(R ((s&/usr/lib64/python2.7/bsddb/__init__.pytisOpenscsjtfdS(Ncs tjS(N(tlenR((R (s&/usr/lib64/python2.7/bsddb/__init__.pyRs(R2R(R ((R s&/usr/lib64/python2.7/bsddb/__init__.pyt__len__s iicCs5|jr(ttt|jjSttS(N(R3treprtdictRRtitems(R ((s&/usr/lib64/python2.7/bsddb/__init__.pyt__repr__s cs jtfdS(Ncs jS(N(R((R R (s&/usr/lib64/python2.7/bsddb/__init__.pyRs(R2R(R R ((R R s&/usr/lib64/python2.7/bsddb/__init__.pyt __getitem__ s csXjjjr5kr5t_nfd}t|dS(NcsjR?R'RARBRDRt__next__RGRRHRI(((s&/usr/lib64/python2.7/bsddb/__init__.pyR"s0                R.ic Cst||} t|} tj| } | j||dk rS| j|n|dk ro| j|n|dk r| j|n|dk r| j |n| j |tj | |t | S(N( t _checkflagt _openDBEnvRtDBt set_flagsRt set_pagesizet set_lordert set_h_ffactort set_h_nelemtopentDB_HASHR"( tfiletflagtmodetpgsizetffactortnelemt cachesizetlorderthflagstflagstetd((s&/usr/lib64/python2.7/bsddb/__init__.pythashopenas      c Cst||} t|} tj| } |dk rF| j|n|dk rb| j|n| j||dk r| j|n|dk r| j |n| j |tj | |t | S(N( RNRORRPRRRRSRQt set_bt_minkeyt set_bt_maxkeyRVtDB_BTREER"( RXRYRZtbtflagsR^t maxkeypaget minkeypageR[R_RaRbRc((s&/usr/lib64/python2.7/bsddb/__init__.pytbtopenqs      c Cst||} t|} tj| } |dk rF| j|n|dk rb| j|n| j||dk r| j|n|dk r| j |n| dk r| j | n| dk r| j | n| j |tj | |t| S(N(RNRORRPRRRRSRQt set_re_delimt set_re_lent set_re_sourcet set_re_padRVtDB_RECNOR"(RXRYRZtrnflagsR^R[R_trlentdelimtsourcetpadRaRbRc((s&/usr/lib64/python2.7/bsddb/__init__.pytrnopens$        cCstj}|dk rC|dkr7|jd|qCtdn|jtj|jdtjtj Btj Btj Btj B|S(NiPiscachesize must be >= 20480t.( RtDBEnvRt set_cachesizeR1t set_lk_detecttDB_LOCK_DEFAULTRVt DB_PRIVATEt DB_CREATEt DB_THREADt DB_INIT_LOCKt DB_INIT_MPOOL(R^Rb((s&/usr/lib64/python2.7/bsddb/__init__.pyROs    /cCs|dkrtj}n|dkr-d}n|dkrEtj}ng|dkr]tj}nO|dkrtj}|dk rtjj|rtj|qn td|tj BS(NtrtrwitwR.tns+flags should be one of 'r', 'w', 'c' or 'n'( Rt DB_RDONLYR}RtostpathtisfiletunlinkR1R~(RYRXRa((s&/usr/lib64/python2.7/bsddb/__init__.pyRNs           (ii(ii(ii()RJRKRLtabsolute_importtwarningst py3kwarningR twarnpy3ktDeprecationWarningtfilterwarningst_pybsddbRtbsddb3.dbutilsRRt bsddb.dbutilst ImportErrortmodulesRt_dbt __version__R+R1RtweakrefRtUserDictt DictMixintMutableMappingt collectionsRR"RRdRkRvRORNtthreadtTR~(((s&/usr/lib64/python2.7/bsddb/__init__.pyt(sb                   b