m gBc@sidkZdkZdklZlZlZlZlZlZdklZdkl Z l Z dkl Z dk Z dei Z daddZdZe id e iiZd fd YZd fd YZdfdYZdZdZdfdYZdfdYZdfdYZdfdYZdaddZ ddZ!hZ"hZ#hZ$dZ%dZ&dZ'd Z(d!Z)d"Z*d#d$Z+d%Z,d&Z-ei.e-d'Z/d(Z0d)Z1d*fd+YZ2dd,dd-Z3d.fd/YZ4dd,d#d#d0Z5d1fd2YZ6dd,d3Z7dS(4N(sVIRTUALsMULTIPLEs REFERENCEDs REFERENCEDAsLOOKUPsTEXTUAL(sDTYPE_LARGESTRING(sCURSOR_RETURNS_SETsCURSOR_RETURNS_DBITEMS(sCURSOR_RETURNS_COUNTs 1.3 [lib %s]tcCsdk}|ihd|<a|o%tid|d||fgntid|d|gytidd}WnnEX|id}x2|D]*}|t ijot ii |qqWdS(Ntapp_roots%s/defaults.configs %s/%s.configs%s/edbm.configtpythontpatht:( t ConfigParserRtconfigtnametreadtgettpypathtsplittpathstsystappend(RRR R R((t-/data/zmath/mirror/zope/Products/edbm/edbm.pytsetroot s %cCsti||S(N(t_edbmtaccesstipR(RR((RR ss([^\[]*)\[(.+?)\]tDbItemcBsYtZdZdZdZdZdZdZdZdZ d Z RS( NcCs ||_dS(N(tfactorytself(RR((Rt__init__&scCs)|ii||}t||||S(N(RRtbuildRtvaluetsetattr(RRR((Rt __getattr__(scCsdS(Ni((R((Rt __nonzero__,scCs t||S(N(tgetattrRR(RR((Rt __getitem__.scCs|ii||S(N(RRtcountR(RR((RR0scCs |iiS(N(RRtschema(R((Rt getschema2scCs|ii|||S(N(RRtselectRtfilter(RRR#((RR"4scCs |iS(N(Rt__repr__(R((Rt__str__6scCsn|iid}g}xH|D]@}|iid|}|id|tt ||fqWdi |S(Ntfieldstattrinfos%s %ss ( RRR tnamesttextRtinfoRtstrRtjoin(RR*RR)R(((RR$8s*( t__name__t __module__RRRRRR!R"R%R$(((RR%s        t ResultSetcBstZdZdZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZRS(NcCs(||_||_d|_h|_dS(N(RRtresulttNonetencodert subresults(RRR0((RRAs   cCst|i|S(N(RRR0R(RR((RRFscCs t|iS(N(tlenRR0(R((Rt__len__HscCs |idjS(Ni(Rttotal(R((RRJscCsI|i|}|io|i|}n|io|i|Sn|S(N(RR0tindextdataR2R(RR7R8((RRLs    cCs6|i||!}t|i|}|i|i |S(N( RR0tlowthightrsR/Rtrett setencoderR2(RR9R:R;R<((Rt __getslice__SscCst|i|ii|iS(N(R/RRR0tintertother(RR@((Rt__and__XscCst|i|ii|iS(N(R/RRR0tunionR@(RR@((Rt__or__ZscCst|i|ii|iS(N(R/RRR0tdiffR@(RR@((Rt__xor__]scCs ||ijS(N(titemRR0(RRF((Rt __contains___scCs |iiS(N(RR0tids(R((RRHascCs ||_dS(N(R2R(RR2((RR=cscCs?|ii|o|i|i|n|g|i|RARCRERGRHR=RKRLRR(((RR/@s              tFactorycBs5tZdZdZdZdZdZRS(NcCs|i|_|i|_dS(N(RNR RRtdbname(RRN((RRss cCst|}d}xW|idD]H}||}|djo|d7}q nt ||||d7}q W|||_ y||d}Wnt j on X||_ |S(NiR&i( RRRFtiR RR8RR1Rt_idt IndexErrort _blob_ref(RR8RRURRF((Rt__call__vs"      c Csy|id|}|i|i|i|it@f\}}}}t ||}|pdSnt|} | i||S(NR'i(RR RR*tlocaltforeignRTtflagstMULTIPLEtlocalkeyt foreignkeyt foreignmodeltmultipleRRFRtgetdbt foreigndbt count_key( RRFRR*RaR_R`RR^Rc((RRs. cCsY|id|}|it@o|i|i}}t ||}|pdSnt |}t|tgjoMg} xh|D]8}y||}Wn| idqX| i|qWn%y||}Wn d} nX|} | Sn|it@oT|i} | id}|i|}x!|ot ||i}q'W|Sn|it@oMd}d|}t||o%t ||}||||}n|Sn|it@pU|i t!joA|i"}|o)|\} } t&|i'i(| | SndSqn|i|i)|i'|it*@f\}}}} t ||}|pdSnt&|}t|tgjog} x|D]n}| pB|i/||}|i0o| i|dq| idq|i/||}| i|qWnT| p4|i/||}|i0o|d} qUd} n|i/||}|} | S(NR't.tmake_Ri(1RR RR*R\tLOOKUPRZttbnameR^RRFRR1tgettbttablettypeR<tvalR0Rt REFERENCEDAtsourceR tstacktreversetobjtpoptVIRTUALt maker_namethasattrtmakert REFERENCEDtdtypetDTYPE_LARGESTRINGRXtxtoffsettlengRbRTtgetblobR[R]R_R`RaRct find_by_keyR6(RRFRRhR0RjR^RlR`R<RnR|R{RaRoR*RqR_RtRRzRvRc((RRs        .    c Cs|i|}|it@p tdn|i|i|i |it @f\} }} }t|| }|pdSnt| }|id|||fdd} | S(Ns"attribute is not a referenced items %s = %s & %siid(RR'RR*R\Rwt TypeErrorRZR[RTR]R^R_RcRaRRFRR1RbRNRRR#R0( RRFRR#R*RaR_RNRR0R^Rc((RR"s  . "(R-R.RRYRRR"(((RRSrs    TcCs|S(N(RF(RF((Rt nullfactoryscCs ti|S(N(RR R(R((RR stDataBasecBstZdZdZdZdZdZdZdZdZ eZ d Z d Z d d Z d d Zd dZdZedZdZdZdZdZdZdZdZdZdZRS(NcCs(||_||_d|_d|_dS(N(RNRt_dbRTRR1R2t_factory(RRNRT((RRs   cCs ||_dS(N(RRR(RR((Rt setfactoryscCs ||_dS(N(R2R(RR2((RR=scCs t|iS(N(R4RR(R((RR5 scCst|i|S(N(RRRR(RR((RR scCsK|i|}|io|i|p|}|io|i|p|S(N(RRR7RFR2R(RR7RF((RR s  cCsP|ii|}|io|i|p|}|io|i|p|S(N(RRt get_by_pkeytkeyRFR2R(RRRF((RRs cCsS|ii||}|io|i|p|}|io|i|p|S(N(RRt get_by_keytkeynametkeyvalueRFR2R(RRRRF((RRs cCsI|ii||}t|i|}|i o|i |i n|S(N( RRR~RRRQR/RR<R2R=(RRRR<RQ((RR~s  cCs|ii||S(N(RRRdRR(RRR((RRd sicCsO|ii||||}t|i |}|i o|i |i n|S(N( RRRRtquerytfirsttlasttflagRQR/RR<R2R=(RRRRRR<RQ((RRR"s  cCs^|} t|}|oI|ddi}g}|D]}||diddq8~}ng}g}d}x]|D]U\} }|id| } |id| i}|it@o tdn| i} t| }|id| i}|it@o tdn|it@o tdn|ii|} |dj o%|i o|i!| | }qPn+|ii!|| | |}|i pPn| i o2t#|i$| }||_|i&| |fq{q{W|djo|ii||}nt#|i$|}|i(o|i)|i(nx$|D]\} }|i*| |q1W| |_|S(NiiRR'sCannot join on a virtual attrsCannot join on a multiple key(+Rtoriginal_queryt filterparsertfilterststript_[1]RzR t subqueriesR3R1RQRMtsubqueryRR R*RZt localinfoR\Rst ValueErrorRTt foreigndbnameRbRcR[t foreigninfoR]RROtr1R6RLRR/Rt subresultRR<R2R=RK(RRRRRR<R3RRRRR*RMRRRRQRzRRc((Rtfindall2(sV 5               cCsI|ii||}t|i|}|i o|i |i n|S(N( RRRORRRQR/RR<R2R=(RRRR<RQ((RROXs  cCsL|ii||i}t|i|}|i o|i |i n|S(N( RRt find_in_setRtsetR0RQR/RR<R2R=(RRRR<RQ((RR^s  cCs%|ii|}t||i|S(N(RRtcursorRtctCursorRtoption(RRRR((RRdscCs|iidS(N(RRtclose(R((RRgscCs|ii|S(N(RRRR(RR((RRiscCs~|dj o"|ii|i|i|}n|iid|i|}t |i |}|i o|i |i n|S(N(tset1R1RRR,R0tset2RMRQR/RR<R2R=(RRRRMR<RQ((RR,ls " cCs6|ii||}|io|ii|p|S(N(RRtget_blobR{R|R+R2t encodestring(RR{R|R+((RR}uscCs|iidS(N(RRtset_blob_retrieve(R((RRxscCs|iidS(N(RRt returns_list(R((RRzscCs|iidS(N(RRt returns_dict(R((RR|scCs|ii|dS(N(RRt returns_insttklass(RR((RR~scCs"|ii|}t|i|S(N(RRR0RHtresR/R(RRHR((RR0s(R-R.RRR=R5RRRRR R~RdRRRRORtCURSOR_RETURNS_COUNTRRRR,R}RRRRR0(((RRs2            0          RcBs\tZdZdZdZdZdZdZdZdZ d d Z RS( NcCs#||_||_|i|dS(N(RRRt set_optionR(RRRR((RRs  cCs>|tjo|iitn|ii|||_dS(N(RtCURSOR_RETURNS_DBITEMSRRRtCURSOR_RETURNS_SET(RR((RRs cCs|ii\}}|itjo t|i|}||fSnC|it jo2|d}||io|i|p|fSn||fS(Ni( RRRRRRRR/RR;RRF(RR;RRFR((RRs (cCs|ii\}}|itjo t|i|}||fSnC|it jo2|d}||io|i|p|fSn||fS(Ni( RRRRRRRR/RR;RRF(RR;RRFR((RRs (cCs|ii\}}|itjo t|i|}||fSnC|it jo2|d}||io|i|p|fSn||fS(Ni( RRtnextRRRRR/RR;RRF(RR;RRFR((RRs (cCs|ii\}}|itjo t|i|}||fSnJ|it jo9|d}|io||i|fSn||fSn||fS(Ni( RRtpreviousRRRRR/RR;RRF(RR;RRFR((RRs  cCs|ii|S(N(RRRIR(RR((RRIscCs|ii|\}}|itjo t|i|}||fSnC|it jo2|d}||io|i|p|fSn||fS(Ni( RRt set_locationRRRRR/RR;RRF(RRR;RRF((RRs (icCsdS(N((RRtlimit((Rtlooks( R-R.RRRRRRRIRR(((RRs    tTablecBs,tZdZdZdZdZRS(NcCs||_d|_dS(N(ttbRt_tbR1R2(RR((RRs cCs ||_dS(N(R2R(RR2((RR=scCs0|ii|}|io|i|p|S(N(RRR RRFR2(RRRF((RRscCs|iidS(N(RRR(R((RRs(R-R.RR=RR(((RRs   t ItemTablecBs,tZdZdZdZdZRS(NcCs||_d|_dS(N(RRRR1R2(RR((RRs cCs ||_dS(N(RRR(RR((RRscCs ||_dS(N(R2R(RR2((RR=scCsP|ii|}|io|i|p|}|io|i|p|S(N(RRR RRFR2R(RRRF((RRs (R-R.RRR=R(((RRs   s iso-8859-1cCs |adS(N(tenct extencoding(R((Rtset_external_encodingscCsTdk}|djo|i|}n!|djo|i|}n|pdS(Ns iso-8859-1sutf-8(tencoderstencodingtTex2ISOEncoderR RtTex2UTF8EncoderR1(R RRR((Rt getencoders    cCs|t|