ó FRTc@sddlZddlmZddlmZddlmZddlZddlZddl Zddl m Z ddl m Z mZdefd„ƒYZd „Zd efd „ƒYZd efd „ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZd efd!„ƒYZd"efd#„ƒYZd$efd%„ƒYZd&efd'„ƒYZ d(efd)„ƒYZ!d*efd+„ƒYZ"dS(,iÿÿÿÿN(tKey(tPassword(tQuery(tBlob(tsixt long_typetPropertycBs˜eZeZdZdZdZd d d ed d ed„Z d„Z d„Z d„Z d„Z d„Zd„Zd„Zd „Zd „Zd „ZRS( tcCsh||_||_||_||_||_||_|jrRd|j|_n d|_||_dS(Nt_(t verbose_nametnametdefaulttrequiredt validatortchoicest slot_nametunique(tselfR R R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyt__init__(s        cCs(|r |jƒt||jƒSdSdS(N(tloadtgetattrRtNone(Rtobjtobjtype((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyt__get__6s cCs—|j|ƒyH|jrTt|d|jƒrTt|d|jƒ}||ƒ}nWn(tk rtjjd|jƒnXt ||j |ƒdS(Ns on_set_%ssException running on_set_%s( tvalidatet_loadedthasattrR Rt Exceptiontbototlogt exceptiontsetattrR(RRtvaluetfnc((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyt__set__=s  cCs&||_||_d|j|_dS(NR(t model_classR R(RR$t property_name((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyt__property_config__Js  cCsot|tjƒs$||jƒkr(dSt||jƒsktd|jj|j|jt |ƒfƒ‚ndS(Ns,Validation Error, %s.%s expecting %s, got %s( t isinstanceRt string_typest default_valuet data_typet TypeErrorR$t__name__R ttype(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pytdefault_validatorOs$cCs|jS(N(R (R((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR)UscCs˜|jr+|dkr+td|jƒ‚n|jrn|rn||jkrntd||jj|jfƒ‚n|jr‡|j|ƒn |j|ƒ|S(Ns%s is a required propertys%s not a valid choice for %s.%s( R Rt ValueErrorR RR$R,R R.(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRXs%  cCs| S(N((RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pytemptycscCst||jƒS(N(RR (Rtmodel_instance((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pytget_value_for_datastorefscCs|S(N((RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pytmake_value_from_datastoreiscCs t|jƒr|jƒS|jS(N(tcallableR(R((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyt get_choicesls N(R,t __module__tstrR*t type_nameR R RtFalseRRR#R&R.R)RR0R2R3R5(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR!s         cCs`|dkrdSt|tjƒrFt|ƒdkr\tdƒ‚q\ntdt|ƒƒ‚dS(Nis&Length of value greater than maxlengthsExpecting String, got %s(RR'RR(tlenR/R+R-(R!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pytvalidate_stringrs  tStringPropertycBs,eZdZdddeeded„ZRS(tStringRcCs,tt|ƒj|||||||ƒdS(N(tsuperR<R(RR R R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR€sN(R,R6R8RR9R;R(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR<|s t TextPropertyc Bs8eZdZdddeddedd„Zd„ZRS(tTextRc Cs5tt|ƒj|||||||ƒ||_dS(N(R>R?Rt max_length( RR R R R R RRRA((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR‹s cCs{tt|ƒj|ƒ}t|tjƒsCtdt|ƒƒ‚n|jrwt |ƒ|jkrwt d|jƒ‚ndS(NsExpecting Text, got %ss)Length of value greater than maxlength %s( R>R?RR'RR(R+R-RAR:R/(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR’s N(R,R6R8RR9RR(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR?‡s   tPasswordPropertyc BsheZdZeZdZd d ded d ed d„Zd„Z d„Z d„Z d„Z d„Z RS( sà Hashed property whose original value can not be retrieved, but still can be compared. Works by storing a hash of the original value instead of the original value. Once that's done all that can be retrieved is the hash. The comparison obj.password == 'foo' generates a hash of 'foo' and compares it to the stored hash. Underlying data type for hashing, storing, and comparing is boto.utils.Password. The default hash function is defined there ( currently sha512 in most cases, md5 where sha512 is not available ) It's unlikely you'll ever need to use a different hash function, but if you do, you can control the behavior in one of two ways: 1) Specifying hashfunc in PasswordProperty constructor import hashlib class MyModel(model): password = PasswordProperty(hashfunc=hashlib.sha224) 2) Subclassing Password and PasswordProperty class SHA224Password(Password): hashfunc=hashlib.sha224 class SHA224PasswordProperty(PasswordProperty): data_type=MyPassword type_name="MyPassword" class MyModel(Model): password = SHA224PasswordProperty() RRc Cs5tt|ƒj|||||||ƒ||_dS(s¬ The hashfunc parameter overrides the default hashfunc in boto.utils.Password. The remaining parameters are passed through to StringProperty.__init__N(R>RBRthashfunc( RR R R R R RRRC((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRËs cCs|j|d|jƒ}|S(NRC(R*RC(RR!tp((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR3×scCs<tt|ƒj|ƒ}|r4t|ƒr4t|ƒSdSdS(N(R>RBR2R:R7R(RR1R!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR2Ûs cCsZt||jƒs=|jd|jƒ}|j|ƒ|}ntt|ƒj||ƒdS(NRC(R'R*RCtsetR>RBR#(RRR!RD((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR#âs   cCs+|jtt|ƒj||ƒd|jƒS(NRC(R*R>RBRRC(RRR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRéscCswtt|ƒj|ƒ}t||jƒrNt|ƒdkrstdƒ‚qsn%tdt|jƒt|ƒfƒ‚dS(Nis&Length of value greater than maxlengthsExpecting %s, got %s( R>RBRR'R*R:R/R+R-(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRìs N(R,R6t__doc__RR*R8RR9RR3R2R#RR(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRBšs-     t BlobPropertycBseZeZdZd„ZRS(tblobcCs||jƒkrrt|tƒsr|j|t|ƒƒ}d}|rQ|j}ntd|d|ƒ}|}qrntt|ƒj ||ƒdS(NR!tid( R)R'RRR-RRIR>RGR#(RRR!toldbRItb((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR#ùs  (R,R6RR*R8R#(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRGõst S3KeyPropertycBs\eZejjjZdZdZddde dde d„Z d„Z d„Z d„ZRS(tS3Keys^s3:\/\/([^\/]*)\/(.*)$cCs,tt|ƒj|||||||ƒdS(N(R>RLR(RR R R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR scCs¤tt|ƒj|ƒ}||jƒksB|t|jƒƒkrL|jƒSt||jƒrbdStj|j |ƒ}|rdSt d|jt |ƒfƒ‚dS(Ns&Validation Error, expecting %s, got %s( R>RLRR)R7R'R*tretmatchtvalidate_regexR+R-(RR!RO((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRs* cCsÔtt|ƒj||ƒ}|rÌt||jƒr7|Stj|j|ƒ}|rÐ|jj ƒ}|j |j dƒdt ƒ}|j |j dƒƒ}|sÅ|j|j dƒƒ}|jdƒn|Sn|SdS(NiRiR(R>RLRR'R*RNRORPt_managertget_s3_connectiont get_buckettgroupR9tget_keytnew_keytset_contents_from_string(RRRR!ROts3tbuckettk((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRscCs=tt|ƒj|ƒ}|r5d|jj|jfSdSdS(Ns s3://%s/%s(R>RLR2RYR R(RR1R!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR2,sN(R,R6RRXtkeyRR*R8RPRR9RRRR2(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRLs  tIntegerPropertyc BsSeZeZdZdddeddeddd„ Zd„Zd„Z d„Z RS( tIntegeriiÿÿÿi€c Cs>tt|ƒj|||||||ƒ||_| |_dS(N(R>R\Rtmaxtmin( RR R R R R RRR^R_((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR9s( cCsrt|ƒ}tt|ƒj|ƒ}||jkrItd|jƒ‚n||jkrntd|jƒ‚n|S(NsMaximum value is %dsMinimum value is %d(tintR>R\RR^R/R_(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR?s cCs |dkS(N(R(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR0HscCs:|dks|dkr!d}ntt|ƒj||ƒS(NRi(RR>R\R#(RRR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR#Ks N( R,R6R`R*R8RR9RRR0R#(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR\4s  t LongPropertycBsDeZeZdZdddedded„Zd„Zd„Z RS(tLongicCs,tt|ƒj|||||||ƒdS(N(R>RaR(RR R R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRVscCsrt|ƒ}tt|ƒj|ƒ}d}d}||krOtd|ƒ‚n||krntd|ƒ‚n|S(NI€IÿÿÿÿÿÿÿsMaximum value is %dsMinimum value is %d(RR>RaRR/(RR!R_R^((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRZs   cCs |dkS(N(R(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR0esN( R,R6RR*R8RR9RRR0(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRaQs   tBooleanPropertycBs;eZeZdZddeedded„Zd„ZRS(tBooleancCs,tt|ƒj|||||||ƒdS(N(R>RcR(RR R R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRnscCs |dkS(N(R(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR0rsN( R,R6tboolR*R8RR9RR0(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRcis  t FloatPropertycBsDeZeZdZdddedded„Zd„Zd„Z RS(tFloatgcCs,tt|ƒj|||||||ƒdS(N(R>RfR(RR R R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR{scCs(t|ƒ}tt|ƒj|ƒ}|S(N(tfloatR>RfR(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRs cCs |dkS(N(R(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR0„sN( R,R6RhR*R8RR9RRR0(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRfvs   tDateTimePropertyc BseeZdZejZdZdeeddedded„ Zd„Z d„Z d„Z d„Z RS(s£This class handles both the datetime.datetime object And the datetime.date objects. It can return either one, depending on the value stored in the databasetDateTimec Cs>tt|ƒj||||||| ƒ||_||_dS(N(R>RiRtauto_nowt auto_now_add( RR RkRlR R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRs( cCs/|js|jr|jƒStt|ƒjƒS(N(RkRltnowR>RiR)(R((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR)–s cCs<|dkrdSt|tjƒr&|Stt|ƒj|ƒS(N(RR'tdatetimetdateR>RiR(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR›s  cCs;|jr%t||j|jƒƒntt|ƒj|ƒS(N(RkR R RmR>RiR2(RR1((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR2¢s cCs tjjƒS(N(Rntutcnow(R((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRm§sN( R,R6RFRnR*R8RR9RR)RR2Rm(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRiˆs     t DatePropertyc Bs_eZejZdZdeeddedded„ Zd„Z d„Z d„Z d„Z RS(tDatec Cs>tt|ƒj||||||| ƒ||_||_dS(N(R>RqRRkRl( RR RkRlR R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR°s( cCs/|js|jr|jƒStt|ƒjƒS(N(RkRlRmR>RqR)(R((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR)¶s cCs`tt|ƒj|ƒ}|dkr(dSt||jƒs\td|jt|ƒfƒ‚ndS(Ns&Validation Error, expecting %s, got %s(R>RqRRR'R*R+R-(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR»s  cCsb|jr%t||j|jƒƒntt|ƒj|ƒ}t|tjƒr^|j ƒ}n|S(N( RkR R RmR>RqR2R'RnRo(RR1tval((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR2Âs  cCs tjjƒS(N(RnRottoday(R((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRmÊsN( R,R6RnRoR*R8RR9RR)RR2Rm(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRq«s     t TimePropertycBs>eZejZdZdddedded„Zd„Z RS(tTimecCs,tt|ƒj|||||||ƒdS(N(R>RuR(RR R R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRÒscCs`tt|ƒj|ƒ}|dkr(dSt||jƒs\td|jt|ƒfƒ‚ndS(Ns&Validation Error, expecting %s, got %s(R>RuRRR'R*R+R-(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRÖs  N( R,R6RnttimeR*R8RR9RR(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRuÎs  tReferencePropertyc BsneZeZdZdddddedded„ Zd„Zd„Z d„Z d„Z d„Z d„Z RS( t Referencec Cs>tt|ƒj||||||| ƒ||_||_dS(N(R>RxRtreference_classtcollection_name( RRzR{R R R R R RR((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRãs( cCsm|rit||jƒ}||jƒkr.|St|tjƒre|j|ƒ}t||j|ƒn|SdS(N( RRR)R'RR(RzR R (RRRR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRéscCsd|dk rK|j|ks<t|dƒrK|j|jkrKtdƒ‚ntt|ƒj||ƒS(s[Don't allow this object to be associated to itself This causes bad things to happenRIs(Can not associate an object with itself!N(RRIRR/R>RxR#(RRR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR#ös<cCsžtt|ƒj||ƒ|jdkrJd|jjƒ|jf|_nt|j |jƒrut d|jƒ‚nt |j |jt |||jƒƒdS(Ns %s_%s_setsduplicate property: %s( R>RxR&R{RR,tlowerR RRzR/R t_ReverseReferenceProperty(RR$R%((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR&ýs"cCs.|jdƒ}t|ƒdkr*t‚ndS(Nt-i(tsplitR:R/(RR!tt((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyt check_uuidscCsfyH|jƒ}|jjƒ}|j|ƒr1dStd||fƒ‚Wntd|ƒ‚nXdS(Ns%s not instance of %ss%s is not a Model(t get_lineageRzt startswithR+R/(RR!t obj_lineaget cls_lineage((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pytcheck_instance s cCs€|jr|j|ƒn|jrD|dkrDtd|jƒ‚n||jƒkrZdSt|tjƒs||j |ƒndS(Ns%s is a required property( R R RR/R R)R'RR(R†(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRs N(R,R6RR*R8RR9RRR#R&RR†R(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRxÞs   R}cBs/eZeZdZd„Zd„Zd„ZRS(tquerycCs1||_||_||_||_||_dS(N(t _ReverseReferenceProperty__modelt#_ReverseReferenceProperty__propertyR{R t item_type(RtmodeltpropR ((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR%s     cCsŠ|dk r‚t|jƒ}t|jtƒrhg}x"|jD]}|jd|ƒq=W|j||ƒS|j|jd|ƒSn|SdS(sBFetches collection of model instances of this collection property.s%s =s =N(RRRˆR'R‰tlisttappendtfilter(RR1R$R‡tpropsRŒ((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR,s cCstdƒ‚dS(s%Not possible to set a new collection.sVirtual property is read-onlyN(R/(RR1R!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR#:s(R,R6RR*R8RRR#(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR}!s   tCalculatedPropertyc BsPeZdddeddeeed„ Zd„Zd„Zd„Zd„Z RS(c Cs>tt|ƒj|||||||ƒ||_| |_dS(N(R>R‘Rtcalculated_typet use_method( RR R R R R RR’RR“((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRAs  cCsX|jƒ}|rTy+t||jƒ}|jr<|ƒ}nWqTtk rPqTXn|S(N(R)RRR“tAttributeError(RRRR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRIs   cCsdS(s!Not possible to set a new AutoID.N((RRR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR#TscCs#|jst||j|ƒndS(N(R“R R(RRR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyt _set_directXs cCs9|jtttgkr1|j||jƒ}|SdSdS(N(R’R7R`ReRt __class__R(RR1R!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR2\sN( R,R6RR9R`RRR#R•R2(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR‘?s    t ListPropertycBsJeZeZdZdddd„Zd„Zd„Zd„Z d„Z RS(tListcKsJ|dkrg}n||_tt|ƒj||d|dt|dS(NR R (RRŠR>R—RtTrue(RRŠR R R tkwds((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRis   cCsó|jr|j|ƒn|dk rCt|tƒsC|g}qCn|jtjkratj}n'|jtjkrtj}n |j}xd|D]\}t||ƒs|tjkrÉtd|j ƒ‚qëtd|j |jj fƒ‚qqW|S(Ns*Items in the %s list must all be integers.s-Items in the %s list must all be %s instances( R RR'RRŠRt integer_typesR(R/R R,(RR!RŠtitem((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyRos"       cCs |dkS(N(R(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR0†scCsttt|ƒjƒƒS(N(RR>R—R)(R((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR)‰scCsŽ|jtjkrtj}n'|jtjkr<tj}n |j}t||ƒr`|g}n|dkrug}ntt|ƒj||ƒS(s…Override the set method to allow them to set the property to an instance of the item_type instead of requiring a list to be passed inN( RŠRR›R(R'RR>R—R#(RRR!RŠ((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR#Œs      N( R,R6RR*R8RRRR0R)R#(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR—ds   t MapPropertycBsDeZeZdZedddd„Zd„Zd„Z d„Z RS(tMapcKsJ|dkri}n||_tt|ƒj||d|dt|dS(NR R (RRŠR>RRR™(RRŠR R R Rš((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR s   cCsùtt|ƒj|ƒ}|dk rEt|tƒsEtdƒ‚qEn|jtj krctj }n'|jtj krtj }n |j}xh|D]`}t|||ƒs‘|tj krÏtd|j ƒ‚qñtd|j |jj fƒ‚q‘q‘W|S(NsValue must of type dicts*Values in the %s Map must all be integers.s-Values in the %s Map must all be %s instances( R>RRRR'tdictR/RŠRR›R(R R,(RR!RŠR[((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR¦s       cCs |dkS(N(R(RR!((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR0¼scCsiS(N((R((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR)¿sN( R,R6RŸR*R8R7RRRR0R)(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyR›s   (#Rntboto.sdb.db.keyRt boto.utilsRtboto.sdb.db.queryRRNRt boto.s3.keytboto.sdb.db.blobRt boto.compatRRtobjectRR;R<R?RBRGRLR\RaRcRfRiRqRuRxR}R‘R—R(((sA/opt/freeware/lib/python2.7/site-packages/boto/sdb/db/property.pyts6    Q  [/ ##C%7