ó }®¸Qc@s!dZddlZddlZddlZddlZddlZejddkrdddlZnzejd(kr‚ddlZn\ddl Z e j ƒZ e j ƒz)e j ddd d eƒddlZWde jƒX[ ydd lmZWn!ek rdd lmZnXd efd „ƒYZdefd„ƒYZdd)d„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdZdZd„ZdZdZ dZ!d „Z"d!„Z#d"„Z$d#„Z%d$„Z&d%„Z'd&d*d'„ƒYZ(dS(+s$Id$iÿÿÿÿNiiiitignoretmessages1the cPickle module has been removed in Python 3.0tcategory(tdbt TableDBErrorcBseZRS((t__name__t __module__(((s$/sys/lib/python2.7/bsddb/dbtables.pyR>stTableAlreadyExistscBseZRS((RR(((s$/sys/lib/python2.7/bsddb/dbtables.pyR@stCondcBseZdZd„ZRS(s!This condition matches everythingcCsdS(Ni((tselfts((s$/sys/lib/python2.7/bsddb/dbtables.pyt__call__Fs(RRt__doc__R (((s$/sys/lib/python2.7/bsddb/dbtables.pyRDst ExactCondcBs eZdZd„Zd„ZRS(s)Acts as an exact match condition functioncCs ||_dS(N(t strtomatch(R R((s$/sys/lib/python2.7/bsddb/dbtables.pyt__init__KscCs ||jkS(N(R(R R ((s$/sys/lib/python2.7/bsddb/dbtables.pyR Ms(RRR RR (((s$/sys/lib/python2.7/bsddb/dbtables.pyR Is t PrefixCondcBs eZdZd„Zd„ZRS(s9Acts as a condition function for matching a string prefixcCs ||_dS(N(tprefix(R R((s$/sys/lib/python2.7/bsddb/dbtables.pyRRscCs|t|jƒ |jkS(N(tlenR(R R ((s$/sys/lib/python2.7/bsddb/dbtables.pyR Ts(RRR RR (((s$/sys/lib/python2.7/bsddb/dbtables.pyRPs t PostfixCondcBs eZdZd„Zd„ZRS(s:Acts as a condition function for matching a string postfixcCs ||_dS(N(tpostfix(R R((s$/sys/lib/python2.7/bsddb/dbtables.pyRYscCs|t|jƒ |jkS(N(RR(R R ((s$/sys/lib/python2.7/bsddb/dbtables.pyR [s(RRR RR (((s$/sys/lib/python2.7/bsddb/dbtables.pyRWs tLikeCondcBs&eZdZejd„Zd„ZRS(sÇ Acts as a function that will match using an SQL 'LIKE' style string. Case insensitive and % signs are wild cards. This isn't perfect but it should work for the simple common cases. cCsfd}x$|D]}|j|d|ƒ}q W|jddƒ|_tjd|jd|ƒ|_dS(Ns.*+()[]?s\t%s.*t^t$(treplacetlikestrtretcompile(R Rtre_flagstchars_to_escapetchar((s$/sys/lib/python2.7/bsddb/dbtables.pyRds  cCs|jj|ƒS(N(Rtmatch(R R ((s$/sys/lib/python2.7/bsddb/dbtables.pyR ls(RRR Rt IGNORECASERR (((s$/sys/lib/python2.7/bsddb/dbtables.pyR^st__TABLE_NAMES__s ._COLUMNS__cCs|tS(N(t_columns(ttable((s$/sys/lib/python2.7/bsddb/dbtables.pyt _columns_keyuss._DATA_.s ._ROWID_.icCs|t|t|S(N(t_data(R$tcoltrowid((s$/sys/lib/python2.7/bsddb/dbtables.pyt _data_keyscCs|t|tS(N(R&(R$R'((s$/sys/lib/python2.7/bsddb/dbtables.pyt_search_col_data_key„scCs|tS(N(R&(R$((s$/sys/lib/python2.7/bsddb/dbtables.pyt_search_all_data_key‡scCs|t|tS(N(t_rowid(R$R(((s$/sys/lib/python2.7/bsddb/dbtables.pyt _rowid_keyŠscCs|tS(N(R,(R$((s$/sys/lib/python2.7/bsddb/dbtables.pyt_search_rowid_keyscCs`|jtƒdksT|jtƒdksT|jtƒdksT|jtƒdkrXdSdSdS(s‚Verify that the given string does not contain any metadata strings that might interfere with dbtables database operation. iiN(tfindt_table_names_keyR#R&R,(R ((s$/sys/lib/python2.7/bsddb/dbtables.pytcontains_metastringss t bsdTableDBcBsÈeZdddddd„Zd„Zd„Zdd„Zd„Zd„Zd„Zd „Z d „Z d „Z d „Z d „Z d„Ziid„Zid„Zid„Zd„Zd„ZRS(ii€c s"d |_tj}|r(|tjO}ntjtjBtjBtjB|B} y|tjO}Wnt k rnnX|r…| tj B} ntj ƒ|_ |j j tjƒ|j j||| Bƒ|rÔ|tjO}ntj|j ƒ|_|jjdƒ|jjtjƒ|jj|tj||B|ƒ||_tjddkrdtfd„ƒY‰dtf‡fd†ƒY} | |jƒ|_n|j jƒ} yVt|jdƒt| ƒsót|jd |jjƒttjgdƒd | ƒnWn| j ƒ‚n X| j!ƒi|_"d S( sÄbsdTableDB(filename, dbhome, create=0, truncate=0, mode=0600) Open database name in the dbhome Berkeley DB directory. Use keyword arguments when calling this constructor. iiit cursor_py3kcBs,eZd„Zd„Zd„Zd„ZRS(cSs ||_dS(N(t _dbcursor(R tdbcursor((s$/sys/lib/python2.7/bsddb/dbtables.pyRÄscSs |jjƒS(N(R4tclose(R ((s$/sys/lib/python2.7/bsddb/dbtables.pyR6ÇscSsT|jjt|dƒƒ}|dk rP|djdƒ|djdƒf}n|S(Ns iso8859-1ii(R4t set_rangetbytestNonetdecode(R tsearchtv((s$/sys/lib/python2.7/bsddb/dbtables.pyR7Ês  cSsNt|jdƒƒ}|dk rJ|djdƒ|djdƒf}n|S(Ntnextis iso8859-1i(tgetattrR4R9R:(R R<((s$/sys/lib/python2.7/bsddb/dbtables.pyt__next__Ñs  (RRRR6R7R?(((s$/sys/lib/python2.7/bsddb/dbtables.pyR3Ãs   tdb_py3kcs}eZd„Zd ‡fd†Zd d„Zdd d„Zd d„Zd dd„Zd dd„Z d d„Z d „Z RS( cSs ||_dS(N(t_db(R R((s$/sys/lib/python2.7/bsddb/dbtables.pyRÙscsˆ|jjd|ƒƒS(Nttxn(RAtcursor(R RB(R3(s$/sys/lib/python2.7/bsddb/dbtables.pyRCÜscSs%t|jdƒt|dƒd|ƒS(Nthas_keys iso8859-1RB(R>RAR8(R tkeyRB((s$/sys/lib/python2.7/bsddb/dbtables.pyRDßsicSsLt|dƒ}|dk r-t|dƒ}n|jj||d|d|ƒS(Ns iso8859-1tflagsRB(R8R9RAtput(R REtvalueRFRB((s$/sys/lib/python2.7/bsddb/dbtables.pyRGãs cSs(t|dƒ}|jj||d|ƒS(Ns iso8859-1RB(R8RARG(R RERHRB((s$/sys/lib/python2.7/bsddb/dbtables.pyt put_byteséscSsOt|dƒ}|jj|d|d|ƒ}|dk rK|jdƒ}n|S(Ns iso8859-1RBRF(R8RAtgetR9R:(R RERBRFR<((s$/sys/lib/python2.7/bsddb/dbtables.pyRJís  cSs+t|dƒ}|jj|d|d|ƒS(Ns iso8859-1RBRF(R8RARJ(R RERBRF((s$/sys/lib/python2.7/bsddb/dbtables.pyt get_bytesôscSs%t|dƒ}|jj|d|ƒS(Ns iso8859-1RB(R8RAtdelete(R RERB((s$/sys/lib/python2.7/bsddb/dbtables.pyRLøscSs |jjƒS(N(RAR6(R ((s$/sys/lib/python2.7/bsddb/dbtables.pyR6üsN( RRRR9RCRDRGRIRJRKRLR6((R3(s$/sys/lib/python2.7/bsddb/dbtables.pyR@Øs    RDRIRBN(#R9Rt DB_THREADt DB_CREATEt DB_INIT_MPOOLt DB_INIT_LOCKt DB_INIT_LOGt DB_INIT_TXNtDB_AUTO_COMMITtAttributeErrort DB_RECOVERtDBEnvtenvt set_lk_detecttDB_LOCK_DEFAULTtopent DB_TRUNCATEtDBtset_get_returns_nonet set_flagstDB_DUPtDB_BTREEt dbfilenametsyst version_infotobjectt txn_beginR>R0RGtpickletdumpstaborttcommitt_bsdTableDB__tablecolumns( R tfilenametdbhometcreatettruncatetmodetrecovertdbflagstmyflagst flagsforenvR@RB((R3s$/sys/lib/python2.7/bsddb/dbtables.pyRŸsF  "   '#  cCs|jƒdS(N(R6(R ((s$/sys/lib/python2.7/bsddb/dbtables.pyt__del__scCsT|jdk r(|jjƒd|_n|jdk rP|jjƒd|_ndS(N(RR9R6RW(R ((s$/sys/lib/python2.7/bsddb/dbtables.pyR6s    cCs|jj|ƒdS(N(RWttxn_checkpoint(R tmins((s$/sys/lib/python2.7/bsddb/dbtables.pyt checkpointscCs|jjƒdS(N(Rtsync(R ((s$/sys/lib/python2.7/bsddb/dbtables.pyRx scCs–dGH|jjƒ}y]|jƒ\}}xDti||6ƒGH|jƒ}|r_|\}}q,|jƒdSq,Wntjk r‘|jƒnXdS(s*Print the database to stdout for debuggings5******** Printing raw database for debugging ********N(RRCtfirsttreprR=R6tDBNotFoundError(R tcurREtdataR=((s$/sys/lib/python2.7/bsddb/dbtables.pyt _db_print#s   cCsÃd }y^t|ƒr$tdƒ‚nx)|D]!}t|ƒr+tdƒ‚q+q+Wt|ƒ}t|jdƒ|ƒr€td‚n|jjƒ}t|jd|jj ƒ|t j |dƒd|ƒt j t|jd|jj ƒtd|d tjƒƒ}|j|ƒ|jjtd|ƒt|jd|jj ƒtt j |dƒd|ƒ|jƒd }WnXtjk r¾}|rŒ|jƒntjd kr«t|d‚q¿t|jd‚nXd S(s”CreateTable(table, columns) - Create a new table in the database. raises TableDBError if it already exists or for other DB errors. s-bad table name: contains reserved metastringss.bad column name: contains reserved metastringsRDstable already existsRIiRBRKRFiiN(ii(R9R1t ValueErrorR%R>RRRWReRGRfRgtloadsRJR0tDB_RMWtappendRLRitDBErrorRhRbRcRtargs(R R$tcolumnsRBtcolumntcolumnlist_keyt tablelisttdberror((s$/sys/lib/python2.7/bsddb/dbtables.pyt CreateTable5s:      '    cCs|t|ƒrtd‚nt|ƒ}t|jdƒ|ƒs@gSt|jd|jjƒ|ƒ}|rttj|ƒSgSdS(s\Return a list of columns in the given table. [] if the table doesn't exist. s-bad table name: contains reserved metastringsRDRKN(R1RR%R>RRJRfR€(R R$R‡tpickledcolumnlist((s$/sys/lib/python2.7/bsddb/dbtables.pytListTableColumnses     cCs-|jjtƒ}|r%tj|ƒSgSdS(s)Return a list of tables in this database.N(Rtget_getR0RfR€(R tpickledtablelist((s$/sys/lib/python2.7/bsddb/dbtables.pyt ListTablesws c Cs¸y|j||ƒWntk r³d}y+t|ƒ}|jjƒ}tjt|j d|j j ƒ|d|dt j ƒƒ}i}x|D]}|||RRJRtcopyR‚RLRGRgRit_bsdTableDB__load_column_infoRƒRhRbRcRR„( R R$R…RBR‡t oldcolumnlistt oldcolumnhashtct newcolumnlistR‰((s$/sys/lib/python2.7/bsddb/dbtables.pytCreateOrExtendTables>    '       cCs…y+t|jd|jjƒt|ƒƒ}Wn$tjk rQtd|f‚nX|sktd|f‚ntj|ƒ|j|RRJR%R{RRfR€Rj(R R$t tcolpickles((s$/sys/lib/python2.7/bsddb/dbtables.pyt__load_column_info¹s cCsÔd}xÇ|sÏg}x-ttƒD]}|jtjddƒƒq"Wtjdt|Œ}tjddkr€|j dƒ}ny/|j j t ||ƒd d|dt jƒWnt jk rÅq Xd}q W|S( s"Create a new unique row identifieriiÿtBis iso8859-1RBRFiN(txranget_rowid_str_lenR‚trandomtrandinttstructtpackRbRcR:RRGR-R9tDB_NOOVERWRITEtDBKeyExistError(R R$RBtuniquetblisttxtnewid((s$/sys/lib/python2.7/bsddb/dbtables.pyt __new_rowidÅs ! c Cs›d}yt|jdƒt|ƒƒs3td‚n||jkrR|j|ƒnx=|jƒD]/}|j|j|ƒs_td|f‚q_q_W|j j ƒ}|j |d|ƒ}x?|j ƒD]1\}}|jj t|||ƒ|d|ƒqÃW|jƒd}Wn‹tjk r–}tjƒ}|rV|jƒ|jjt||ƒƒntjd kr|t|d|d‚q—t|jd|d‚nXdS( sƒInsert(table, datadict) - Insert a new row into the table using the keys+values from rowdict as the column values. RDs unknown tablesunknown column: %rRBiiiN(ii(R9R>RR%RRjR‘tkeystcountRWRet_bsdTableDB__new_rowidtitemsRGR)RiRƒRbtexc_infoRhRLR-RcR„( R R$trowdictRBR†R(tdataitemR‰tinfo((s$/sys/lib/python2.7/bsddb/dbtables.pytInsertàs. )    c CsyA|j|g|ƒ}|jƒ}x|jƒD] }d}yßxØ|D]Ð}|jjƒ}yJ|jjt|||ƒd|ƒ} |jjt|||ƒd|ƒWntj k rÂd} nX||| ƒ} | dk r|jj t|||ƒ| d|ƒn|j ƒd}qGWWq1|r5|j ƒn‚q1Xq1WWnEtj k rˆ} tjdkrut| d‚q‰t| jd‚nXdS(sModify(table, conditions={}, mappings={}) - Modify items in rows matching 'conditions' using mapping functions in 'mappings' * table - the table name * conditions - a dictionary keyed on column names containing a condition callable expecting the data string as an argument and returning a boolean. * mappings - a dictionary keyed on column names containing a condition callable expecting the data string as an argument and returning the new string for that column. RBiiiN(ii(t_bsdTableDB__SelectR§R9RWReRRJR)RLR{RGRiRhRƒRbRcRR„( R R$t conditionstmappingstmatching_rowidsR…R(RBR†R­R‰((s$/sys/lib/python2.7/bsddb/dbtables.pytModify s@            c Csiy|j|g|ƒ}|j|}xô|jƒD]æ}d}y«|jjƒ}xK|D]C}y&|jjt|||ƒd|ƒWqWtj k r™qWXqWWy#|jjt ||ƒd|ƒWntj k r×nX|j ƒd}Wq2tj k r}|r|j ƒn‚q2Xq2WWnEtj k rd}tjdkrQt|d‚qet|jd‚nXdS(sDelete(table, conditions) - Delete items matching the given conditions from the table. * conditions - a dictionary keyed on column names containing condition functions expecting the data string as an argument and returning a boolean. RBiiiN(ii(R°RjR§R9RWReRRLR)R{R-RiRƒRhRbRcRR„( R R$R±R³R…R(RBR†R‰((s$/sys/lib/python2.7/bsddb/dbtables.pytDeleteBs6    #   cCs¦yT||jkr"|j|ƒn|dkr>|j|}n|j|||ƒ}WnEtjk r›}tjdkrˆt|d‚qœt|j d‚nX|j ƒS(s²Select(table, columns, conditions) - retrieve specific row data Returns a list of row column->value mapping dictionaries. * columns - a list of which column data to return. If columns is None, all columns will be returned. * conditions - a dictionary keyed on column names containing callable conditions expecting the data string as an argument and returning a boolean. iiiN(ii( RjR‘R9R°RRƒRbRcRR„tvalues(R R$R…R±R³R‰((s$/sys/lib/python2.7/bsddb/dbtables.pytSelectos  cCs‹||jkr|j|ƒn|dkr;|j|}nxA||jƒD]/}|j|j|ƒsLtd|f‚qLqLWi}i}d„}tjd kr¿|j ƒ}|j |ƒnvg}xm|j ƒD]_} xVt |ƒD];\} } || | ƒ} | dkrå|j | | ƒPqåqåW|j | ƒqÒW|jjƒ} d}xH|D]@\}}|d}t||ƒ}||kr‹d}nd}yÈ| j|ƒ\}}x¬|t|ƒ |krW|t }||krB| sì||ƒr||kri||RJR0RtremoveRRGRgRiRjRƒRhRR„( R R$RBR|t table_keyRER}RˆR‰((s$/sys/lib/python2.7/bsddb/dbtables.pytDropsT        (RRRRtR6RwRxR~RŠRŒRR–R‘R©R¯R´RµR·R°RÓ(((s$/sys/lib/python2.7/bsddb/dbtables.pyR2žs& r      0   :  ,6 -  ‡(ii((()t_cvsidRRbRRœRžRcRftcPickletwarningstcatch_warningstwt __enter__tfilterwarningstDeprecationWarningt__exit__tbsddb3Rt ImportErrortbsddbt StandardErrorRRRR RRRR0R#R%R&R,R›R)R*R+R-R.R1R2(((s$/sys/lib/python2.7/bsddb/dbtables.pytsV