grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B ›$«jœæÝã@sRddlZddlZddlZddlZddgZdZ e Z Gdd„dej j ƒZd d d„ZdS) é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ÚccCsL||_|dk|_|d|_|d|_|d|_d|_| |¡| |¡dS)NÚrz.dirz.datz.bak)Ú_modeÚ _readonlyÚ_dirfileÚ_datfileÚ_bakfileÚ_indexÚ_createÚ_update)ÚselfZ filebasenameÚmodeÚflag©rú-/opt/alt/python37/lib64/python3.7/dbm/dumb.pyÚ__init__0s     z_Database.__init__c CsÈ|dkrFx<|j|j|jfD](}yt |¡Wqtk r@YqXqWytj|jddd�}Wn^tk rº|dkrŒddl}|j dt dd �tj|jd dd��}|  |j¡WdQRXYn X|  ¡dS) NÚnrzLatin-1)Úencoding)rrrzIThe database file is missing, the semantics of the 'c' flag will be used.é)Ú stacklevelÚw) r r r Ú_osÚremoveÚOSErrorÚ_iorÚwarningsÚwarnÚDeprecationWarningÚ_chmodÚclose)rrÚfilenameÚfrrrrr Is   z_Database._createc Cs®i|_ytj|jddd�}Wn>tk rZ|j |_|dkrVddl}|jdt dd�YnPXd |_|�>x6|D].}|  ¡}t   |¡\}}|  d¡}||j|<qnWWdQRXdS) NrzLatin-1)r)rrrzFThe index file is missing, the semantics of the 'c' flag will be used.r)rF)r rrr rrÚ _modifiedrrr ÚrstripÚ_astZ literal_evalÚencode)rrr$rÚlineÚkeyÚpos_and_siz_pairrrrr_s    z_Database._updatec CsÌ|jdks|jsdSy|j |j¡Wntk r:YnXy|j |j|j¡Wntk rfYnX|jj |jddd��F}|  |j¡x2|j  ¡D]$\}}d|  d¡|f}|  |¡q–WWdQRXdS)NrzLatin-1)rz%r, %r )r r%rÚunlinkr rÚrenamer rrr!ÚitemsÚdecodeÚwrite)rr$r*r+ÚentryrrrÚ_commitvs 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| d¡}| ¡|j|\}}t |jd¡�}| |¡|  |¡}WdQRX|S)Nzutf-8Úrb) Ú isinstanceÚstrr(r3r rrr ÚseekÚread)rr*ÚposÚsizr$ZdatrrrÚ __getitem__•s   z_Database.__getitem__c Csrt |jd¡�R}| dd¡t| ¡ƒ}|tdtt}| d||¡|}| |¡WdQRX|t|ƒfS)Nzrb+rééó) rrr r7ÚintÚtellÚ _BLOCKSIZEr0Úlen)rÚvalr$r9ZnposrrrÚ_addval£s  z_Database._addvalc Cs:t |jd¡�}| |¡| |¡WdQRX|t|ƒfS)Nzrb+)rrr r7r0rB)rr9rCr$rrrÚ_setval±s z_Database._setvalc CsP||j|<tj|jddd��*}| |j¡| d| d¡|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| d¡}nt|ttfƒsJt dƒ‚t|tƒr`| d¡}nt|ttfƒsvt dƒ‚|  ¡d|_ ||j kr¢|  || |¡¡n^|j |\}}|td t}t|ƒtd t}||krð| ||¡|j |<n| |¡|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| d¡}| ¡d|_|j |=|  ¡dS)Nrz'The database is opened for reading onlyr<)rzutf-8T) rrrr r5r6r(r3r%r r2)rr*rrrrÚ __delitem__çs   z_Database.__delitem__cCs.y t|jƒStk r(tdƒd‚YnXdS)Nz"DBM object has already been closed)Úlistr rJr)rrrrÚkeysøs z_Database.keyscs ˆ ¡‡fdd„ˆj ¡DƒS)Ncsg|]}|ˆ|f‘qSrr)Ú.0r*)rrrú sz#_Database.items..)r3r rN)rr)rrr.þsz_Database.itemscCsPt|tƒr| d¡}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__cCs.y t|jƒStk r(tdƒd‚YnXdS)Nz"DBM object has already been closed)Úiterr rJr)rrrrÚiterkeys s z_Database.iterkeyscCs.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 | ¡Wdd|_|_|_|_XdS)N)r2r r r r )rrrrr"s z_Database.closecCs t|jdƒr|j ||j¡dS)NÚchmod)ÚhasattrrrUr)rÚfilerrrr!"s z_Database._chmodcCs|S)Nr)rrrrÚ __enter__&sz_Database.__enter__cGs | ¡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é¶cCsfyt d¡}t |¡Wntk r,Yn X||@}|dkrXddl}|jdtdd�t|||d�S)Nr)rrrrz)Flag must be one of 'r', 'w', 'c', or 'n'r<)r)r)rÚumaskÚAttributeErrorrrr r)rWrrZumrrrrr-s   )rra)Zastr'ÚiorÚosrZcollections.abcÚ collectionsÚ__all__rArrÚabcÚMutableMappingrrrrrrÚs