Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
3 \Õ.ã@sTdZddlZddlZddlZddlZddgZdZ e Z Gdd„dej ƒZ d d d„ZdS) a­A dumb and slow but simple dbm clone. For database spam, spam.dir contains the index (a text file), spam.bak *may* contain a backup of the index (also a text file), while spam.dat contains the data (a binary file). XXX TO DO: - seems to contain a bug when updating... - reclaim free space (currently, space once occupied by deleted or expanded items is never reused) - support concurrent access (currently, if two processes take turns making updates, they can mess up the index) - support efficient access to large databases (currently, the whole index is read when the database is opened, and some updates rewrite the whole index) - support opening for read-only (flag = 'm') éNÚerrorÚopenic@sÂeZdZeZeZd+dd„Zdd„Zdd„Zdd „ZeZ d d „Z d d „Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZeZd d!„Zd"d#„ZeZd$d%„Zd&d'„Zd(d)„Zd*S),Ú _DatabaseÚccCsJ||_|dk|_|d|_|d|_|d|_d|_|j|ƒ|jƒdS)NÚrz.dirz.datz.bak)Ú_modeÚ _readonlyÚ_dirfileÚ_datfileÚ_bakfileÚ_indexÚ_createÚ_update)ÚselfZ filebasenameÚmodeÚflag©rú/usr/lib64/python3.6/dumb.pyÚ__init__0s     z_Database.__init__cCsÈ|dkrFx<|j|j|jfD](}ytj|ƒWqtk r@YqXqWytj|jddd�}Wn^tk rº|d krŒddl}|j dt dd �tj|jd dd��}|j |jƒWdQRXYn X|j ƒdS) NÚnrzLatin-1)ÚencodingrrzIThe database file is missing, the semantics of the 'c' flag will be used.é)Ú stacklevelÚw)rr) r r r Ú_osÚremoveÚOSErrorÚ_iorÚwarningsÚwarnÚDeprecationWarningÚ_chmodÚclose)rrÚfilenameÚfrrrrr Is   z_Database._createcCsŽi|_ytj|jddd�}Wntk r:|j |_YnPXd|_|�>x6|D].}|jƒ}tj |ƒ\}}|j dƒ}||j|<qNWWdQRXdS)NrzLatin-1)rF) r rrr rrÚ _modifiedÚrstripÚ_astZ literal_evalÚencode)rr$ÚlineÚkeyÚpos_and_siz_pairrrrr_s  z_Database._updatecCsÎ|jdks|j rdSy|jj|jƒWntk r<YnXy|jj|j|jƒWntk rhYnX|jj |jddd��F}|j |jƒx2|jj ƒD]$\}}d|j dƒ|f}|j |ƒq˜WWdQRXdS)NrzLatin-1)rz%r, %r )r r%rÚunlinkr rÚrenamer rrr!ÚitemsÚdecodeÚwrite)rr$r*r+ÚentryrrrÚ_commitqs z_Database._commitcCs|jdkrtdƒ‚dS)Nz"DBM object has already been closed)r r)rrrrÚ _verify_openŒs z_Database._verify_openc Cs\t|tƒr|jdƒ}|jƒ|j|\}}tj|jdƒ�}|j|ƒ|j |ƒ}WdQRX|S)Nzutf-8Úrb) Ú isinstanceÚstrr(r3r rrr ÚseekÚread)rr*ÚposÚsizr$ZdatrrrÚ __getitem__�s   z_Database.__getitem__c Csrtj|jdƒ�R}|jddƒt|jƒƒ}|tdtt}|jd||ƒ|}|j|ƒWdQRX|t|ƒfS)Nzrb+rééó) rrr r7ÚintÚtellÚ _BLOCKSIZEr0Úlen)rÚvalr$r9ZnposrrrÚ_addvalžs  z_Database._addvalc Cs:tj|jdƒ�}|j|ƒ|j|ƒWdQRX|t|ƒfS)Nzrb+)rrr r7r0rB)rr9rCr$rrrÚ_setval¬s z_Database._setvalc CsP||j|<tj|jddd��*}|j|jƒ|jd|jdƒ|fƒWdQRXdS)NÚazLatin-1)rz%r, %r )r rrr r!r0r/)rr*r+r$rrrÚ_addkeyµs  z_Database._addkeycCs|jrddl}|jdtdd�t|tƒr4|jdƒ}nt|ttfƒsJt dƒ‚t|tƒr`|jdƒ}nt|ttfƒsvt dƒ‚|j ƒd|_ ||j kr¢|j ||j|ƒƒn^|j |\}}|td t}t|ƒtd t}||krð|j||ƒ|j |<n|j|ƒ|j |<dS) Nrz'The database is opened for reading onlyr<)rzutf-8zkeys must be bytes or stringszvalues must be bytes or stringsTr=)rrrr r5r6r(ÚbytesÚ bytearrayÚ TypeErrorr3r%r rGrDrArBrE)rr*rCrr9r:Z oldblocksZ newblocksrrrÚ __setitem__»s,      z_Database.__setitem__cCsT|jrddl}|jdtdd�t|tƒr2|jdƒ}|jƒd|_|j |=|j ƒdS)Nrz'The database is opened for reading onlyr<)rzutf-8T) rrrr r5r6r(r3r%r r2)rr*rrrrÚ __delitem__âs   z_Database.__delitem__c Cs.y t|jƒStk r(tdƒd‚YnXdS)Nz"DBM object has already been closed)Úlistr rJr)rrrrÚkeysós z_Database.keyscs ˆjƒ‡fdd„ˆjjƒDƒS)Ncsg|]}|ˆ|f‘qSrr)Ú.0r*)rrrú ûsz#_Database.items..)r3r rN)rr)rrr.ùsz_Database.itemsc CsPt|tƒr|jdƒ}y ||jkStk rJ|jdkrDtdƒd‚n‚YnXdS)Nzutf-8z"DBM object has already been closed)r5r6r(r rJr)rr*rrrÚ __contains__ýs     z_Database.__contains__c Cs.y t|jƒStk r(tdƒd‚YnXdS)Nz"DBM object has already been closed)Úiterr rJr)rrrrÚiterkeyss z_Database.iterkeysc Cs.y t|jƒStk r(tdƒd‚YnXdS)Nz"DBM object has already been closed)rBr rJr)rrrrÚ__len__s z_Database.__len__c Cs,z |jƒWdd|_|_|_|_XdS)N)r2r r r r )rrrrr"s z_Database.closecCs t|jdƒr|jj||jƒdS)NÚchmod)ÚhasattrrrUr)rÚfilerrrr!s z_Database._chmodcCs|S)Nr)rrrrÚ __enter__!sz_Database.__enter__cGs |jƒdS)N)r")rÚargsrrrÚ__exit__$sz_Database.__exit__N)r)Ú__name__Ú __module__Ú __qualname__rrrr rr2Úsyncr3r;rDrErGrKrLrNr.rQrSÚ__iter__rTr"Ú__del__r!rXrZrrrrr#s2   ' rré¶c Csfytjdƒ}tj|ƒWntk r,Yn X||@}|d krXddl}|jdtdd �t|||d �S) aEOpen the database file, filename, and return corresponding object. The flag argument, used to control how the database is opened in the other DBM implementations, supports only the semantics of 'c' and 'n' values. Other values will default to the semantics of 'c' value: the database will always opened for update and will be created if it does not exist. The optional mode argument is the UNIX mode of the file, used only when the database has to be created. It defaults to octal code 0o666 (and will be modified by the prevailing umask). rrrrrNz)Flag must be one of 'r', 'w', 'c', or 'n'r<)r)r)rrrr)rÚumaskÚAttributeErrorrrr r)rWrrZumrrrrr(s   )rra)Ú__doc__Zastr'ÚiorÚosrÚ collectionsÚ__all__rArrÚMutableMappingrrrrrrÚs